diff Texture.cpp @ 2127:400f3db2e4e5

Screenshot continue
author Ritor1
date Fri, 27 Dec 2013 17:52:31 +0600
parents 259df09dfb50
children 23dbcaa651cc
line wrap: on
line diff
--- a/Texture.cpp	Thu Dec 26 22:58:54 2013 +0000
+++ b/Texture.cpp	Fri Dec 27 17:52:31 2013 +0600
@@ -690,7 +690,8 @@
   unsigned int num_g_bits = 6;
   unsigned int b_mask = 0x001F;
   unsigned int num_b_bits = 5;
- 
+  //При сохранении изображения подряд идущие пиксели одинакового цвета объединяются и вместо указания цвета для каждого пикселя
+  //указывается цвет группы пикселей и их количество.
  read_offset = 128;
  if (psx_head2.planes != 3)
  	  return 0;
@@ -709,25 +710,23 @@
      {
       test_byte = pPcx[read_offset];
       ++read_offset;
-      if ((test_byte & 0xC0) == 0xC0)
+      if ((test_byte & 0xC0) == 0xC0)//имеется ли объединение
       {	
 	    value = pPcx[read_offset];
        	++read_offset; 
       
        if ((test_byte & 0x3F) > 0)
        {
-        count = test_byte & 0x3F;
+        count = test_byte & 0x3F;//количество одинаковых пикселей
         do
         {
-
          ++row_position;
           //*temp_dec_position =0xFF000000;
-		  //*temp_dec_position|=(unsigned long)value<<16;
+          //*temp_dec_position|=(unsigned long)value<<16;
          *temp_dec_position |= r_mask & ((unsigned __int8)value << (num_g_bits + num_r_bits + num_b_bits - 8));
-
-		   temp_dec_position++;
-       if (row_position == psx_head2.pitch)
-			 break;
+         temp_dec_position++;
+         if (row_position == psx_head2.pitch)
+           break;
         }
         while (count-- != 1);
        }