View | Details | Raw Unified | Return to bug 493455
Collapse All | Expand All

(-)a/tests/org.eclipse.swt.tests/ManualTests/org/eclipse/swt/tests/manual/SnippetDrawAlphaTwoPass.java (-3 / +22 lines)
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
- 

Return to bug 493455