OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 | 8 |
9 #include "GrGLUtil.h" | 9 #include "GrGLUtil.h" |
10 #include "SkMatrix.h" | 10 #include "SkMatrix.h" |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VENDOR)); | 299 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VENDOR)); |
300 return GrGLGetVendorFromString((const char*) v); | 300 return GrGLGetVendorFromString((const char*) v); |
301 } | 301 } |
302 | 302 |
303 GrGLRenderer GrGLGetRenderer(const GrGLInterface* gl) { | 303 GrGLRenderer GrGLGetRenderer(const GrGLInterface* gl) { |
304 const GrGLubyte* v; | 304 const GrGLubyte* v; |
305 GR_GL_CALL_RET(gl, v, GetString(GR_GL_RENDERER)); | 305 GR_GL_CALL_RET(gl, v, GetString(GR_GL_RENDERER)); |
306 return GrGLGetRendererFromString((const char*) v); | 306 return GrGLGetRendererFromString((const char*) v); |
307 } | 307 } |
308 | 308 |
309 template<> void GrGLGetMatrix<3>(float* dest, const SkMatrix& src) { | |
310 GR_STATIC_ASSERT(sizeof(float) == sizeof (GrGLfloat)); | |
311 // Col 0 | |
312 dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]); | |
313 dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]); | |
314 dest[2] = SkScalarToFloat(src[SkMatrix::kMPersp0]); | |
315 | |
316 // Col 1 | |
317 dest[3] = SkScalarToFloat(src[SkMatrix::kMSkewX]); | |
318 dest[4] = SkScalarToFloat(src[SkMatrix::kMScaleY]); | |
319 dest[5] = SkScalarToFloat(src[SkMatrix::kMPersp1]); | |
320 | |
321 // Col 2 | |
322 dest[6] = SkScalarToFloat(src[SkMatrix::kMTransX]); | |
323 dest[7] = SkScalarToFloat(src[SkMatrix::kMTransY]); | |
324 dest[8] = SkScalarToFloat(src[SkMatrix::kMPersp2]); | |
325 } | |
326 | |
327 template<> void GrGLGetMatrix<4>(float* dest, const SkMatrix& src) { | |
328 GR_STATIC_ASSERT(sizeof(float) == sizeof (GrGLfloat)); | |
329 // Col 0 | |
330 dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]); | |
331 dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]); | |
332 dest[2] = 0; | |
333 dest[3] = SkScalarToFloat(src[SkMatrix::kMPersp0]); | |
334 | |
335 // Col 1 | |
336 dest[4] = SkScalarToFloat(src[SkMatrix::kMSkewX]); | |
337 dest[5] = SkScalarToFloat(src[SkMatrix::kMScaleY]); | |
338 dest[6] = 0; | |
339 dest[7] = SkScalarToFloat(src[SkMatrix::kMPersp1]); | |
340 | |
341 // Col 2 | |
342 dest[8] = 0; | |
343 dest[9] = 0; | |
344 dest[10] = 1; | |
345 dest[11] = 0; | |
346 | |
347 // Col 3 | |
348 dest[12] = SkScalarToFloat(src[SkMatrix::kMTransX]); | |
349 dest[13] = SkScalarToFloat(src[SkMatrix::kMTransY]); | |
350 dest[14] = 0; | |
351 dest[15] = SkScalarToFloat(src[SkMatrix::kMPersp2]); | |
352 } | |
353 | |
354 GrGLenum GrToGLStencilFunc(GrStencilFunc basicFunc) { | 309 GrGLenum GrToGLStencilFunc(GrStencilFunc basicFunc) { |
355 static const GrGLenum gTable[] = { | 310 static const GrGLenum gTable[] = { |
356 GR_GL_ALWAYS, // kAlways_StencilFunc | 311 GR_GL_ALWAYS, // kAlways_StencilFunc |
357 GR_GL_NEVER, // kNever_StencilFunc | 312 GR_GL_NEVER, // kNever_StencilFunc |
358 GR_GL_GREATER, // kGreater_StencilFunc | 313 GR_GL_GREATER, // kGreater_StencilFunc |
359 GR_GL_GEQUAL, // kGEqual_StencilFunc | 314 GR_GL_GEQUAL, // kGEqual_StencilFunc |
360 GR_GL_LESS, // kLess_StencilFunc | 315 GR_GL_LESS, // kLess_StencilFunc |
361 GR_GL_LEQUAL, // kLEqual_StencilFunc, | 316 GR_GL_LEQUAL, // kLEqual_StencilFunc, |
362 GR_GL_EQUAL, // kEqual_StencilFunc, | 317 GR_GL_EQUAL, // kEqual_StencilFunc, |
363 GR_GL_NOTEQUAL, // kNotEqual_StencilFunc, | 318 GR_GL_NOTEQUAL, // kNotEqual_StencilFunc, |
364 }; | 319 }; |
365 GR_STATIC_ASSERT(SK_ARRAY_COUNT(gTable) == kBasicStencilFuncCount); | 320 GR_STATIC_ASSERT(SK_ARRAY_COUNT(gTable) == kBasicStencilFuncCount); |
366 GR_STATIC_ASSERT(0 == kAlways_StencilFunc); | 321 GR_STATIC_ASSERT(0 == kAlways_StencilFunc); |
367 GR_STATIC_ASSERT(1 == kNever_StencilFunc); | 322 GR_STATIC_ASSERT(1 == kNever_StencilFunc); |
368 GR_STATIC_ASSERT(2 == kGreater_StencilFunc); | 323 GR_STATIC_ASSERT(2 == kGreater_StencilFunc); |
369 GR_STATIC_ASSERT(3 == kGEqual_StencilFunc); | 324 GR_STATIC_ASSERT(3 == kGEqual_StencilFunc); |
370 GR_STATIC_ASSERT(4 == kLess_StencilFunc); | 325 GR_STATIC_ASSERT(4 == kLess_StencilFunc); |
371 GR_STATIC_ASSERT(5 == kLEqual_StencilFunc); | 326 GR_STATIC_ASSERT(5 == kLEqual_StencilFunc); |
372 GR_STATIC_ASSERT(6 == kEqual_StencilFunc); | 327 GR_STATIC_ASSERT(6 == kEqual_StencilFunc); |
373 GR_STATIC_ASSERT(7 == kNotEqual_StencilFunc); | 328 GR_STATIC_ASSERT(7 == kNotEqual_StencilFunc); |
374 SkASSERT((unsigned) basicFunc < kBasicStencilFuncCount); | 329 SkASSERT((unsigned) basicFunc < kBasicStencilFuncCount); |
375 | 330 |
376 return gTable[basicFunc]; | 331 return gTable[basicFunc]; |
377 } | 332 } |
OLD | NEW |