blob: 96e28ee1c5b1af0867703da0dcce46dfa73a77c8 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
reed@android.com8a1c16f2008-12-17 15:59:43 +00008#include "SkGLDevice_SWLayer.h"
9#include "SkRegion.h"
10
11SkGLDevice_SWLayer::SkGLDevice_SWLayer(const SkBitmap& bitmap)
12 : SkGLDevice(bitmap, true) {
13 fTextureID = 0;
14
15 SkASSERT(bitmap.getPixels());
16}
17
18SkGLDevice_SWLayer::~SkGLDevice_SWLayer() {
19 if (fTextureID) {
20 glDeleteTextures(1, &fTextureID);
21 }
22}
23
24SkGLDevice::TexOrientation SkGLDevice_SWLayer::bindDeviceAsTexture() {
25 const SkBitmap& bitmap = this->accessBitmap(false);
26
27 if (0 == fTextureID) {
28 fTextureID = SkGL::BindNewTexture(bitmap, NULL);
29 }
30 return kTopToBottom_TexOrientation;
31}
32
33///////////////////////////////////////////////////////////////////////////////
34
35#include "SkDraw.h"
36
37void SkGLDevice_SWLayer::drawPaint(const SkDraw& draw, const SkPaint& paint) {
38 draw.drawPaint(paint);
39}
40
41void SkGLDevice_SWLayer::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode, size_t count,
42 const SkPoint pts[], const SkPaint& paint) {
43 draw.drawPoints(mode, count, pts, paint);
44}
45
46void SkGLDevice_SWLayer::drawRect(const SkDraw& draw, const SkRect& r,
47 const SkPaint& paint) {
48 draw.drawRect(r, paint);
49}
50
51void SkGLDevice_SWLayer::drawPath(const SkDraw& draw, const SkPath& path,
52 const SkPaint& paint) {
53 draw.drawPath(path, paint);
54}
55
56void SkGLDevice_SWLayer::drawBitmap(const SkDraw& draw, const SkBitmap& bitmap,
57 const SkMatrix& matrix, const SkPaint& paint) {
58 draw.drawBitmap(bitmap, matrix, paint);
59}
60
61void SkGLDevice_SWLayer::drawSprite(const SkDraw& draw, const SkBitmap& bitmap,
62 int x, int y, const SkPaint& paint) {
63 draw.drawSprite(bitmap, x, y, paint);
64}
65
66void SkGLDevice_SWLayer::drawText(const SkDraw& draw, const void* text, size_t len,
67 SkScalar x, SkScalar y, const SkPaint& paint) {
68 draw.drawText((const char*)text, len, x, y, paint);
69}
70
71void SkGLDevice_SWLayer::drawPosText(const SkDraw& draw, const void* text, size_t len,
72 const SkScalar xpos[], SkScalar y,
73 int scalarsPerPos, const SkPaint& paint) {
74 draw.drawPosText((const char*)text, len, xpos, y, scalarsPerPos, paint);
75}
76
77void SkGLDevice_SWLayer::drawTextOnPath(const SkDraw& draw, const void* text,
78 size_t len, const SkPath& path,
79 const SkMatrix* matrix,
80 const SkPaint& paint) {
81 draw.drawTextOnPath((const char*)text, len, path, matrix, paint);
82}
83
84void SkGLDevice_SWLayer::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
85 int vertexCount,
86 const SkPoint verts[], const SkPoint textures[],
87 const SkColor colors[], SkXfermode* xmode,
88 const uint16_t indices[], int indexCount,
89 const SkPaint& paint) {
90 draw.drawVertices(vmode, vertexCount, verts, textures, colors, xmode,
91 indices, indexCount, paint);
92}
93
94void SkGLDevice_SWLayer::drawDevice(const SkDraw& draw, SkDevice* dev,
95 int x, int y, const SkPaint& paint) {
96 this->SkDevice::drawDevice(draw, dev, x, y, paint);
97}
98