11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include <jsapi.h> 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkJS.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayType.h" 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkAnimateColor.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkAnimateMaker.h" 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkAnimateSet.h" 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkAnimateTransform.h" 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkCanvas.h" 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDimensions.h" 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayAdd.h" 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayApply.h" 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDisplayBefore.h" 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayEvent.h" 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDisplayFocus.h" 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayInclude.h" 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayPost.h" 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayRandom.h" 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDraw3D.h" 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawBitmap.h" 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawClip.h" 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawDash.h" 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawDiscrete.h" 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawEmboss.h" 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDrawFont.h" 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawFull.h" 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawGradient.h" 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawLine.h" 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDrawMaskFilter.h" 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawMatrix.h" 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawOval.h" 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawPaint.h" 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawPath.h" 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawPoint.h" 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// #include "SkDrawStroke.h" 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawText.h" 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawTo.h" 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDrawTransferMode.h" 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawTransparentShader.h" 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//#include "SkDrawUse.h" 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkMatrixParts.h" 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPathParts.h" 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPostParts.h" 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkScript.h" 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkSnapshot.h" 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTextOnPath.h" 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTextToPath.h" 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkJSDisplayable { 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable() : fDisplayable(NULL) {} 610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ~SkJSDisplayable() { delete fDisplayable; } 620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static void Destructor(JSContext *cx, JSObject *obj); 630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static JSBool GetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); 640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static JSBool SetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); 650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static SkCanvas* gCanvas; 660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static SkPaint* gPaint; 670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static JSBool Draw(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); 680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayable* fDisplayable; 690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkCanvas* SkJSDisplayable::gCanvas; 720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkPaint* SkJSDisplayable::gPaint; 730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJSBool SkJSDisplayable::Draw(JSContext *cx, JSObject *obj, uintN argc, 750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project jsval *argv, jsval *rval) 760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project{ 770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable *p = (SkJSDisplayable*) JS_GetPrivate(cx, obj); 780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(p->fDisplayable->isDrawable()); 790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDrawable* drawable = (SkDrawable*) p->fDisplayable; 800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkAnimateMaker maker(NULL, gCanvas, gPaint); 810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project drawable->draw(maker); 820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return JS_TRUE; 830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJSFunctionSpec SkJSDisplayable_methods[] = 870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project{ 880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project { "draw", SkJSDisplayable::Draw, 1, 0, 0 }, 890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project { 0 } 900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic JSPropertySpec* gDisplayableProperties[kNumberOfTypes]; 930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic JSClass gDisplayableClasses[kNumberOfTypes]; 940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define JS_INIT(_prefix, _class) \ 960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic JSBool _class##Constructor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { \ 970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable* jsDisplayable = new SkJSDisplayable(); \ 980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project jsDisplayable->fDisplayable = new _prefix##_class(); \ 990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project JS_SetPrivate(cx, obj, (void*) jsDisplayable); \ 1000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return JS_TRUE; \ 1010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} \ 1020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project \ 1030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic JSObject* _class##Init(JSContext *cx, JSObject *obj, JSObject *proto) { \ 1040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project JSObject *newProtoObj = JS_InitClass(cx, obj, proto, &gDisplayableClasses[SkType_##_class], \ 1050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project _class##Constructor, 0, \ 1060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project NULL, SkJSDisplayable_methods , \ 1070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project NULL, NULL); \ 1080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project JS_DefineProperties(cx, newProtoObj, gDisplayableProperties[SkType_##_class]); \ 1090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return newProtoObj; \ 1100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 1110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Add) 1130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, AddCircle) 1140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, AddOval) 1150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, AddPath) 1160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, AddRectangle) 1170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, AddRoundRect) 1180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, After) 1190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Apply) 1200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(Sk, Animate) 1210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, AnimateColor) 1220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, AnimateField) 1230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, AnimateRotate) 1240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, AnimateScale) 1250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, AnimateTranslate) 1260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Bitmap) 1270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, BaseBitmap) 1280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, Before) 1290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, BitmapShader) 1300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Blur) 1310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Clip) 1320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Color) 1330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, CubicTo) 1340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Dash) 1350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Data) 1360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, Dimensions) 1370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Discrete) 1380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, DrawTo) 1390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Emboss) 1400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDisplay, Event) 1410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(SkDraw, Font) 1420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(Sk, Focus) 1430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Image) 1440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Include) 1450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(Sk, Input) 1460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Line) 1470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, LinearGradient) 1480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, LineTo) 1490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Matrix) 1500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Move) 1510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, MoveTo) 1520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Oval) 1530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Path) 1540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDraw, Paint) 1550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, DrawPoint) 1560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, PolyToPoly) 1570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Polygon) 1580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Polyline) 1590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Post) 1600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, QuadTo) 1610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, RadialGradient) 1620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(SkDisplay, Random) 1630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, RectToRect) 1640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Rectangle) 1650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Remove) 1660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Replace) 1670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Rotate) 1680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, RoundRect) 1690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Scale) 1700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Set) 1710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Skew) 1720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(Sk, 3D_Camera) 1730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(Sk, 3D_Patch) 1740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Snapshot) 1750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// JS_INIT(SkDraw, Stroke) 1760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Text) 1770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, TextOnPath) 1780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, TextToPath) 1790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJS_INIT(Sk, Translate) 1800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//JS_INIT(Sk, Use) 1810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0 1830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic void GenerateTables() { 1840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project for (int index = 0; index < kTypeNamesSize; index++) { 1850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int infoCount; 1860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes type = gTypeNames[index].fType; 1870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SkMemberInfo* info = SkDisplayType::GetMembers(NULL /* fMaker */, type, &infoCount); 1880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (info == NULL) 1890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project continue; 1900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableProperties[type] = new JSPropertySpec[infoCount + 1]; 1910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project JSPropertySpec* propertySpec = gDisplayableProperties[type]; 1920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project memset(propertySpec, 0, sizeof (JSPropertySpec) * (infoCount + 1)); 1930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project for (int inner = 0; inner < infoCount; inner++) { 1940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (info[inner].fType == SkType_BaseClassInfo) 1950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project continue; 1960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project propertySpec[inner].name = info[inner].fName; 1970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project propertySpec[inner].tinyid = inner; 1980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project propertySpec[inner].flags = JSPROP_ENUMERATE; 1990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 2000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].name = gTypeNames[index].fName; 2010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].flags = JSCLASS_HAS_PRIVATE; 2020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].addProperty = JS_PropertyStub; 2030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].delProperty = JS_PropertyStub; 2040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].getProperty = SkJSDisplayable::GetProperty; 2050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].setProperty = SkJSDisplayable::SetProperty; 2060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].enumerate = JS_EnumerateStub; 2070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].resolve = JS_ResolveStub; 2080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].convert = JS_ConvertStub; 2090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project gDisplayableClasses[type].finalize = SkJSDisplayable::Destructor; 2100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 2110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 2120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 2130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkJSDisplayable::Destructor(JSContext *cx, JSObject *obj) { 2150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project delete (SkJSDisplayable*) JS_GetPrivate(cx, obj); 2160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 2170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJSBool SkJSDisplayable::GetProperty(JSContext *cx, JSObject *obj, jsval id, 2190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project jsval *vp) 2200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project{ 2210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (JSVAL_IS_INT(id) == 0) 2220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return JS_TRUE; 2230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable *p = (SkJSDisplayable *) JS_GetPrivate(cx, obj); 2240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayable* displayable = p->fDisplayable; 2250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes displayableType = displayable->getType(); 2260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int members; 2270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SkMemberInfo* info = SkDisplayType::GetMembers(NULL /* fMaker */, displayableType, &members); 2280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int idIndex = JSVAL_TO_INT(id); 2290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(idIndex >= 0 && idIndex < members); 2300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project info = &info[idIndex]; 2310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes infoType = (SkDisplayTypes) info->fType; 2320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScalar scalar = 0; 2330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project S32 s32 = 0; 2340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString* string= NULL; 2350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project JSString *str; 2360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (infoType == SkType_MemberProperty) { 2370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project infoType = info->propertyType(); 2380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project switch (infoType) { 2390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Scalar: { 2400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScriptValue scriptValue; 2410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool success = displayable->getProperty(info->propertyIndex(), &scriptValue); 2420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(scriptValue.fType == SkType_Scalar); 2430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scalar = scriptValue.fOperand.fScalar; 2440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } break; 2450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project default: 2460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! unimplemented 2470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 2480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } else { 2490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(info->fCount == 1); 2500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project switch (infoType) { 2510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Boolean: 2520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Color: 2530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_S32: 2540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project s32 = *(S32*) info->memberData(displayable); 2550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_String: 2570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project info->getString(displayable, &string); 2580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Scalar: 2600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkOperand operand; 2610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project info->getValue(displayable, &operand, 1); 2620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scalar = operand.fScalar; 2630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project default: 2650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! unimplemented 2660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 2670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 2680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project switch (infoType) { 2690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Boolean: 2700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *vp = BOOLEAN_TO_JSVAL(s32); 2710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Color: 2730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_S32: 2740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *vp = INT_TO_JSVAL(s32); 2750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Scalar: 2770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (SkScalarFraction(scalar) == 0) 2780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *vp = INT_TO_JSVAL(SkScalarFloor(scalar)); 2790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project else 2800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_SCALAR_IS_FLOAT 2810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *vp = DOUBLE_TO_JSVAL(scalar); 2820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#else 2830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *vp = DOUBLE_TO_JSVAL(scalar / 65536.0f ); 2840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 2850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_String: 2870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project str = JS_NewStringCopyN(cx, string->c_str(), string->size()); 2880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *vp = STRING_TO_JSVAL(str); 2890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 2900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project default: 2910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! unimplemented 2920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 2930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return JS_TRUE; 2940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 2950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectJSBool SkJSDisplayable::SetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { 2970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (JSVAL_IS_INT(id) == 0) 2980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return JS_TRUE; 2990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable *p = (SkJSDisplayable *) JS_GetPrivate(cx, obj); 3000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayable* displayable = p->fDisplayable; 3010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes displayableType = displayable->getType(); 3020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int members; 3030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SkMemberInfo* info = SkDisplayType::GetMembers(NULL /* fMaker */, displayableType, &members); 3040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int idIndex = JSVAL_TO_INT(id); 3050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(idIndex >= 0 && idIndex < members); 3060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project info = &info[idIndex]; 3070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes infoType = info->getType(); 3080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScalar scalar = 0; 3090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project S32 s32 = 0; 3100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString string; 3110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project JSString* str; 3120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project jsval value = *vp; 3130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project switch (infoType) { 3140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Boolean: 3150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project s32 = JSVAL_TO_BOOLEAN(value); 3160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Color: 3180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_S32: 3190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project s32 = JSVAL_TO_INT(value); 3200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Scalar: 3220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (JSVAL_IS_INT(value)) 3230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scalar = SkIntToScalar(JSVAL_TO_INT(value)); 3240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project else { 3250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(JSVAL_IS_DOUBLE(value)); 3260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_SCALAR_IS_FLOAT 3270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scalar = (float) *(double*) JSVAL_TO_DOUBLE(value); 3280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#else 3290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scalar = (SkFixed) (*(double*)JSVAL_TO_DOUBLE(value) * 65536.0); 3300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 3310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 3320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_String: 3340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project str = JS_ValueToString(cx, value); 3350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project string.set(JS_GetStringBytes(str)); 3360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project default: 3380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! unimplemented 3390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 3400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (info->fType == SkType_MemberProperty) { 3410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project switch (infoType) { 3420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Scalar: { 3430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScriptValue scriptValue; 3440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scriptValue.fType = SkType_Scalar; 3450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project scriptValue.fOperand.fScalar = scalar; 3460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project displayable->setProperty(-1 - (int) info->fOffset, scriptValue); 3470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } break; 3480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project default: 3490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! unimplemented 3500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 3510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } else { 3520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(info->fCount == 1); 3530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project switch (infoType) { 3540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Boolean: 3550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Color: 3560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_S32: 3570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project s32 = *(S32*) ((const char*) displayable + info->fOffset); 3580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_String: 3600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project info->setString(displayable, &string); 3610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project case SkType_Scalar: 3630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkOperand operand; 3640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project operand.fScalar = scalar; 3650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project info->setValue(displayable, &operand, 1); 3660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project break; 3670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project default: 3680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! unimplemented 3690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 3700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 3710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return JS_TRUE; 3720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 3730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 3740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkJS::InitializeDisplayables(const SkBitmap& bitmap, JSContext *cx, JSObject *obj, JSObject *proto) { 3750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable::gCanvas = new SkCanvas(bitmap); 3760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkJSDisplayable::gPaint = new SkPaint(); 3770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0 3780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project GenerateTables(); 3790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#else 3800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(0); // !!! compressed version hasn't been implemented 3810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 3820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AddInit(cx, obj, proto); 3830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AddCircleInit(cx, obj, proto); 3840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AddOvalInit(cx, obj, proto); 3850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AddPathInit(cx, obj, proto); 3860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AddRectangleInit(cx, obj, proto); 3870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AddRoundRectInit(cx, obj, proto); 3880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// AfterInit(cx, obj, proto); 3890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ApplyInit(cx, obj, proto); 3900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // AnimateInit(cx, obj, proto); 3910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// AnimateColorInit(cx, obj, proto); 3920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project AnimateFieldInit(cx, obj, proto); 3930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// AnimateRotateInit(cx, obj, proto); 3940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// AnimateScaleInit(cx, obj, proto); 3950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// AnimateTranslateInit(cx, obj, proto); 3960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project BitmapInit(cx, obj, proto); 3970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// BaseBitmapInit(cx, obj, proto); 3980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// BeforeInit(cx, obj, proto); 3990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project BitmapShaderInit(cx, obj, proto); 4000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project BlurInit(cx, obj, proto); 4010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ClipInit(cx, obj, proto); 4020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ColorInit(cx, obj, proto); 4030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project CubicToInit(cx, obj, proto); 4040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DashInit(cx, obj, proto); 4050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DataInit(cx, obj, proto); 4060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// DimensionsInit(cx, obj, proto); 4070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DiscreteInit(cx, obj, proto); 4080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DrawToInit(cx, obj, proto); 4090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project EmbossInit(cx, obj, proto); 4100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project EventInit(cx, obj, proto); 4110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// FontInit(cx, obj, proto); 4120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// FocusInit(cx, obj, proto); 4130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ImageInit(cx, obj, proto); 4140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project IncludeInit(cx, obj, proto); 4150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// InputInit(cx, obj, proto); 4160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project LineInit(cx, obj, proto); 4170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project LinearGradientInit(cx, obj, proto); 4180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project LineToInit(cx, obj, proto); 4190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project MatrixInit(cx, obj, proto); 4200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project MoveInit(cx, obj, proto); 4210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project MoveToInit(cx, obj, proto); 4220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project OvalInit(cx, obj, proto); 4230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PathInit(cx, obj, proto); 4240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PaintInit(cx, obj, proto); 4250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DrawPointInit(cx, obj, proto); 4260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PolyToPolyInit(cx, obj, proto); 4270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PolygonInit(cx, obj, proto); 4280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PolylineInit(cx, obj, proto); 4290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PostInit(cx, obj, proto); 4300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project QuadToInit(cx, obj, proto); 4310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RadialGradientInit(cx, obj, proto); 4320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RandomInit(cx, obj, proto); 4330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RectToRectInit(cx, obj, proto); 4340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RectangleInit(cx, obj, proto); 4350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RemoveInit(cx, obj, proto); 4360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ReplaceInit(cx, obj, proto); 4370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RotateInit(cx, obj, proto); 4380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project RoundRectInit(cx, obj, proto); 4390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project ScaleInit(cx, obj, proto); 4400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SetInit(cx, obj, proto); 4410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkewInit(cx, obj, proto); 4420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // 3D_CameraInit(cx, obj, proto); 4430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // 3D_PatchInit(cx, obj, proto); 4440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SnapshotInit(cx, obj, proto); 4450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// StrokeInit(cx, obj, proto); 4460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project TextInit(cx, obj, proto); 4470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project TextOnPathInit(cx, obj, proto); 4480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project TextToPathInit(cx, obj, proto); 4490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project TranslateInit(cx, obj, proto); 4500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// UseInit(cx, obj, proto); 4510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 4520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 4530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkJS::DisposeDisplayables() { 4540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project delete SkJSDisplayable::gPaint; 4550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project delete SkJSDisplayable::gCanvas; 4560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project for (int index = 0; index < kTypeNamesSize; index++) { 4570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes type = gTypeNames[index].fType; 4580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project delete[] gDisplayableProperties[type]; 4590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 4600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 461