Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/engines/software_x11


Modified Files:
        evas_engine.h evas_outbuf.c evas_x_buffer.c 


Log Message:


fix bit order for ppc - cleanly.

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/software_x11/evas_engine.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- evas_engine.h       22 May 2005 02:49:49 -0000      1.5
+++ evas_engine.h       26 Aug 2005 04:16:57 -0000      1.6
@@ -41,16 +41,17 @@
    struct {
       Convert_Pal *pal;
       struct {
-        Display  *disp;
-        Window    win;
-        Pixmap    mask;
-        Visual   *vis;
-        Colormap  cmap;
-        int       depth;
-        int       shm;
-        GC        gc;
-        GC        gcm;
-        int       swap : 1;
+        Display       *disp;
+        Window         win;
+        Pixmap         mask;
+        Visual        *vis;
+        Colormap       cmap;
+        int            depth;
+        int            shm;
+        GC             gc;
+        GC             gcm;
+        unsigned char  swap : 1;
+        unsigned char  bit_swap : 1;
       } x;
       struct {
         DATA32    r, g, b;
@@ -112,7 +113,7 @@
 /****/
 void             evas_software_x11_x_init                        (void);
 
-void             evas_software_x11_x_write_mask_line             
(X_Output_Buffer *xob, DATA32 *src, int w, int y);
+void             evas_software_x11_x_write_mask_line             (Outbuf *buf, 
X_Output_Buffer *xob, DATA32 *src, int w, int y);
 int              evas_software_x11_x_can_do_shm                  (Display *d);
 X_Output_Buffer *evas_software_x11_x_output_buffer_new           (Display *d, 
Visual *v, int depth, int w, int h, int try_shm, void *data);
 void             evas_software_x11_x_output_buffer_free          
(X_Output_Buffer *xob, int sync);
@@ -120,6 +121,7 @@
 DATA8           *evas_software_x11_x_output_buffer_data          
(X_Output_Buffer *xob, int *bytes_per_line_ret);
 int              evas_software_x11_x_output_buffer_depth         
(X_Output_Buffer *xob);
 int              evas_software_x11_x_output_buffer_byte_order    
(X_Output_Buffer *xob);
+int              evas_software_x11_x_output_buffer_bit_order     
(X_Output_Buffer *xob);
 
 void             evas_software_x11_x_color_init                  (void);
 Convert_Pal     *evas_software_x11_x_color_allocate              (Display 
*disp, Colormap cmap, Visual *vis, Convert_Pal_Mode colors);
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/software_x11/evas_outbuf.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- evas_outbuf.c       22 May 2005 03:02:15 -0000      1.7
+++ evas_outbuf.c       26 Aug 2005 04:16:57 -0000      1.8
@@ -72,9 +72,13 @@
 #ifdef WORDS_BIGENDIAN
           if (evas_software_x11_x_output_buffer_byte_order(xob) == LSBFirst)
             buf->priv.x.swap = 1;
+          if (evas_software_x11_x_output_buffer_bit_order(xob) == MSBFirst)
+            buf->priv.x.bit_swap = 1;
 #else
           if (evas_software_x11_x_output_buffer_byte_order(xob) == MSBFirst)
             buf->priv.x.swap = 1;
+          if (evas_software_x11_x_output_buffer_bit_order(xob) == MSBFirst)
+            buf->priv.x.bit_swap = 1;
 #endif
           if ((vis->class == TrueColor) || (vis->class == DirectColor))
             {
@@ -446,7 +450,7 @@
    if (obr->mxob)
      {
        for (yy = 0; yy < obr->h; yy++)
-         evas_software_x11_x_write_mask_line(obr->mxob,
+         evas_software_x11_x_write_mask_line(buf, obr->mxob,
                                              src_data +
                                              (yy * obr->w), obr->w, yy);
      }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/software_x11/evas_x_buffer.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- evas_x_buffer.c     22 May 2005 02:49:49 -0000      1.4
+++ evas_x_buffer.c     26 Aug 2005 04:16:57 -0000      1.5
@@ -4,7 +4,7 @@
 static int _x_err = 0;
 
 void
-evas_software_x11_x_write_mask_line(X_Output_Buffer *xob, DATA32 *src, int w, 
int y)
+evas_software_x11_x_write_mask_line(Outbuf *buf, X_Output_Buffer *xob, DATA32 
*src, int w, int y)
 {
    int x;
    DATA32 *src_ptr;
@@ -14,19 +14,39 @@
    src_ptr = src;
    dst_ptr = evas_software_x11_x_output_buffer_data(xob, &bpl);
    dst_ptr = dst_ptr + (bpl * y);
-   for (x = 0; x < w; x += 8)
+   if (buf->priv.x.bit_swap)
      {
-       *dst_ptr =
-         ((A_VAL(&(src_ptr[0])) >> 7) << 0) |
-         ((A_VAL(&(src_ptr[1])) >> 7) << 1) |
-         ((A_VAL(&(src_ptr[2])) >> 7) << 2) |
-         ((A_VAL(&(src_ptr[3])) >> 7) << 3) |
-         ((A_VAL(&(src_ptr[4])) >> 7) << 4) |
-         ((A_VAL(&(src_ptr[5])) >> 7) << 5) |
-         ((A_VAL(&(src_ptr[6])) >> 7) << 6) |
-         ((A_VAL(&(src_ptr[7])) >> 7) << 7);
-       src_ptr += 8;
-       dst_ptr++;
+       for (x = 0; x < w; x += 8)
+         {
+            *dst_ptr =
+              ((A_VAL(&(src_ptr[0])) >> 7) << 7) |
+              ((A_VAL(&(src_ptr[1])) >> 7) << 6) |
+              ((A_VAL(&(src_ptr[2])) >> 7) << 5) |
+              ((A_VAL(&(src_ptr[3])) >> 7) << 4) |
+              ((A_VAL(&(src_ptr[4])) >> 7) << 3) |
+              ((A_VAL(&(src_ptr[5])) >> 7) << 2) |
+              ((A_VAL(&(src_ptr[6])) >> 7) << 1) |
+              ((A_VAL(&(src_ptr[7])) >> 7) << 0);
+            src_ptr += 8;
+            dst_ptr++;
+         }
+     }
+   else
+     {
+       for (x = 0; x < w; x += 8)
+         {
+            *dst_ptr =
+              ((A_VAL(&(src_ptr[0])) >> 7) << 0) |
+              ((A_VAL(&(src_ptr[1])) >> 7) << 1) |
+              ((A_VAL(&(src_ptr[2])) >> 7) << 2) |
+              ((A_VAL(&(src_ptr[3])) >> 7) << 3) |
+              ((A_VAL(&(src_ptr[4])) >> 7) << 4) |
+              ((A_VAL(&(src_ptr[5])) >> 7) << 5) |
+              ((A_VAL(&(src_ptr[6])) >> 7) << 6) |
+              ((A_VAL(&(src_ptr[7])) >> 7) << 7);
+            src_ptr += 8;
+            dst_ptr++;
+         }
      }
    for (; x < w; x ++)
      {
@@ -192,3 +212,9 @@
 {
    return xob->xim->byte_order;
 }
+
+int
+evas_software_x11_x_output_buffer_bit_order(X_Output_Buffer *xob)
+{
+   return xob->xim->bitmap_bit_order;
+}




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to