/[rdesktop]/sourceforge.net/trunk/rdesktop/xwin.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/xwin.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 708 by jsorg71, Fri Jun 4 15:01:36 2004 UTC revision 709 by jsorg71, Fri Jun 11 22:37:05 2004 UTC
# Line 230  translate_colour(uint32 colour) Line 230  translate_colour(uint32 colour)
230          return make_colour(pc);          return make_colour(pc);
231  }  }
232    
233    /* indent is confused by UNROLL8 */
234    /* *INDENT-OFF* */
235    
236    /* repeat and unroll, similar to bitmap.c */
237    /* potentialy any of the following translate */
238    /* functions can use repeat but just doing */
239    /* the most common ones */
240    
241  #define UNROLL8(stm) { stm stm stm stm stm stm stm stm }  #define UNROLL8(stm) { stm stm stm stm stm stm stm stm }
242  #define REPEAT(stm) \  /* 2 byte output repeat */
243    #define REPEAT2(stm) \
244    { \
245            while (out <= end - 8 * 2) \
246                    UNROLL8(stm) \
247            while (out < end) \
248                    { stm } \
249    }
250    /* 4 byte output repeat */
251    #define REPEAT4(stm) \
252  { \  { \
253          while (out <= end - 8 * 4) \          while (out <= end - 8 * 4) \
254                  UNROLL8(stm) \                  UNROLL8(stm) \
# Line 252  translate8to16(uint8 * data, uint8 * out Line 269  translate8to16(uint8 * data, uint8 * out
269          uint16 value;          uint16 value;
270    
271          if (g_arch_match)          if (g_arch_match)
                 REPEAT(*((uint16 *) out) = g_colmap[*(data++)];  
                        out += 2;)  
         else  
 if (g_xserver_be)  
 {  
         while (out < end)  
272          {          {
273                  value = (uint16) g_colmap[*(data++)];                  REPEAT2
274                  *(out++) = value >> 8;                  (
275                  *(out++) = value;                          *((uint16 *) out) = g_colmap[*(data++)];
276                            out += 2;
277                    )
278          }          }
279  }          else if (g_xserver_be)
 else  
 {  
         while (out < end)  
280          {          {
281                  value = (uint16) g_colmap[*(data++)];                  while (out < end)
282                  *(out++) = value;                  {
283                  *(out++) = value >> 8;                          value = (uint16) g_colmap[*(data++)];
284                            *(out++) = value >> 8;
285                            *(out++) = value;
286                    }
287            }
288            else
289            {
290                    while (out < end)
291                    {
292                            value = (uint16) g_colmap[*(data++)];
293                            *(out++) = value;
294                            *(out++) = value >> 8;
295                    }
296          }          }
 }  
297  }  }
298    
299  /* little endian - conversion happens when colourmap is built */  /* little endian - conversion happens when colourmap is built */
# Line 309  translate8to32(uint8 * data, uint8 * out Line 330  translate8to32(uint8 * data, uint8 * out
330          uint32 value;          uint32 value;
331    
332          if (g_arch_match)          if (g_arch_match)
                 REPEAT(*((uint32 *) out) = g_colmap[*(data++)];  
                        out += 4;)  
         else  
 if (g_xserver_be)  
 {  
         while (out < end)  
333          {          {
334                  value = g_colmap[*(data++)];                  REPEAT4
335                  *(out++) = value >> 24;                  (
336                  *(out++) = value >> 16;                          *((uint32 *) out) = g_colmap[*(data++)];
337                  *(out++) = value >> 8;                          out += 4;
338                  *(out++) = value;                  )
339          }          }
340  }          else if (g_xserver_be)
341  else          {
342  {                  while (out < end)
343          while (out < end)                  {
344                            value = g_colmap[*(data++)];
345                            *(out++) = value >> 24;
346                            *(out++) = value >> 16;
347                            *(out++) = value >> 8;
348                            *(out++) = value;
349                    }
350            }
351            else
352          {          {
353                  value = g_colmap[*(data++)];                  while (out < end)
354                  *(out++) = value;                  {
355                  *(out++) = value >> 8;                          value = g_colmap[*(data++)];
356                  *(out++) = value >> 16;                          *(out++) = value;
357                  *(out++) = value >> 24;                          *(out++) = value >> 8;
358                            *(out++) = value >> 16;
359                            *(out++) = value >> 24;
360                    }
361          }          }
362  }  }
363  }  
364    /* *INDENT-ON* */
365    
366  static void  static void
367  translate15to16(uint16 * data, uint8 * out, uint8 * end)  translate15to16(uint16 * data, uint8 * out, uint8 * end)

Legend:
Removed from v.708  
changed lines
  Added in v.709

  ViewVC Help
Powered by ViewVC 1.1.26