blob: db996caf55d6adf0aac7bd3ea1bf33e7d4bd9438 [file] [log] [blame]
twiz@google.com6cf53032012-06-22 18:55:55 +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#ifndef picture_utils_DEFINED
9#define picture_utils_DEFINED
twiz@google.com6cf53032012-06-22 18:55:55 +000010
borenet@google.come21795e2012-09-14 14:34:28 +000011#include "SkTypes.h"
12#include "SkSize.h"
13
14template <typename T> class SkAutoTUnref;
twiz@google.com6cf53032012-06-22 18:55:55 +000015class SkBitmap;
16class SkFILEStream;
twiz@google.com6cf53032012-06-22 18:55:55 +000017class SkPicture;
borenet@google.come21795e2012-09-14 14:34:28 +000018class SkString;
twiz@google.com6cf53032012-06-22 18:55:55 +000019
20namespace sk_tools {
keyar@chromium.org9299ede2012-08-21 19:05:08 +000021 // since PNG insists on unpremultiplying our alpha, we take no precision
22 // chances and force all pixels to be 100% opaque, otherwise on compare we
23 // may not get a perfect match.
24 //
25 // This expects a bitmap with a config type of 8888 and for the pixels to
26 // not be on the GPU.
27 void force_all_opaque(const SkBitmap& bitmap);
28
twiz@google.com6cf53032012-06-22 18:55:55 +000029 // Creates a posix style filepath by concatenating name onto dir with a
30 // forward slash into path.
keyar@chromium.org1cbd47c2012-07-13 18:22:59 +000031 void make_filepath(SkString* path, const SkString&, const SkString& name);
twiz@google.com6cf53032012-06-22 18:55:55 +000032
keyar@chromium.orgd1dc9202012-07-09 18:32:08 +000033 // Returns the last part of the path (file name or leaf directory name)
34 //
35 // This basically just looks for a foward slash or backslash (windows
keyar@chromium.org9299ede2012-08-21 19:05:08 +000036 // only).
keyar@chromium.orgd1dc9202012-07-09 18:32:08 +000037 void get_basename(SkString* basename, const SkString& path);
38
keyar@chromium.org163b5672012-08-01 17:53:29 +000039 // Returns true if the string ends with %
scroggo@google.com58b4ead2012-08-31 16:15:22 +000040 bool is_percentage(const char* const string);
keyar@chromium.org163b5672012-08-01 17:53:29 +000041
twiz@google.com6cf53032012-06-22 18:55:55 +000042 // Prepares the bitmap so that it can be written.
43 //
44 // Specifically, it configures the bitmap, allocates pixels and then
45 // erases the pixels to transparent black.
46 void setup_bitmap(SkBitmap* bitmap, int width, int height);
borenet@google.come21795e2012-09-14 14:34:28 +000047
48 // Determines whether the given dimensions are too large and suggests a new
49 // size.
50 bool area_too_big(int w, int h, SkISize* newSize);
51
52 // Determines whether the given SkPicture is too large and, if so, replaces
53 // it with a new, scaled-down SkPicture.
54 void resize_if_needed(SkAutoTUnref<SkPicture>* aur);
twiz@google.com6cf53032012-06-22 18:55:55 +000055}
56
57#endif // picture_utils_DEFINED