blog
history
projects

profiles
about
hortont · blog · summer of code

Pretty Cool Evas Update, Part 1

2008.07.03 in summer of code

Hey! I hacked up the Evas_Quartz test program to push out frames as files, so I have smooth video to show you! It's incomplete, but it's mostly here. It may not play back well for y'all, depending on your machine (it's running at 50fps because that made the math easy, etc.), but check it out!

There's still some tests broken near the end; there's still lots of work to do...

I'll post a patch tomorrow, with details. First I have to get it to patch CVS HEAD!

Friday the 13th Evas_Quartz Update

2008.06.14 in summer of code

The past few days have been very productive! I've implemented images and fixed up the text code a little bit (more importantly, I found documentation on things that'll let me make it work correctly, in a few days). There's screenshots and notes for all, after the jump!

Note: This is Evas_Quartz, not to be confused with Evas_GL_Quartz. This is the meat of the project.



The intro part of the test is looking nice! One thing that's missing is adjustable opacity on the images. I'll get there, and I think I see exactly what needs to happen in order for that to happen! That means that the logo doesn't fade in/out...



The most obvious thing missing here is clipping! One of my next puzzles is to work out how clipping works in CoreGraphics — I think I've used it maybe once before, so it can't be too hard! Also... you only get reasonable performance here if you turn image smoothing off. Well... it's not unreasonable with smoothing on, it's just a slight bit imperfect. I have an issue in that Quartz wants to know if an image is going to want to be smoothed when it loads, but to Evas, that information is only relevant when you're drawing. I haven't figured out how to modify it at draw time, so right now smoothing is off everywhere...



Test 1 works really well. Also, all of the informative text seems to draw. The biggest text issue right now is everything is drawn in Bitstream Vera Sans. This was because, up until today, I didn't know how Apple's whole font system interacted with itself. I wasn't sure how to load a font from a file, activate it, and use it — then I found this! So one of these days, I'll get around to that, and fonts will work properly!

Test 2 is bizarrely glitchy. Something about drawing 0-width images, though fixing that doesn't actually fix the problem... I have to look into this!



Ha! Quality! Right! So — this is where the whole not-smoothing thing comes into play. FIXME! But the zooming is nice and smooth...



Lines draw, but apparently not in color! I must have set fill instead of stroke. Whoops! This'll be all better tomorrow!



