add 'n' to tri-toggle bitmap-filter (LERP) on/off/neutral
git-svn-id: http://skia.googlecode.com/svn/trunk@1344 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
16bab87a78
commit
176753aa6d
@ -122,7 +122,8 @@ static SkTriState cycle_tristate(SkTriState state) {
|
||||
|
||||
class FlagsDrawFilter : public SkDrawFilter {
|
||||
public:
|
||||
FlagsDrawFilter(SkTriState lcd, SkTriState aa) : fLCDState(lcd), fAAState(aa) {}
|
||||
FlagsDrawFilter(SkTriState lcd, SkTriState aa, SkTriState filter) :
|
||||
fLCDState(lcd), fAAState(aa), fFilterState(filter) {}
|
||||
|
||||
virtual void filter(SkPaint* paint, Type t) {
|
||||
if (kText_Type == t && kUnknown_SkTriState != fLCDState) {
|
||||
@ -131,11 +132,15 @@ public:
|
||||
if (kUnknown_SkTriState != fAAState) {
|
||||
paint->setAntiAlias(kTrue_SkTriState == fAAState);
|
||||
}
|
||||
if (kUnknown_SkTriState != fFilterState) {
|
||||
paint->setFilterBitmap(kTrue_SkTriState == fFilterState);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
SkTriState fLCDState;
|
||||
SkTriState fAAState;
|
||||
SkTriState fFilterState;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@ -298,6 +303,7 @@ private:
|
||||
|
||||
SkTriState fLCDState;
|
||||
SkTriState fAAState;
|
||||
SkTriState fFilterState;
|
||||
unsigned fFlipAxis;
|
||||
|
||||
int fScrollTestX, fScrollTestY;
|
||||
@ -850,10 +856,7 @@ void SampleWindow::beforeChild(SkView* child, SkCanvas* canvas) {
|
||||
canvas->translate(-cx, -cy);
|
||||
}
|
||||
|
||||
if (kUnknown_SkTriState != fLCDState ||
|
||||
kUnknown_SkTriState != fAAState) {
|
||||
canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState))->unref();
|
||||
}
|
||||
canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState, fFilterState))->unref();
|
||||
|
||||
if (fMeasureFPS) {
|
||||
fMeasureFPS_Time = 0; // 0 means the child is not aware of repeat-draw
|
||||
@ -1034,6 +1037,11 @@ bool SampleWindow::onHandleChar(SkUnichar uni) {
|
||||
this->updateTitle();
|
||||
this->inval(NULL);
|
||||
break;
|
||||
case 'n':
|
||||
fFilterState = cycle_tristate(fFilterState);
|
||||
this->updateTitle();
|
||||
this->inval(NULL);
|
||||
break;
|
||||
case 'o':
|
||||
this->zoomOut();
|
||||
break;
|
||||
@ -1274,6 +1282,7 @@ void SampleWindow::updateTitle() {
|
||||
|
||||
title.prepend(trystate_str(fLCDState, "LCD ", "lcd "));
|
||||
title.prepend(trystate_str(fAAState, "AA ", "aa "));
|
||||
title.prepend(trystate_str(fFilterState, "LERP ", "lerp "));
|
||||
title.prepend(fFlipAxis & kFlipAxis_X ? "X " : NULL);
|
||||
title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : NULL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user