14a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com/*
24a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com * Copyright 2012 Google Inc.
34a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com *
44a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com * Use of this source code is governed by a BSD-style license that can be
54a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com * found in the LICENSE file.
64a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com */
74a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
84a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com#ifndef CopyTilesRenderer_DEFINED
94a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com#define CopyTilesRenderer_DEFINED
104a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
114a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com#include "PictureRenderer.h"
124a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com#include "SkTypes.h"
134a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
144a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.comclass SkPicture;
154a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.comclass SkString;
164a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
174a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.comnamespace sk_tools {
184a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com    /**
194a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com     *  PictureRenderer that draws the picture and then extracts it into tiles. For large pictures,
204a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com     *  it will divide the picture into large tiles and draw the picture once for each large tile.
214a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com     */
224a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com    class CopyTilesRenderer : public TiledPictureRenderer {
234a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
244a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com    public:
25b1aded8edd1d809cded20ff546c6e9218b43cda4krajcevski#if SK_SUPPORT_GPU
26b1aded8edd1d809cded20ff546c6e9218b43cda4krajcevski        CopyTilesRenderer(const GrContext::Options &opts, int x, int y);
27b1aded8edd1d809cded20ff546c6e9218b43cda4krajcevski#else
284a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        CopyTilesRenderer(int x, int y);
29b1aded8edd1d809cded20ff546c6e9218b43cda4krajcevski#endif
30ce4dd3de38cd7c29bf5b9d8a8efb55c08ec9be47robertphillips        virtual void init(const SkPicture* pict,
31ce4dd3de38cd7c29bf5b9d8a8efb55c08ec9be47robertphillips                          const SkString* writePath,
32ce4dd3de38cd7c29bf5b9d8a8efb55c08ec9be47robertphillips                          const SkString* mismatchPath,
333f0451772109959fcb79bacf2c9a03e0eb39ff27commit-bot@chromium.org                          const SkString* inputFilename,
3478c71272fb26852bf3d2ca31785e61d4a598af82robertphillips                          bool useChecksumBasedFilenames,
3536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein                          bool useMultiPictureDraw) override;
364a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
374a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        /**
384a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com         *  Similar to TiledPictureRenderer, this will draw a PNG for each tile. However, the
394a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com         *  numbering (and actual tiles) will be different.
404a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com         */
4136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein        bool render(SkBitmap** out) override;
424a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
4336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein        bool supportsTimingIndividualTiles() override { return false; }
44161e1ba4c0a82e21c7d68808529699fd2394ad6cscroggo@google.com
454a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com    private:
464a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        int fXTilesPerLargeTile;
474a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        int fYTilesPerLargeTile;
484a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
494a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        int fLargeTileWidth;
504a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        int fLargeTileHeight;
514a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
5236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein        SkString getConfigNameInternal() override;
534a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com
544a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com        typedef TiledPictureRenderer INHERITED;
554a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com    };
564a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com} // sk_tools
574a26d9d62a6d762a518c0ca08d43189916b75cf2scroggo@google.com#endif // CopyTilesRenderer_DEFINED
58