Even polygons draw now! I was somewhat surprised to find that Evas had its own linked list implementation — I guess I assumed that would be somewhere higher up the chain (though there's not much higher up the EFL chain than Evas...) — but it's proved very useful so far!

While I may be getting ahead of myself, and I've certainly got a large number of roadblocks ahead, I'd say that this is going pretty well! I can't wait to see it all working. So. Cool!

A New Baby, Rectangles, and Ma Bell

2008.06.04 in code, personal, photography, and summer of code

Of note: the three title characters are not related in any way, except they were all a part of my day yesterday!

Firstly, and most-excitingly, thanks to Google, and mom, and dad, I purchased a Nikon D80 today! I simply cannot wait until it gets here... I've managed to read literally hundreds of pages of reviews and such and I'm very excited and happy and can't wait to see what it can do. Soooooooo excited — can'tcha tell?! The D80 replaces the Nikon Coolpix 8700 (don't immediately shrug it off because it's a Coolpix — for a point 'n shoot, that camera is astounding!) that Aunt Vivian graciously handed down to me a few years ago (first picture I still have appears to be from May 6, 2006, so pretty much exactly 2 years). That day was unbelievably important to me, because — before that, I'd never had a usable camera of my own (Kodak PalmPix for the IIIxe does not count!), and I'd just been handed something that would stay more or less attached to my hip for the next two years, recording countless memories (really, my memory is somewhat sketchy, so the pictures from this camera provide a great deal of my memory for me!) — almost 4000 pictures that I kept, in the end! (probably 10x that in total, because I use burst mode a lot!) So, while I most certainly have to thank Vivian for it, I'd say that it and I had an excellent run, especially through APAD'07 and all! This (outside a nursing home in Waterloo, ON, Canada) is probably the picture from this camera that gets the most 'wow's, but if I had to pick a favorite, I'd come back with about 150 pictures!

Second thing! I've got a much more stable, git-based workflow for working on Evas now, and I've even gotten the framework of the Evas-Quartz (without GL) engine sitting there! This is where the bulk of the summer's work goes, so I'm glad to have sat down and gotten that worked out. In addition, rectangles, polygons, and lines draw and animate properly! It was really awesome the first time I got the rectangles to draw, despite the fact that moments later they were animating over top of the window decorations... Text is working, to some extent, but I'm currently using an unacceptable text API (the built-in CoreGraphics one) which is so underpowered that it doesn't even support Unicode. I've got to move to ATSUI, but that involves reading lots of documentation and learning things I've never had to deal with before. I suppose that's sort-of the point of this, though, no? That might be tomorrow's job, since I know I'm not going to get much work done whichever day my new camera comes! EDIT: apparently there's a new CoreText API in Leopard. I think I'll use that instead!

The last bit — the Ma Bell bit — is that either AT&T recently added, or I recently noticed, the ability to download your call data in CSV (per-month). This meant I could clean up my call data grapher quite well (no more screen scraping means it actually works now — they broke it in January!)... so here y'all go. Figure it out on your own! My graph is below the jump!

Initial evas-gl-quartz Patch!

2008.05.31 in summer of code

I'm throwing this up here just for fun... it doesn't work entirely, but the general gist of things works. I feel much more comfortable with the Evas source code now than I did at the beginning of the week, but this is really just a start (considering this really isn't related at all to my final project).

Also, unless you, yourself, put the test app in an application bundle, moving and focusing the window won't work. I'll make that automatic sometime soon...

A patch!

Evas-OpenGL-Quartz Status Report

2008.05.29 in summer of code

I've gotten quite a bit further along with my first deliverable, the evas-gl-quartz port (using Carbon). Focus works now (though it needs to be wrapped in an application bundle — apparently this is a requirement). Keyboard input works, text drawing works (I'd accidentally commented out a bit too much!), the code is much cleaner. I haven't done mouse input yet. Things I've learned:

All this code (keyboard input, bundle making, mouse input, etc.) goes in Ecore. The test program (e17/libs/test/orig/evas/) doesn't use Ecore, because it's just an Evas test, so I've had to write all of that code directly into the test program. I've been doing that, because it will make writing Ecore_Carbon and/or Ecore_Cocoa (I still haven't exactly determined what's up here, nor talked to the people I need to talk to to get this working) much easier!

Performance is great! Just as smooth (which is, to say, perfect) as the OpenGL-X11 port, though the complete smoothness isn't apparent in the video.

OpenGL Success!

2008.05.25 in code and summer of code

YAY! Here's EVAS drawing to OpenGL-on-Quartz!

I have some issues...

1) I can't drag/resize/focus the window. At all. I don't know why.

2) I'm currently using Carbon to create the window. That's kind of awkward because of the semi-deprecated state of Carbon in Leopard... that would prevent us from ever having a 64-bit Evas-on-OS-X application. I would like to use Cocoa, of course. For one, that would greatly reduce the amount of code required; secondly, it would probably fix #1 without any fuss; thirdly, it would fix the 64-bit problem, and be much more forward-compatible. However, I really can't fight with Autotools any more today, so I won't be getting Objective-C into the mix today, so... no Cocoa! Perhaps tomorrow. Or next week. Or something!

3) No input. This might be because I can't give it focus, but I think the fact that I don't handle input is also why I can't focus the window. Catch-22!

Welcome!

2008.05.12 in personal, school, and summer of code

Looking around at the things we're supposed to do in preparation for the start of Google's Summer of Code, I found that we have a GSoC planet; this, of course, meant it was time for me to set up a blog! I imagine I'm going to end up using this for lots of random stuff besides GSoC, but that's the inspiration for getting over the initial hurdle of getting Wordpress installed on my painfully questionably-supported PowerMac G4 desktop running Debian (my 'server').

So — in short — if you're here, you either know me from school, GSoC, or you're family, most likely. A quick introduction — I'm in my freshman/sophomore summer; I go to college at RPI, mostly in CS and Physics (though we'll see how much physics actually gets done...). My Summer of Code project involves porting the Enlightenment Project's Evas library (and bits and pieces of other libraries) to Mac OS X, so that applications built on top of the EFL platform will run natively on OS X. That's the plan, anyway! We'll see how it goes, but no matter what it's going to be lots of fun!