136c38cbb29744e0b5390a38367e47c0c74287c2dmsarett/* 236c38cbb29744e0b5390a38367e47c0c74287c2dmsarett * Copyright 2011 Google Inc. 336c38cbb29744e0b5390a38367e47c0c74287c2dmsarett * 436c38cbb29744e0b5390a38367e47c0c74287c2dmsarett * Use of this source code is governed by a BSD-style license that can be 536c38cbb29744e0b5390a38367e47c0c74287c2dmsarett * found in the LICENSE file. 636c38cbb29744e0b5390a38367e47c0c74287c2dmsarett */ 736c38cbb29744e0b5390a38367e47c0c74287c2dmsarett#include "gm.h" 833d2055e594177b27360f84e0631b26d74a55a9bMike Klein#include "sk_tool_utils.h" 936c38cbb29744e0b5390a38367e47c0c74287c2dmsarett#include "SkCanvas.h" 1036c38cbb29744e0b5390a38367e47c0c74287c2dmsarett#include "SkData.h" 1136c38cbb29744e0b5390a38367e47c0c74287c2dmsarett#include "SkImageEncoder.h" 1236c38cbb29744e0b5390a38367e47c0c74287c2dmsarett#include "Resources.h" 1336c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 1436c38cbb29744e0b5390a38367e47c0c74287c2dmsarettnamespace skiagm { 1536c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 1636c38cbb29744e0b5390a38367e47c0c74287c2dmsarettclass EncodeGM : public GM { 1736c38cbb29744e0b5390a38367e47c0c74287c2dmsarettpublic: 1836c38cbb29744e0b5390a38367e47c0c74287c2dmsarett EncodeGM() {} 1936c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 2036c38cbb29744e0b5390a38367e47c0c74287c2dmsarettprotected: 2136c38cbb29744e0b5390a38367e47c0c74287c2dmsarett SkString onShortName() override { 2236c38cbb29744e0b5390a38367e47c0c74287c2dmsarett return SkString("encode"); 2336c38cbb29744e0b5390a38367e47c0c74287c2dmsarett } 2436c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 2536c38cbb29744e0b5390a38367e47c0c74287c2dmsarett SkISize onISize() override { 2636c38cbb29744e0b5390a38367e47c0c74287c2dmsarett return SkISize::Make(1024, 600); 2736c38cbb29744e0b5390a38367e47c0c74287c2dmsarett } 2836c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 2936c38cbb29744e0b5390a38367e47c0c74287c2dmsarett void onDraw(SkCanvas* canvas) override { 3036c38cbb29744e0b5390a38367e47c0c74287c2dmsarett SkBitmap orig; 3136c38cbb29744e0b5390a38367e47c0c74287c2dmsarett GetResourceAsBitmap("mandrill_512_q075.jpg", &orig); 32db6830162eca5b94e61d9825ec93306fc615d204Hal Canary sk_sp<SkData> pngData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kPNG, 100)); 33db6830162eca5b94e61d9825ec93306fc615d204Hal Canary sk_sp<SkData> jpegData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kJPEG, 100)); 3436c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 3536c38cbb29744e0b5390a38367e47c0c74287c2dmsarett sk_sp<SkImage> pngImage = SkImage::MakeFromEncoded(pngData); 3636c38cbb29744e0b5390a38367e47c0c74287c2dmsarett sk_sp<SkImage> jpegImage = SkImage::MakeFromEncoded(jpegData); 3736c38cbb29744e0b5390a38367e47c0c74287c2dmsarett canvas->drawImage(pngImage.get(), 0.0f, 0.0f); 3836c38cbb29744e0b5390a38367e47c0c74287c2dmsarett canvas->drawImage(jpegImage.get(), 512.0f, 0.0f); 3936c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 4036c38cbb29744e0b5390a38367e47c0c74287c2dmsarett const char text[] = "Images should look identical."; 4136c38cbb29744e0b5390a38367e47c0c74287c2dmsarett canvas->drawText(text, sizeof(text) - 1, 450.0f, 550.0f, SkPaint()); 4236c38cbb29744e0b5390a38367e47c0c74287c2dmsarett } 4336c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 4436c38cbb29744e0b5390a38367e47c0c74287c2dmsarettprivate: 4536c38cbb29744e0b5390a38367e47c0c74287c2dmsarett typedef GM INHERITED; 4636c38cbb29744e0b5390a38367e47c0c74287c2dmsarett}; 4736c38cbb29744e0b5390a38367e47c0c74287c2dmsarett 4836c38cbb29744e0b5390a38367e47c0c74287c2dmsarettDEF_GM( return new EncodeGM; ) 4936c38cbb29744e0b5390a38367e47c0c74287c2dmsarett} 50