int indexOffset, int indexCount, Paint paint) {
// TODO: Implement
}
-
- @Override
- public void setOverrideXfermode(PorterDuff.Mode xfermode) {
- int xfermodeValue = -1;
- if (xfermode != null) {
- xfermodeValue = xfermode.nativeInt;
- }
- nSetOverrideXfermode(mRenderer, xfermodeValue);
- }
-
- private static native void nSetOverrideXfermode(long renderer, int xfermode);
}
return Caches::getInstance().maxTextureSize;
}
-static void android_view_GLES20Canvas_setOverrideXfermode(JNIEnv* env, jobject clazz,
- jlong rendererPtr, int xfermode) {
- DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr);
- renderer->setOverrideXfermode(xfermode);
-}
-
// ----------------------------------------------------------------------------
// State
// ----------------------------------------------------------------------------
{ "nGetMaximumTextureWidth", "()I", (void*) android_view_GLES20Canvas_getMaxTextureWidth },
{ "nGetMaximumTextureHeight", "()I", (void*) android_view_GLES20Canvas_getMaxTextureHeight },
- { "nSetOverrideXfermode", "(JI)V", (void*) android_view_GLES20Canvas_setOverrideXfermode },
-
#endif
};
#include <SkMatrix.h>
#include <SkPaint.h>
#include <SkPath.h>
-#include <SkPorterDuff.h>
#include <cutils/compiler.h>
#include "DisplayListLogBuffer.h"
void setHighContrastText(bool highContrastText) {
mHighContrastText = highContrastText;
}
-
- void setOverrideXfermode(int xfermode) {
- if (xfermode != -1) {
- SkPorterDuff::Mode porterDuffMode = static_cast<SkPorterDuff::Mode>(xfermode);
- xfermode = SkPorterDuff::ToXfermodeMode(porterDuffMode);
- }
- mOverrideXfermode = xfermode;
- };
-
private:
enum DeferredBarrierType {
kBarrier_None,
inline const SkPaint* refPaint(const SkPaint* paint) {
if (!paint) return NULL;
- const SkPaint* paintCopy;
-
- if (mOverrideXfermode != -1) {
- SkPaint* overriddenPaint = copyPaint(paint);
- overriddenPaint->setXfermodeMode(static_cast<SkXfermode::Mode>(mOverrideXfermode));
- paintCopy = overriddenPaint;
- } else {
- paintCopy = mPaintMap.valueFor(paint);
- if (paintCopy == NULL
- || paintCopy->getGenerationID() != paint->getGenerationID()
- // We can't compare shader pointers because that will always
- // change as we do partial copying via wrapping. However, if the
- // shader changes the paint generationID will have changed and
- // so we don't hit this comparison anyway
- || !(paint->getShader() && paintCopy->getShader()
- && paint->getShader()->getGenerationID() == paintCopy->getShader()->getGenerationID())) {
- paintCopy = copyPaint(paint);
- // replaceValueFor() performs an add if the entry doesn't exist
- mPaintMap.replaceValueFor(paint, paintCopy);
- }
+ const SkPaint* paintCopy = mPaintMap.valueFor(paint);
+ if (paintCopy == NULL
+ || paintCopy->getGenerationID() != paint->getGenerationID()
+ // We can't compare shader pointers because that will always
+ // change as we do partial copying via wrapping. However, if the
+ // shader changes the paint generationID will have changed and
+ // so we don't hit this comparison anyway
+ || !(paint->getShader() && paintCopy->getShader()
+ && paint->getShader()->getGenerationID() == paintCopy->getShader()->getGenerationID())) {
+ paintCopy = copyPaint(paint);
+ // replaceValueFor() performs an add if the entry doesn't exist
+ mPaintMap.replaceValueFor(paint, paintCopy);
}
return paintCopy;
DeferredBarrierType mDeferredBarrierType;
bool mHighContrastText;
- // -1 if unset, or SkXfermode::Mode value if set
- int mOverrideXfermode;
-
int mRestoreSaveCount;
friend class RenderNode;