skia2/tools/sk_tool_utils.h
caryclark 83ca628cb6 Today's gm include many differences caused by platform font implementations.
This experiment replaces the label used in the aaxfermodes gm with
aliased text generated from paths common to all platforms.

Since there is no way today to generate all dm output from trybots,
this will be checked in to confirm that this strategy provides simpler
output across devices.

This does not introduce a new public interface; instead, dm uses
a extern backdoor to install the SkTypeface::CreateFromName
handler.

Review URL: https://codereview.chromium.org/1163283002
2015-06-10 09:31:09 -07:00

84 lines
3.0 KiB
C++

/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef sk_tool_utils_DEFINED
#define sk_tool_utils_DEFINED
#include "SkColor.h"
#include "SkImageEncoder.h"
#include "SkImageInfo.h"
#include "SkPixelSerializer.h"
#include "SkTypeface.h"
class SkBitmap;
class SkCanvas;
class SkPaint;
class SkShader;
class SkTestFont;
class SkTextBlobBuilder;
namespace sk_tool_utils {
const char* colortype_name(SkColorType);
/**
* Sets the paint to use a platform-independent text renderer if FLAGS_portableFonts is set.
* FIXME: will become obsolete as GMs migrate to set portable typeface always.
*/
void set_portable_typeface(SkPaint* paint, const char* name = NULL,
SkTypeface::Style style = SkTypeface::kNormal);
void set_portable_typeface_always(SkPaint* paint, const char* name = NULL,
SkTypeface::Style style = SkTypeface::kNormal);
SkTypeface* create_portable_typeface(const char* name, SkTypeface::Style style);
SkTypeface* create_portable_typeface_always(const char* name, SkTypeface::Style style);
void report_used_chars();
/**
* Call canvas->writePixels() by using the pixels from bitmap, but with an info that claims
* the pixels are colorType + alphaType
*/
void write_pixels(SkCanvas*, const SkBitmap&, int x, int y, SkColorType, SkAlphaType);
// private to sk_tool_utils
SkTypeface* create_font(const char* name, SkTypeface::Style );
SkTypeface* resource_font(const char* name, SkTypeface::Style );
/** Returns a newly created CheckerboardShader. */
SkShader* create_checkerboard_shader(SkColor c1, SkColor c2, int size);
/** Draw a checkerboard pattern in the current canvas, restricted to
the current clip, using SkXfermode::kSrc_Mode. */
void draw_checkerboard(SkCanvas* canvas,
SkColor color1,
SkColor color2,
int size);
/** A default checkerboard. */
inline void draw_checkerboard(SkCanvas* canvas) {
sk_tool_utils::draw_checkerboard(canvas, 0xFF999999, 0xFF666666, 8);
}
// Encodes to PNG, unless there is already encoded data, in which case that gets
// used.
class PngPixelSerializer : public SkPixelSerializer {
public:
bool onUseEncodedData(const void*, size_t) override { return true; }
SkData* onEncodePixels(const SkImageInfo& info, const void* pixels,
size_t rowBytes) override {
return SkImageEncoder::EncodeData(info, pixels, rowBytes,
SkImageEncoder::kPNG_Type, 100);
}
};
// A helper for inserting a drawtext call into a SkTextBlobBuilder
void add_to_text_blob(SkTextBlobBuilder* builder, const char* text, const SkPaint& origPaint,
SkScalar x, SkScalar y);
} // namespace sk_tool_utils
#endif // sk_tool_utils_DEFINED