Project

General

Profile

colors_interpolations_2.txt

Sergey Ivanovskiy, 08/22/2015 03:55 PM

Download (4.8 KB)

 
1
=== modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/RawEncoder.java'
2
--- src/com/goldencode/p2j/ui/client/gui/driver/web/RawEncoder.java	2015-08-10 20:53:46 +0000
3
+++ src/com/goldencode/p2j/ui/client/gui/driver/web/RawEncoder.java	2015-08-22 19:36:14 +0000
4
@@ -78,6 +78,8 @@
5
             encodedRectangle[b++] = (byte) colorModel.getGreen(pixel);
6
             encodedRectangle[b++] = (byte) colorModel.getBlue(pixel);
7
             encodedRectangle[b++] = (byte) colorModel.getAlpha(pixel);
8
+//            System.err.println(colorModel.getRed(pixel) + ":" + colorModel.getGreen(pixel)
9
+//                     + ":" + colorModel.getBlue(pixel) + ":" + colorModel.getAlpha(pixel));
10
          }
11
       }
12
       else
13

    
14
=== modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/VirtualScreenImpl.java'
15
--- src/com/goldencode/p2j/ui/client/gui/driver/web/VirtualScreenImpl.java	2015-08-21 15:40:44 +0000
16
+++ src/com/goldencode/p2j/ui/client/gui/driver/web/VirtualScreenImpl.java	2015-08-22 19:12:47 +0000
17
@@ -64,7 +64,7 @@
18
    public VirtualScreenImpl(int width, int height)
19
    {
20
       this(new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, 0xFF, 0xFF00,
21
-               0xFF0000, 0xFF000000, true, DataBuffer.TYPE_INT), width, height);
22
+               0xFF0000, 0xFF000000, false, DataBuffer.TYPE_INT), width, height);
23
    }
24
 
25
    /**
26

    
27
=== modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js'
28
--- src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js	2015-08-22 11:48:56 +0000
29
+++ src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js	2015-08-22 19:28:35 +0000
30
@@ -294,7 +294,7 @@
31
             }
32
          }
33
       };
34
-   };
35
+   }
36
 
37
    /**
38
     * Register the specified coordinates for mouse support.
39
@@ -363,7 +363,7 @@
40
                break;
41
             }
42
          }
43
-      }
44
+      };
45
       
46
       // remove from the DOM
47
       this.parentNode.removeChild(this);
48
@@ -898,16 +898,14 @@
49
                this.drawRoundRect(ctx, x, y, width, height, diameter, this.rawColor, false);
50
                break;
51
             case ops.DRAW_IMAGE:
52
-               //console.debug("drawing type: " + message[idx]);
53
                x = p2j.socket.readInt32BinaryMessage(message, idx + 1);
54
                y = p2j.socket.readInt32BinaryMessage(message, idx + 5);
55
+
56
                width = p2j.socket.readInt32BinaryMessage(message, idx + 9);
57
                height = p2j.socket.readInt32BinaryMessage(message, idx + 13);
58
-               //console.debug(x + "x" + y + ", " + width + "x" + height);
59
+
60
                var encoding = message[idx + 17];
61
-               //console.debug("encoding type: " + encoding);
62
                var key = p2j.socket.readInt32BinaryMessage(message, idx + 18);
63
-               console.debug("hash: " + key);
64
                var pixelsInBytes = width * height * 4;
65
                var imgData;
66
                var imgDataOffset;
67
@@ -1503,28 +1501,28 @@
68
       var img = ctx.getImageData(this.origin.x + x, this.origin.y + y, width, height);
69
       var data = img.data;
70
       var pixelsInBytes = width * height * 4;
71
-      var j = imgDataOffset;
72
-      for (var i = 0; i < pixelsInBytes; i += 4, j += 4)
73
+      var offset = imgDataOffset;
74
+      for (var p = 0; p < pixelsInBytes; p += 4, offset += 4)
75
       {
76
-         var alpha = imgData[j + 3];
77
-         var gamma = (256 - alpha) * data[i + 3];
78
-         var beta = gamma >> 8;
79
+         var alpha = imgData[offset + 3];
80
+         var beta = 256 - alpha;
81
          if (alpha == 255)
82
          {
83
-            data[i]     = imgData[j];
84
-            data[i + 1] = imgData[j + 1];
85
-            data[i + 2] = imgData[j + 2];
86
-            data[i + 3] = imgData[j + 3];
87
+            /** server sends non-premultiplied image data */
88
+            data[p]     = imgData[offset];
89
+            data[p + 1] = imgData[offset + 1];
90
+            data[p + 2] = imgData[offset + 2];
91
+            data[p + 3] = imgData[offset + 3];
92
          }
93
          else if (alpha > 0)
94
          {
95
-            /** server sends premultiplied image data */
96
-            data[i]     = (imgData[j]     * alpha + data[i]     * beta) >> 8;
97
-            data[i + 1] = (imgData[j + 1] * alpha + data[i + 1] * beta) >> 8;
98
-            data[i + 2] = (imgData[j + 2] * alpha + data[i + 2] * beta) >> 8;
99
-            data[i + 3] = (imgData[j + 3] * alpha + gamma) >> 8;
100
-         }
101
-      }
102
+            /** server sends non-premultiplied image data */
103
+            data[p]     = (imgData[offset]     * alpha + data[p]     * beta) >> 8;
104
+            data[p + 1] = (imgData[offset + 1] * alpha + data[p + 1] * beta) >> 8;
105
+            data[p + 2] = (imgData[offset + 2] * alpha + data[p + 2] * beta) >> 8;
106
+            data[p + 3] = (imgData[offset + 3] * alpha + data[p + 3] * beta) >> 8;
107
+         };
108
+      };
109
       ctx.putImageData(img, this.origin.x + x, this.origin.y + y);
110
    };
111
    
112