]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/planar.c
pbuf????
[16.git] / src / lib / planar.c
index 5541217fe4fa2ac2cc76f74caaf67dbd2b4e5a5c..4eda45155878659bbaf5ed57309013eb37fe6a09 100755 (executable)
    be destroyed with the planar_buf_free function when no longer\r
    needed.\r
  */\r
-planar_buf_t *\r
+planar_buf_t huge *\r
 planar_buf_from_bitmap(bitmap_t *b) {\r
        planar_buf_t *p;\r
        int plane, bi, pi, x, y;\r
+       word q;\r
 \r
        /* allocate the buffer */\r
        p = planar_buf_alloc(b->width, b->height);\r
@@ -59,12 +60,18 @@ planar_buf_from_bitmap(bitmap_t *b) {
        if(plane) pi++;\r
        }\r
 \r
+       p->palette = modexNewPal();\r
+       for(;q<PALSIZE;q++)\r
+       {\r
+               p->palette[q]=b->palette[q];\r
+       }\r
+\r
        return p;\r
 }\r
 \r
 \r
 /* allocates a planar buffer with specified dimensions */\r
-planar_buf_t *\r
+planar_buf_t huge *\r
 planar_buf_alloc(word width, word height) {\r
        planar_buf_t *p;\r
        int i;\r
@@ -97,3 +104,41 @@ planar_buf_free(planar_buf_t *p) {
        /* free the structure */\r
        free(p);\r
 }\r
+\r
+/*     non pointer version     */\r
+planar_buf_t planar_buf_from_bitmap0(bitmap_t *b) {\r
+       planar_buf_t p;\r
+       int plane, bi, pi, x, y;\r
+       word q=0;\r
+\r
+       /* allocate the buffer */\r
+       p = *planar_buf_alloc(b->width, b->height);\r
+\r
+       /* copy the bitmap data into the planar format */\r
+       bi=0;\r
+       pi=0;\r
+       for(y=0; y < b->height; y++) {\r
+       /* start on the first plane */\r
+       plane=0;\r
+       for(x=0; x < b->width; x++) {\r
+               /* copy to each plane */\r
+               p.plane[plane++][pi]=b->data[bi++];\r
+\r
+               /* handle the completion of 4 planes. */\r
+               if(plane==4) {\r
+                       plane=0;\r
+                       pi++;\r
+               }\r
+       }\r
+\r
+       /* correct for images not divisible by 4 */\r
+       if(plane) pi++;\r
+       }\r
+       p.palette = modexNewPal();\r
+       for(;q<PALSIZE;q++)\r
+       {\r
+               p.palette[q]=b->palette[q];\r
+       }\r
+\r
+       return p;\r
+}\r