diff options
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/SampleGL.cpp | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/samplecode/SampleGL.cpp b/samplecode/SampleGL.cpp deleted file mode 100644 index d020b0e066..0000000000 --- a/samplecode/SampleGL.cpp +++ /dev/null @@ -1,206 +0,0 @@ -#include "SampleCode.h" -#include "SkView.h" -#include "SkCanvas.h" -#include "Sk64.h" -#include "SkGradientShader.h" -#include "SkGraphics.h" -#include "SkImageDecoder.h" -#include "SkKernel33MaskFilter.h" -#include "SkPath.h" -#include "SkRandom.h" -#include "SkRegion.h" -#include "SkShader.h" -#include "SkUtils.h" -#include "SkColorPriv.h" -#include "SkColorFilter.h" -#include "SkTime.h" -#include "SkTypeface.h" -#include "SkXfermode.h" - -// effects -#include "SkGradientShader.h" -#include "SkShaderExtras.h" -#include "SkUnitMappers.h" - -#include "SkStream.h" -#include "SkXMLParser.h" - -#include "SkGLCanvas.h" - -#include <AGL/agl.h> -#include <OpenGL/gl.h> - -extern void* gSampleWind; - -static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) -{ - bm->setConfig(config, w, h); - bm->allocPixels(); - bm->eraseColor(0); - - SkCanvas canvas(*bm); - SkPoint pts[] = { 0, 0, SkIntToScalar(w), SkIntToScalar(h) }; - SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE }; - SkScalar pos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; - SkPaint paint; - - SkUnitMapper* um = NULL; - -// um = new SkCosineMapper; - // um = new SkDiscreteMapper(12); - - SkAutoUnref au(um); - - paint.setAntiAlias(true); - paint.setShader(SkGradientShader::CreateLinear(pts, colors, pos, - SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode, um))->unref(); - - SkRect r; - r.set(0, 0, SkIntToScalar(w), SkIntToScalar(h)); - canvas.drawOval(r, paint); -} - -static void premulBitmap(const SkBitmap& bm) { - for (int y = 0; y < bm.height(); y++) { - SkPMColor* p = bm.getAddr32(0, y); - for (int x = 0; x < bm.width(); x++) { - SkPMColor c = *p; - unsigned a = SkGetPackedA32(c); - unsigned r = SkGetPackedR32(c); - unsigned g = SkGetPackedG32(c); - unsigned b = SkGetPackedB32(c); - - unsigned scale = SkAlpha255To256(a); - r = SkAlphaMul(r, scale); - g = SkAlphaMul(g, scale); - b = SkAlphaMul(b, scale); - *p++ = SkPackARGB32(a, r, g, b); - } - } -} - -class GLView : public SkView { -public: - AGLContext fCtx; - SkBitmap fOffscreen; - SkBitmap fTexture[3]; - - GLView() { - makebm(&fTexture[0], SkBitmap::kARGB_8888_Config, 64, 100); - makebm(&fTexture[1], SkBitmap::kRGB_565_Config, 64, 100); - makebm(&fTexture[2], SkBitmap::kARGB_4444_Config, 64, 100); - - GLint major, minor; - - aglGetVersion(&major, &minor); - SkDebugf("---- version %d %d\n", major, minor); - - GLint attr[] = { - AGL_RGBA, - AGL_DEPTH_SIZE, 32, - AGL_OFFSCREEN, - AGL_NONE - }; - - SkDebugf("------ attr %p %d\n", attr, sizeof(attr)); - AGLPixelFormat format = aglCreatePixelFormat(attr); - SkDebugf("----- format %p\n", format); - fCtx = aglCreateContext(format, 0); - SkDebugf("----- context %p\n", fCtx); - GLboolean success; //= aglSetWindowRef(fCtx, (WindowRef)gSampleWind); -// SkDebugf("----- aglSetWindowRef %d\n", success); - - aglEnable(fCtx, GL_BLEND); - aglEnable(fCtx, GL_LINE_SMOOTH); - aglEnable(fCtx, GL_POINT_SMOOTH); - aglEnable(fCtx, GL_POLYGON_SMOOTH); - - fOffscreen.setConfig(SkBitmap::kARGB_8888_Config, 300, 300); - fOffscreen.allocPixels(); - - success = aglSetOffScreen(fCtx, - fOffscreen.width(), - fOffscreen.height(), - fOffscreen.rowBytes(), - fOffscreen.getPixels()); - GLenum err = aglGetError(); - SkDebugf("---- setoffscreen %d %d %s\n", success, err, aglErrorString(err)); - - aglSetCurrentContext(fCtx); - glOrtho(0, fOffscreen.width(), - fOffscreen.height(), 0, - -1, 1); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE); - - glEnable(GL_TEXTURE_2D); -} - -protected: - // overrides from SkEventSink - virtual bool onQuery(SkEvent* evt) { - if (SampleCode::TitleQ(*evt)) { - SampleCode::TitleR(evt, "GL"); - return true; - } - return this->INHERITED::onQuery(evt); - } - - void drawBG(SkCanvas* canvas) { - canvas->drawColor(0xFFDDDDDD); - } - - virtual void onDraw(SkCanvas* canvas) { - this->drawBG(canvas); - - SkGLCanvas c(fOffscreen.width(), fOffscreen.height()); - - glClearColor(0, 0, 0, 0); - glClear(GL_COLOR_BUFFER_BIT); - - SkPaint p; - - p.setAntiAlias(true); - - c.drawColor(SK_ColorWHITE); - - p.setColor(SK_ColorRED); - c.drawCircle(SkIntToScalar(40), SkIntToScalar(40), SkIntToScalar(20), p); - - p.setColor(SK_ColorGREEN); - p.setStrokeWidth(SkIntToScalar(6)); - p.setStrokeCap(SkPaint::kRound_Cap); - c.drawLine(SkIntToScalar(10), SkIntToScalar(10), SkIntToScalar(40), SkIntToScalar(50), p); - - // c.scale(SkIntToScalar(3)/2, SkIntToScalar(3)/2); - p.setColor(0x880000FF); - c.drawCircle(SkIntToScalar(40), SkIntToScalar(40), SkIntToScalar(20), p); - - for (int i = 0; i < SK_ARRAY_COUNT(fTexture); i++) { - c.drawBitmap(fTexture[i], SkIntToScalar(10), SkIntToScalar(100), NULL); - c.translate(SkIntToScalar(fTexture[i].width()), 0); - } - p.setColor(SK_ColorBLUE); - c.drawRectCoords(SkIntToScalar(10), SkIntToScalar(100), - SkIntToScalar(10+fTexture[0].width()), - SkIntToScalar(100+fTexture[0].height()), - p); - - //////// - glFlush(); - premulBitmap(fOffscreen); - canvas->drawBitmap(fOffscreen, SkIntToScalar(10), SkIntToScalar(10), NULL); - } - -private: - - typedef SkView INHERITED; -}; - -////////////////////////////////////////////////////////////////////////////// - -static SkView* MyFactory() { return new GLView; } -static SkViewRegister reg(MyFactory); - |