196 } |
194 } |
197 |
195 |
198 // graphics primitives drawing implementation: |
196 // graphics primitives drawing implementation: |
199 |
197 |
200 // certain primitives don't care about all the states (ex. drawing an image needs not involve setting current paint) |
198 // certain primitives don't care about all the states (ex. drawing an image needs not involve setting current paint) |
201 static final int kPrimitive = 0; |
199 @Native static final int kPrimitive = 0; |
202 static final int kImage = 1; |
200 @Native static final int kImage = 1; |
203 static final int kText = 2; |
201 @Native static final int kText = 2; |
204 static final int kCopyArea = 3; |
202 @Native static final int kCopyArea = 3; |
205 static final int kExternal = 4; |
203 @Native static final int kExternal = 4; |
206 |
204 |
207 static final int kLine = 5; // belongs to kPrimitive |
205 @Native static final int kLine = 5; // belongs to kPrimitive |
208 static final int kRect = 6; // belongs to kPrimitive |
206 @Native static final int kRect = 6; // belongs to kPrimitive |
209 static final int kRoundRect = 7; // belongs to kPrimitive |
207 @Native static final int kRoundRect = 7; // belongs to kPrimitive |
210 static final int kOval = 8; // belongs to kPrimitive |
208 @Native static final int kOval = 8; // belongs to kPrimitive |
211 static final int kArc = 9; // belongs to kPrimitive |
209 @Native static final int kArc = 9; // belongs to kPrimitive |
212 static final int kPolygon = 10; // belongs to kPrimitive |
210 @Native static final int kPolygon = 10; // belongs to kPrimitive |
213 static final int kShape = 11; // belongs to kPrimitive |
211 @Native static final int kShape = 11; // belongs to kPrimitive |
214 // static final int kImage = 12; // belongs to kImage |
212 // static final int kImage = 12; // belongs to kImage |
215 static final int kString = 13; // belongs to kText |
213 @Native static final int kString = 13; // belongs to kText |
216 static final int kGlyphs = 14; // belongs to kText |
214 @Native static final int kGlyphs = 14; // belongs to kText |
217 static final int kUnicodes = 15; // belongs to kText |
215 @Native static final int kUnicodes = 15; // belongs to kText |
218 // static final int kCopyArea = 16; // belongs to kCopyArea |
216 // static final int kCopyArea = 16; // belongs to kCopyArea |
219 // static final int kExternal = 17; // belongs to kExternal |
217 // static final int kExternal = 17; // belongs to kExternal |
220 |
218 |
221 static final int kCommonParameterCount = 1 + 1 + 4 + 4; // type + change flags + color info (type(1) align(1) and |
219 @Native static final int kCommonParameterCount = 1 + 1 + 4 + 4; // type + change flags + color info (type(1) align(1) and |
222 // value(2)) + parameters ((x1, y1, x2, y2) OR (x, y, w, h)) |
220 // value(2)) + parameters ((x1, y1, x2, y2) OR (x, y, w, h)) |
223 static final int kLineParametersCount = kCommonParameterCount; // kCommonParameterCount |
221 @Native static final int kLineParametersCount = kCommonParameterCount; // kCommonParameterCount |
224 static final int kRectParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill |
222 @Native static final int kRectParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill |
225 static final int kRoundRectParametersCount = kCommonParameterCount + 2 + 1; // kCommonParameterCount + arcW + arcH + |
223 @Native static final int kRoundRectParametersCount = kCommonParameterCount + 2 + 1; // kCommonParameterCount + arcW + arcH + |
226 // isfill |
224 // isfill |
227 static final int kOvalParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill |
225 @Native static final int kOvalParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill |
228 static final int kArcParametersCount = kCommonParameterCount + 2 + 1 + 1;// kCommonParameterCount + startAngle + |
226 @Native static final int kArcParametersCount = kCommonParameterCount + 2 + 1 + 1;// kCommonParameterCount + startAngle + |
229 // arcAngle + isfill + type |
227 // arcAngle + isfill + type |
230 static final int kPolygonParametersCount = 0; // not supported |
228 @Native static final int kPolygonParametersCount = 0; // not supported |
231 static final int kShapeParametersCount = 0; // not supported |
229 @Native static final int kShapeParametersCount = 0; // not supported |
232 static final int kImageParametersCount = kCommonParameterCount + 2 + 2 + 4 + 4; // flip horz vert + w&h + src + dst |
230 @Native static final int kImageParametersCount = kCommonParameterCount + 2 + 2 + 4 + 4; // flip horz vert + w&h + src + dst |
233 static final int kStringParametersCount = 0; // not supported |
231 @Native static final int kStringParametersCount = 0; // not supported |
234 static final int kGlyphsParametersCount = 0; // not supported |
232 @Native static final int kGlyphsParametersCount = 0; // not supported |
235 static final int kUnicodesParametersCount = 0; // not supported |
233 @Native static final int kUnicodesParametersCount = 0; // not supported |
236 static final int kPixelParametersCount = 0; // not supported |
234 @Native static final int kPixelParametersCount = 0; // not supported |
237 static final int kExternalParametersCount = 0; // not supported |
235 @Native static final int kExternalParametersCount = 0; // not supported |
238 |
236 |
239 // for intParameters |
237 // for intParameters |
240 // states info |
238 // states info |
241 static final int kChangeFlagIndex = 0; // kBoundsChangedBit | .. | kFontChangedBit |
239 @Native static final int kChangeFlagIndex = 0; // kBoundsChangedBit | .. | kFontChangedBit |
242 // bounds info |
240 // bounds info |
243 static final int kBoundsXIndex = 1; |
241 @Native static final int kBoundsXIndex = 1; |
244 static final int kBoundsYIndex = 2; |
242 @Native static final int kBoundsYIndex = 2; |
245 static final int kBoundsWidthIndex = 3; |
243 @Native static final int kBoundsWidthIndex = 3; |
246 static final int kBoundsHeightIndex = 4; |
244 @Native static final int kBoundsHeightIndex = 4; |
247 // clip info |
245 // clip info |
248 static final int kClipStateIndex = 5; |
246 @Native static final int kClipStateIndex = 5; |
249 static final int kClipNumTypesIndex = 6; |
247 @Native static final int kClipNumTypesIndex = 6; |
250 static final int kClipNumCoordsIndex = 7; |
248 @Native static final int kClipNumCoordsIndex = 7; |
251 static final int kClipWindingRuleIndex = 8; |
249 @Native static final int kClipWindingRuleIndex = 8; |
252 static final int kClipXIndex = 9; |
250 @Native static final int kClipXIndex = 9; |
253 static final int kClipYIndex = 10; |
251 @Native static final int kClipYIndex = 10; |
254 static final int kClipWidthIndex = 11; |
252 @Native static final int kClipWidthIndex = 11; |
255 static final int kClipHeightIndex = 12; |
253 @Native static final int kClipHeightIndex = 12; |
256 // ctm info |
254 // ctm info |
257 static final int kCTMaIndex = 13; |
255 @Native static final int kCTMaIndex = 13; |
258 static final int kCTMbIndex = 14; |
256 @Native static final int kCTMbIndex = 14; |
259 static final int kCTMcIndex = 15; |
257 @Native static final int kCTMcIndex = 15; |
260 static final int kCTMdIndex = 16; |
258 @Native static final int kCTMdIndex = 16; |
261 static final int kCTMtxIndex = 17; |
259 @Native static final int kCTMtxIndex = 17; |
262 static final int kCTMtyIndex = 18; |
260 @Native static final int kCTMtyIndex = 18; |
263 // color info |
261 // color info |
264 static final int kColorStateIndex = 19; // kColorSimple or kColorGradient or kColorTexture |
262 @Native static final int kColorStateIndex = 19; // kColorSimple or kColorGradient or kColorTexture |
265 static final int kColorRGBValueIndex = 20; // if kColorSimple |
263 @Native static final int kColorRGBValueIndex = 20; // if kColorSimple |
266 static final int kColorIndexValueIndex = 21; // if kColorSystem |
264 @Native static final int kColorIndexValueIndex = 21; // if kColorSystem |
267 static final int kColorPointerIndex = 22; // |
265 @Native static final int kColorPointerIndex = 22; // |
268 static final int kColorPointerIndex2 = 23; // |
266 @Native static final int kColorPointerIndex2 = 23; // |
269 static final int kColorRGBValue1Index = 24; // if kColorGradient |
267 @Native static final int kColorRGBValue1Index = 24; // if kColorGradient |
270 static final int kColorWidthIndex = 25; // if kColorTexture |
268 @Native static final int kColorWidthIndex = 25; // if kColorTexture |
271 static final int kColorRGBValue2Index = 26; // if kColorGradient |
269 @Native static final int kColorRGBValue2Index = 26; // if kColorGradient |
272 static final int kColorHeightIndex = 27; // if kColorTexture |
270 @Native static final int kColorHeightIndex = 27; // if kColorTexture |
273 static final int kColorIsCyclicIndex = 28; // if kColorGradient (kColorNonCyclic or kColorCyclic) |
271 @Native static final int kColorIsCyclicIndex = 28; // if kColorGradient (kColorNonCyclic or kColorCyclic) |
274 static final int kColorx1Index = 29; |
272 @Native static final int kColorx1Index = 29; |
275 static final int kColortxIndex = 30; |
273 @Native static final int kColortxIndex = 30; |
276 static final int kColory1Index = 31; |
274 @Native static final int kColory1Index = 31; |
277 static final int kColortyIndex = 32; |
275 @Native static final int kColortyIndex = 32; |
278 static final int kColorx2Index = 33; |
276 @Native static final int kColorx2Index = 33; |
279 static final int kColorsxIndex = 34; |
277 @Native static final int kColorsxIndex = 34; |
280 static final int kColory2Index = 35; |
278 @Native static final int kColory2Index = 35; |
281 static final int kColorsyIndex = 36; |
279 @Native static final int kColorsyIndex = 36; |
282 // composite info |
280 // composite info |
283 static final int kCompositeRuleIndex = 37; // kCGCompositeClear or ... or kCGCompositeXor |
281 @Native static final int kCompositeRuleIndex = 37; // kCGCompositeClear or ... or kCGCompositeXor |
284 static final int kCompositeValueIndex = 38; |
282 @Native static final int kCompositeValueIndex = 38; |
285 // stroke info |
283 // stroke info |
286 static final int kStrokeJoinIndex = 39; // see BasicStroke.java |
284 @Native static final int kStrokeJoinIndex = 39; // see BasicStroke.java |
287 static final int kStrokeCapIndex = 40; // see BasicStroke.java |
285 @Native static final int kStrokeCapIndex = 40; // see BasicStroke.java |
288 static final int kStrokeWidthIndex = 41; |
286 @Native static final int kStrokeWidthIndex = 41; |
289 static final int kStrokeDashPhaseIndex = 42; |
287 @Native static final int kStrokeDashPhaseIndex = 42; |
290 static final int kStrokeLimitIndex = 43; |
288 @Native static final int kStrokeLimitIndex = 43; |
291 // hints info |
289 // hints info |
292 static final int kHintsAntialiasIndex = 44; |
290 @Native static final int kHintsAntialiasIndex = 44; |
293 static final int kHintsTextAntialiasIndex = 45; |
291 @Native static final int kHintsTextAntialiasIndex = 45; |
294 static final int kHintsFractionalMetricsIndex = 46; |
292 @Native static final int kHintsFractionalMetricsIndex = 46; |
295 static final int kHintsRenderingIndex = 47; |
293 @Native static final int kHintsRenderingIndex = 47; |
296 static final int kHintsInterpolationIndex = 48; |
294 @Native static final int kHintsInterpolationIndex = 48; |
297 // live resizing info |
295 // live resizing info |
298 static final int kCanDrawDuringLiveResizeIndex = 49; |
296 @Native static final int kCanDrawDuringLiveResizeIndex = 49; |
299 |
297 |
300 static final int kSizeOfParameters = kCanDrawDuringLiveResizeIndex + 1; |
298 @Native static final int kSizeOfParameters = kCanDrawDuringLiveResizeIndex + 1; |
301 |
299 |
302 // for objectParameters |
300 // for objectParameters |
303 static final int kClipCoordinatesIndex = 0; |
301 @Native static final int kClipCoordinatesIndex = 0; |
304 static final int kClipTypesIndex = 1; |
302 @Native static final int kClipTypesIndex = 1; |
305 static final int kTextureImageIndex = 2; |
303 @Native static final int kTextureImageIndex = 2; |
306 static final int kStrokeDashArrayIndex = 3; |
304 @Native static final int kStrokeDashArrayIndex = 3; |
307 static final int kFontIndex = 4; |
305 @Native static final int kFontIndex = 4; |
308 static final int kFontPaintIndex = 5; |
306 @Native static final int kFontPaintIndex = 5; |
309 |
307 |
310 // possible state changes |
308 // possible state changes |
311 static final int kBoundsChangedBit = 1 << 0; |
309 @Native static final int kBoundsChangedBit = 1 << 0; |
312 static final int kBoundsNotChangedBit = ~kBoundsChangedBit; |
310 @Native static final int kBoundsNotChangedBit = ~kBoundsChangedBit; |
313 static final int kClipChangedBit = 1 << 1; |
311 @Native static final int kClipChangedBit = 1 << 1; |
314 static final int kClipNotChangedBit = ~kClipChangedBit; |
312 @Native static final int kClipNotChangedBit = ~kClipChangedBit; |
315 static final int kCTMChangedBit = 1 << 2; |
313 @Native static final int kCTMChangedBit = 1 << 2; |
316 static final int kCTMNotChangedBit = ~kCTMChangedBit; |
314 @Native static final int kCTMNotChangedBit = ~kCTMChangedBit; |
317 static final int kColorChangedBit = 1 << 3; |
315 @Native static final int kColorChangedBit = 1 << 3; |
318 static final int kColorNotChangedBit = ~kColorChangedBit; |
316 @Native static final int kColorNotChangedBit = ~kColorChangedBit; |
319 static final int kCompositeChangedBit = 1 << 4; |
317 @Native static final int kCompositeChangedBit = 1 << 4; |
320 static final int kCompositeNotChangedBit = ~kCompositeChangedBit; |
318 @Native static final int kCompositeNotChangedBit = ~kCompositeChangedBit; |
321 static final int kStrokeChangedBit = 1 << 5; |
319 @Native static final int kStrokeChangedBit = 1 << 5; |
322 static final int kStrokeNotChangedBit = ~kStrokeChangedBit; |
320 @Native static final int kStrokeNotChangedBit = ~kStrokeChangedBit; |
323 static final int kHintsChangedBit = 1 << 6; |
321 @Native static final int kHintsChangedBit = 1 << 6; |
324 static final int kHintsNotChangedBit = ~kHintsChangedBit; |
322 @Native static final int kHintsNotChangedBit = ~kHintsChangedBit; |
325 static final int kFontChangedBit = 1 << 7; |
323 @Native static final int kFontChangedBit = 1 << 7; |
326 static final int kFontNotChangedBit = ~kFontChangedBit; |
324 @Native static final int kFontNotChangedBit = ~kFontChangedBit; |
327 static final int kEverythingChangedFlag = 0xffffffff; |
325 @Native static final int kEverythingChangedFlag = 0xffffffff; |
328 |
326 |
329 // possible color states |
327 // possible color states |
330 static final int kColorSimple = 0; |
328 @Native static final int kColorSimple = 0; |
331 static final int kColorSystem = 1; |
329 @Native static final int kColorSystem = 1; |
332 static final int kColorGradient = 2; |
330 @Native static final int kColorGradient = 2; |
333 static final int kColorTexture = 3; |
331 @Native static final int kColorTexture = 3; |
334 |
332 |
335 // possible gradient color states |
333 // possible gradient color states |
336 static final int kColorNonCyclic = 0; |
334 @Native static final int kColorNonCyclic = 0; |
337 static final int kColorCyclic = 1; |
335 @Native static final int kColorCyclic = 1; |
338 |
336 |
339 // possible clip states |
337 // possible clip states |
340 static final int kClipRect = 0; |
338 @Native static final int kClipRect = 0; |
341 static final int kClipShape = 1; |
339 @Native static final int kClipShape = 1; |
342 |
340 |
343 static int getRendererTypeForPrimitive(int primitiveType) { |
341 static int getRendererTypeForPrimitive(int primitiveType) { |
344 switch (primitiveType) { |
342 switch (primitiveType) { |
345 case kImage: |
343 case kImage: |
346 return kImage; |
344 return kImage; |