8b0e8ac5f5
Eliminates SkFlattenable{Read,Write}Buffer, promoting SkOrdered{Read,Write}Buffer a step each in the hierarchy. What used to be this: SkFlattenableWriteBuffer -> SkOrderedWriteBuffer SkFlattenableReadBuffer -> SkOrderedReadBuffer SkFlattenableReadBuffer -> SkValidatingReadBuffer is now SkWriteBuffer SkReadBuffer -> SkValidatingReadBuffer Benefits: - code is simpler, names are less wordy - the generic SkFlattenableFooBuffer code in SkPaint was incorrect; removed - write buffers are completely devirtualized, important for record speed This refactoring was mostly mechanical. You aren't going to find anything interesting in files with less than 10 lines changed. BUG=skia: R=reed@google.com, scroggo@google.com, djsollen@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/134163010 git-svn-id: http://skia.googlecode.com/svn/trunk@13245 2bbb7eff-a529-9590-31e7-b0007b416f81
131 lines
3.6 KiB
C++
131 lines
3.6 KiB
C++
|
|
/*
|
|
* Copyright 2012 The Android Open Source Project
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
|
|
#ifndef SkPaintOptionsAndroid_DEFINED
|
|
#define SkPaintOptionsAndroid_DEFINED
|
|
|
|
#include "SkTypes.h"
|
|
#include "SkString.h"
|
|
|
|
class SkReadBuffer;
|
|
class SkWriteBuffer;
|
|
|
|
/** \class SkLanguage
|
|
|
|
The SkLanguage class represents a human written language, and is used by
|
|
text draw operations to determine which glyph to draw when drawing
|
|
characters with variants (ie Han-derived characters).
|
|
*/
|
|
class SkLanguage {
|
|
public:
|
|
SkLanguage() { }
|
|
SkLanguage(const SkString& tag) : fTag(tag) { }
|
|
SkLanguage(const char* tag) : fTag(tag) { }
|
|
SkLanguage(const char* tag, size_t len) : fTag(tag, len) { }
|
|
SkLanguage(const SkLanguage& b) : fTag(b.fTag) { }
|
|
|
|
/** Gets a BCP 47 language identifier for this SkLanguage.
|
|
@return a BCP 47 language identifier representing this language
|
|
*/
|
|
const SkString& getTag() const { return fTag; }
|
|
|
|
/** Performs BCP 47 fallback to return an SkLanguage one step more general.
|
|
@return an SkLanguage one step more general
|
|
*/
|
|
SkLanguage getParent() const;
|
|
|
|
bool operator==(const SkLanguage& b) const {
|
|
return fTag == b.fTag;
|
|
}
|
|
bool operator!=(const SkLanguage& b) const {
|
|
return fTag != b.fTag;
|
|
}
|
|
SkLanguage& operator=(const SkLanguage& b) {
|
|
fTag = b.fTag;
|
|
return *this;
|
|
}
|
|
|
|
private:
|
|
//! BCP 47 language identifier
|
|
SkString fTag;
|
|
};
|
|
|
|
class SkPaintOptionsAndroid {
|
|
public:
|
|
SkPaintOptionsAndroid() {
|
|
fFontVariant = kDefault_Variant;
|
|
fUseFontFallbacks = false;
|
|
}
|
|
|
|
SkPaintOptionsAndroid& operator=(const SkPaintOptionsAndroid& b) {
|
|
fLanguage = b.fLanguage;
|
|
fFontVariant = b.fFontVariant;
|
|
fUseFontFallbacks = b.fUseFontFallbacks;
|
|
return *this;
|
|
}
|
|
|
|
bool operator==(const SkPaintOptionsAndroid& b) const {
|
|
return !(*this != b);
|
|
}
|
|
|
|
bool operator!=(const SkPaintOptionsAndroid& b) const {
|
|
return fLanguage != b.fLanguage ||
|
|
fFontVariant != b.fFontVariant ||
|
|
fUseFontFallbacks != b.fUseFontFallbacks;
|
|
}
|
|
|
|
void flatten(SkWriteBuffer&) const;
|
|
void unflatten(SkReadBuffer&);
|
|
|
|
/** Return the paint's language value used for drawing text.
|
|
@return the paint's language value used for drawing text.
|
|
*/
|
|
const SkLanguage& getLanguage() const { return fLanguage; }
|
|
|
|
/** Set the paint's language value used for drawing text.
|
|
@param language set the paint's language value for drawing text.
|
|
*/
|
|
void setLanguage(const SkLanguage& language) { fLanguage = language; }
|
|
void setLanguage(const char* languageTag) { fLanguage = SkLanguage(languageTag); }
|
|
|
|
|
|
enum FontVariant {
|
|
kDefault_Variant = 0x01,
|
|
kCompact_Variant = 0x02,
|
|
kElegant_Variant = 0x04,
|
|
kLast_Variant = kElegant_Variant,
|
|
};
|
|
|
|
/** Return the font variant
|
|
@return the font variant used by this paint object
|
|
*/
|
|
FontVariant getFontVariant() const { return fFontVariant; }
|
|
|
|
/** Set the font variant
|
|
@param fontVariant set the paint's font variant for choosing fonts
|
|
*/
|
|
void setFontVariant(FontVariant fontVariant) {
|
|
SkASSERT((unsigned)fontVariant <= kLast_Variant);
|
|
fFontVariant = fontVariant;
|
|
}
|
|
|
|
bool isUsingFontFallbacks() const { return fUseFontFallbacks; }
|
|
|
|
void setUseFontFallbacks(bool useFontFallbacks) {
|
|
fUseFontFallbacks = useFontFallbacks;
|
|
}
|
|
|
|
private:
|
|
SkLanguage fLanguage;
|
|
FontVariant fFontVariant;
|
|
bool fUseFontFallbacks;
|
|
};
|
|
|
|
#endif // #ifndef SkPaintOptionsAndroid_DEFINED
|