handle font=0 in drawchar (dummy character passing)
[swftools.git] / lib / devices / render.c
index 1d6e80e..bb71bed 100644 (file)
 #include <memory.h>
 #include "../gfxdevice.h"
 #include "../gfxtools.h"
-#include "../png.h"
 #include "../mem.h"
-
-typedef unsigned int U32;
-typedef unsigned char U8;
+#define PNG_INLINE_EXPORTS
+#include "../types.h"
+#include "../png.c"
 
 typedef gfxcolor_t RGBA;
 
@@ -273,13 +272,13 @@ static void fill_line_solid(RGBA*line, U32*z, int y, int x1, int x2, RGBA col)
         col.r = (col.r*col.a)>>8;
         col.g = (col.g*col.a)>>8;
         col.b = (col.b*col.a)>>8;
-        col.a = 255;
         do {
            if(z[bitpos]&bit) {
                line[x].r = ((line[x].r*ainv)>>8)+col.r;
                line[x].g = ((line[x].g*ainv)>>8)+col.g;
                line[x].b = ((line[x].b*ainv)>>8)+col.b;
-               line[x].a = 255;
+               //line[x].a = 255;
+               line[x].a = ((line[x].a*ainv)>>8)+col.a;
            }
            bit <<= 1;
            if(!bit) {
@@ -649,6 +648,8 @@ void render_addfont(struct _gfxdevice*dev, gfxfont_t*font)
 void render_drawchar(struct _gfxdevice*dev, gfxfont_t*font, int glyphnr, gfxcolor_t*color, gfxmatrix_t*matrix)
 {
     internal_t*i = (internal_t*)dev->internal;
+    if(!font)
+       return;
 
     /* align characters to whole pixels */
     matrix->tx = (int)(matrix->tx * i->antialize) / i->antialize;