fmtpixel.h: cleanups and performance improvements
authorH. Peter Anvin <hpa@zytor.com>
Wed, 13 Sep 2006 18:59:30 +0000 (11:59 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 13 Sep 2006 18:59:30 +0000 (11:59 -0700)
com32/lib/sys/vesa/fmtpixel.h

index 0f9d57e..1d9d552 100644 (file)
 /* Format a pixel and return the advanced pointer.
    THIS FUNCTION IS ALLOWED TO WRITE BEYOND THE END OF THE PIXEL. */
 
-static inline void *format_pixel(void *ptr, uint32_t rgba,
+static inline void *format_pixel(void *ptr, uint32_t bgra,
                                 enum vesa_pixel_format fmt)
 {
   switch (fmt) {
   case PXF_BGRA32:
-    *(uint32_t *)ptr = rgba;
-    return (uint32_t *)ptr + 1;
+    *(uint32_t *)ptr = bgra;
+    ptr = (uint32_t *)ptr + 1;
+    break;
 
   case PXF_BGR24:
-    *(uint32_t *)ptr = rgba;
-    return (uint8_t *)ptr + 3;
+    *(uint32_t *)ptr = bgra;
+    ptr = (uint8_t *)ptr + 3;
+    break;
     
   case PXF_LE_RGB16_565:
     {
       uint16_t pxv =
-       ((rgba >> 3) & 0x1f) |
-       ((rgba >> (2+8-5)) & (0x3f << 5)) |
-       ((rgba >> (3+16-11)) & (0x1f << 11));
+       ((bgra >> 3) & 0x1f) +
+       ((bgra >> (2+8-5)) & (0x3f << 5)) +
+       (bgra >> (3+16-11));
 
       *(uint16_t *)ptr = pxv;
-      return (uint16_t *)ptr + 1;
+      ptr = (uint16_t *)ptr + 1;
     }
+    break;
 
   case PXF_NONE:               /* Shuts up gcc */
-    return ptr;
+    break;
   }
+
+  return ptr;
 }
 
 #endif /* LIB_SYS_VESA_FMTPIXEL_H */