atom feed18 messages in[android-developers] Re: scalable vec...
FromSent OnAttachments
stefoidJul 4, 2008 4:22 am 
RetoJul 4, 2008 5:45 am 
JBQJul 4, 2008 7:54 am 
stefoidJul 4, 2008 3:08 pm 
Romain GuyJul 4, 2008 5:30 pm 
stefoidJul 4, 2008 9:06 pm 
NumB...@gmail.comJul 5, 2008 5:21 pm 
stefoidJul 8, 2008 12:04 am 
hackbodJul 8, 2008 4:00 am 
jJul 8, 2008 8:30 am 
stefoidJul 8, 2008 3:37 pm 
Romain GuyJul 8, 2008 3:41 pm 
stefoidJul 8, 2008 11:12 pm 
Romain GuyJul 8, 2008 11:19 pm 
hackbodJul 9, 2008 12:51 am 
stefoidJul 11, 2008 2:33 pm 
DigitJul 11, 2008 6:37 pm 
stefoidJul 23, 2008 3:04 pm 
Subject:[android-developers] Re: scalable vector graphics scalable vector graphics scalable vector graphics
From:hackbod (
Date:Jul 8, 2008 4:00:54 am

On Jul 8, 12:04 am, stefoid <> wrote:

'phones'?  hmmm.  ok, lets use the term 'phone'.  When did 'phone' hardware stop improving? "640K should be enough for anyone..."

6 years ago at a previous company the reference hardware we were developing a phone platform for was a 200MHz ARM with 32-64MB of RAM.

Today the reference hardware for the Android platform is a 200-400MHz ARM with 64-128MB of RAM. And that target is still on the higher end of phone hardware.

The phone market is different than the PC market. That's just a fact of life. There are many other factors that come into play in hardware design, which are often more important than raw performance: price, size, battery life, etc.

That said, the "640K should be enough for anyone" line is pretty extreme hyperbole, as is most of this drama over scalable graphics. Not having scalable graphics everywhere is not going to kill the platform. In fact, the original article you quoted was really over- blown:

- Comparing Android to X-Windows and the Athena toolkit is ridiculous. The Android compositing engine is actually much more like MacOS X than X-Windows, supporting full 3d hardware acceleration of window compositing and transformation. The 2d rendering engine is a path-based with full anti-aliasing and alpha blending support, far beyond what X-Windows of that time supported.

- The comment about the iPhone UI screaming vectors is questionable. I don't know that much about the iPhone architecture, but to me it screams 3d hardware acceleration being used to perform compositing and transformation of bitmap textures, which is in fact how OSX has always done its fancy animation and other UI tricks. There is a good reason for this: pretty much any graphics acceleration hardware you find these days is going to be really, really good at compositing and transforming bitmap textures, and really not so good at the 2d path- based rendering used for scalable graphics.

- The quality of the iPhone UI vs. Android has nothing, zero, nada to do with scalable graphics. All of the iPhone software is running on a single device with a single density, so scalable graphics gain you very little. They are helpful for things like web browsers were you want to zoom in and out of the page, and oh hey both platforms are using WebKit and the HTML DOM as a scalable representation on top of a path-based 2d engine. But for animations using scaling and other transformations, the best way to get those to run smoothly is by doing them on bitmaps. One of the things that makes the iPhone feel slick is that a lot of work was done to have those animations run at 60fps, and that means everything going on there is the 3d hardware performing rendering of bitmap textures.

- The Android platform does incorporate screen density information at the view layout level, where you can specify coordinates in a variety of units (raw pixels, real inches or points on the screen, abstract rounded "density pixel" units, or user-controlled "font scaled" units). As such, if you say in your layout (or drawable graphics description) that you want a line or spacing of 1 density pixel, that will be converted for you to 1 pixel or 2 pixels or however many pixels on the screen is appropriate for the actual density.

- Apple's UI design has a certain design aesthetic of "lots of anti- aliasing to more accurately represent the position of lines being drawn at the expense of blurrier pixels," driven in part by the coordinate system not being pixel-based. There are certainly many people who like it, but there are also many people who like rendering that does hinting and aligning of figures to reduce the impact of anti- aliasing. I think it's pretty extreme to promote one approach or the other as being the one true way. For Android, we have made the decision to use some hinting in our font rendering for crisper text, and likewise density adjustment happens at the view layout level and then the raw 2d rendering operates on pixels on the screen so that it can round coordinates to pixel boundaries as desired.

create an application, it has to be prepared to run on all processor speeds, all screen sizes, etc.

this is your assumption (as an application developer?)  As a handset manufacturer, your viewpoint is different.  You want to produce something with specific capabilities.  If Android cant cater to your needs, then you choose something that can.  Lost market share for android.

Actually, from what I can see, what handset manufacturers want is:

(1) As high a density of screen as possible (since this is a big marketing bullet in comparison to other phones). (2) As slow a CPU as possible (since this saves money and power and is much harder for people to understand as marketing bullet). (3) Oh and we'll throw in a basic 3d hardware accelerator for you (since that can create some snazzy marketing demos).

In such an environment, a bitmap/raster-based UI is going to be far superior to one based on scalable graphics, because you basically have to use the 3d hardware to do any smooth rendering to the screen (the CPU just isn't sufficient), and that thing isn't going to be able to efficiently render path-based graphics.