blob: f8728c26cb7288a2a49745f281974210032d6d2a [file] [log] [blame]
robertphillips@google.comd5c9e992012-03-20 14:51:47 +00001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "gm.h"
9#include "SkCanvas.h"
10#include "SkImageDecoder.h"
11#include "SkStream.h"
12
13namespace skiagm {
14
15/** Draw a CMYK encoded jpeg - libjpeg doesn't support CMYK->RGB
16 conversion so this tests Skia's internal processing
17*/
18class CMYKJpegGM : public GM {
19public:
scroggo@google.com9f686f32012-11-29 21:05:37 +000020 CMYKJpegGM() {}
21
22protected:
23 virtual void onOnceBeforeDraw() SK_OVERRIDE {
robertphillips@google.comd5c9e992012-03-20 14:51:47 +000024
25 // parameters to the "decode" call
26 bool dither = false;
27 SkBitmap::Config prefConfig = SkBitmap::kARGB_8888_Config;
28
29 SkString filename(INHERITED::gResourcePath);
30 if (!filename.endsWith("/") && !filename.endsWith("\\")) {
31 filename.append("/");
32 }
33
34 filename.append("CMYK.jpg");
35
36 SkFILEStream stream(filename.c_str());
bungeman@google.comdc8e6e82013-05-29 14:53:48 +000037 if (!stream.isValid()) {
38 SkDebugf("Could not find CMYK.jpg, please set --resourcePath correctly.\n");
39 return;
40 }
skia.committer@gmail.coma5d3e772013-05-30 07:01:29 +000041
robertphillips@google.comd5c9e992012-03-20 14:51:47 +000042 SkImageDecoder* codec = SkImageDecoder::Factory(&stream);
43 if (codec) {
44 stream.rewind();
45 codec->setDitherImage(dither);
46 codec->decode(&stream, &fBitmap, prefConfig,
47 SkImageDecoder::kDecodePixels_Mode);
scroggo@google.com9f752082012-07-31 16:37:11 +000048 SkDELETE(codec);
robertphillips@google.comd5c9e992012-03-20 14:51:47 +000049 }
50 }
51
robertphillips@google.comd5c9e992012-03-20 14:51:47 +000052 virtual SkString onShortName() {
53 return SkString("cmykjpeg");
54 }
55
56 virtual SkISize onISize() {
57 return make_isize(640, 480);
58 }
59
60 virtual void onDraw(SkCanvas* canvas) {
61
62 canvas->translate(20*SK_Scalar1, 20*SK_Scalar1);
63 canvas->drawBitmap(fBitmap, 0, 0);
64 }
65
66private:
67 SkBitmap fBitmap;
68
69 typedef GM INHERITED;
70};
71
robertphillips@google.comd5c9e992012-03-20 14:51:47 +000072//////////////////////////////////////////////////////////////////////////////
73
74static GM* MyFactory(void*) { return new CMYKJpegGM; }
75static GMRegistry reg(MyFactory);
76
77}