Lines 77-83
public class SnippetDrawAlphaTwoPass {
Link Here
|
77 |
ImageData imageMaskData = null; |
77 |
ImageData imageMaskData = null; |
78 |
|
78 |
|
79 |
if (imageData.getTransparencyType() == SWT.TRANSPARENCY_ALPHA) { |
79 |
if (imageData.getTransparencyType() == SWT.TRANSPARENCY_ALPHA) { |
80 |
imageMaskData = new ImageData(width, height, 8, ALPHA_PALETTE, imageData.scanlinePad, imageData.alphaData); |
80 |
imageMaskData = new ImageData(width, height, 8, ALPHA_PALETTE, 1, imageData.alphaData); |
81 |
} else if (imageData.getTransparencyType() == SWT.TRANSPARENCY_PIXEL || imageData.getTransparencyType() == SWT.TRANSPARENCY_MASK) { |
81 |
} else if (imageData.getTransparencyType() == SWT.TRANSPARENCY_PIXEL || imageData.getTransparencyType() == SWT.TRANSPARENCY_MASK) { |
82 |
ImageData transparencyMaskData = imageData.getTransparencyMask(); |
82 |
ImageData transparencyMaskData = imageData.getTransparencyMask(); |
83 |
imageMaskData = new ImageData(width, height, 1, BW_PALETTE, transparencyMaskData.scanlinePad, transparencyMaskData.data); |
83 |
imageMaskData = new ImageData(width, height, 1, BW_PALETTE, transparencyMaskData.scanlinePad, transparencyMaskData.data); |
Lines 127-133
public class SnippetDrawAlphaTwoPass {
Link Here
|
127 |
scaledResult.maskPad = scaledResultMaskData.scanlinePad; |
127 |
scaledResult.maskPad = scaledResultMaskData.scanlinePad; |
128 |
scaledResult.maskData = scaledResultMaskData.data; |
128 |
scaledResult.maskData = scaledResultMaskData.data; |
129 |
} else { |
129 |
} else { |
130 |
scaledResult.alphaData = scaledResultMaskData.data; |
130 |
byte[] alphaData = scaledResultMaskData.data; |
|
|
131 |
if (scaledResultMaskData.scanlinePad != 1) { |
132 |
alphaData = convertPad(scaledResultMaskData.data, scaledResultMaskData.width, scaledResultMaskData.height, scaledResultMaskData.depth, scaledResultMaskData.scanlinePad, 1); |
133 |
} |
134 |
scaledResult.alphaData = alphaData; |
131 |
} |
135 |
} |
132 |
} |
136 |
} |
133 |
|
137 |
|
Lines 135-138
public class SnippetDrawAlphaTwoPass {
Link Here
|
135 |
resultMask.dispose(); |
139 |
resultMask.dispose(); |
136 |
return scaledResult; |
140 |
return scaledResult; |
137 |
} |
141 |
} |
|
|
142 |
|
143 |
/* copied from ImageData.convertPad as it is not accessible outside the org.eclipse.swt package */ |
144 |
private static byte[] convertPad(byte[] data, int width, int height, int depth, int pad, int newPad) { |
145 |
if (pad == newPad) return data; |
146 |
int stride = (width * depth + 7) / 8; |
147 |
int bpl = (stride + (pad - 1)) / pad * pad; |
148 |
int newBpl = (stride + (newPad - 1)) / newPad * newPad; |
149 |
byte[] newData = new byte[height * newBpl]; |
150 |
int srcIndex = 0, destIndex = 0; |
151 |
for (int y = 0; y < height; y++) { |
152 |
System.arraycopy(data, srcIndex, newData, destIndex, stride); |
153 |
srcIndex += bpl; |
154 |
destIndex += newBpl; |
155 |
} |
156 |
return newData; |
157 |
} |
138 |
} |
158 |
} |
139 |
- |
|
|