| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SampleApp.h" | 8 #include "SampleApp.h" |
| 9 | 9 |
| 10 #include "OverView.h" | 10 #include "OverView.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 #ifdef PIPE_FILE | 70 #ifdef PIPE_FILE |
| 71 #define FILE_PATH "/path/to/drawing.data" | 71 #define FILE_PATH "/path/to/drawing.data" |
| 72 #endif | 72 #endif |
| 73 | 73 |
| 74 #define PIPE_NETx | 74 #define PIPE_NETx |
| 75 #ifdef PIPE_NET | 75 #ifdef PIPE_NET |
| 76 #include "SkSockets.h" | 76 #include "SkSockets.h" |
| 77 SkTCPServer gServer; | 77 SkTCPServer gServer; |
| 78 #endif | 78 #endif |
| 79 | 79 |
| 80 #define USE_ARROWS_FOR_ZOOM true | |
| 81 | |
| 82 #if SK_ANGLE | 80 #if SK_ANGLE |
| 83 //#define DEFAULT_TO_ANGLE 1 | 81 //#define DEFAULT_TO_ANGLE 1 |
| 84 #else | 82 #else |
| 85 #define DEFAULT_TO_GPU 0 // if 1 default rendering is on GPU | 83 #define DEFAULT_TO_GPU 0 // if 1 default rendering is on GPU |
| 86 #endif | 84 #endif |
| 87 | 85 |
| 88 #define ANIMATING_EVENTTYPE "nextSample" | 86 #define ANIMATING_EVENTTYPE "nextSample" |
| 89 #define ANIMATING_DELAY 250 | 87 #define ANIMATING_DELAY 250 |
| 90 | 88 |
| 91 #ifdef SK_DEBUG | 89 #ifdef SK_DEBUG |
| (...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 fDeviceType = kRaster_DeviceType; | 786 fDeviceType = kRaster_DeviceType; |
| 789 | 787 |
| 790 #if DEFAULT_TO_GPU | 788 #if DEFAULT_TO_GPU |
| 791 fDeviceType = kGPU_DeviceType; | 789 fDeviceType = kGPU_DeviceType; |
| 792 #endif | 790 #endif |
| 793 #if SK_ANGLE && DEFAULT_TO_ANGLE | 791 #if SK_ANGLE && DEFAULT_TO_ANGLE |
| 794 fDeviceType = kANGLE_DeviceType; | 792 fDeviceType = kANGLE_DeviceType; |
| 795 #endif | 793 #endif |
| 796 | 794 |
| 797 fUseClip = false; | 795 fUseClip = false; |
| 798 fNClip = false; | |
| 799 fAnimating = false; | 796 fAnimating = false; |
| 800 fRotate = false; | 797 fRotate = false; |
| 801 fPerspAnim = false; | 798 fPerspAnim = false; |
| 802 fRequestGrabImage = false; | 799 fRequestGrabImage = false; |
| 803 fPipeState = SkOSMenu::kOffState; | 800 fPipeState = SkOSMenu::kOffState; |
| 804 fTilingMode = kNo_Tiling; | 801 fTilingMode = kNo_Tiling; |
| 805 fMeasureFPS = false; | 802 fMeasureFPS = false; |
| 806 fLCDState = SkOSMenu::kMixedState; | 803 fLCDState = SkOSMenu::kMixedState; |
| 807 fAAState = SkOSMenu::kMixedState; | 804 fAAState = SkOSMenu::kMixedState; |
| 808 fSubpixelState = SkOSMenu::kMixedState; | 805 fSubpixelState = SkOSMenu::kMixedState; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 897 "Down and Right", "Down", "Down and Left", | 894 "Down and Right", "Down", "Down and Left", |
| 898 "Left", "Up and Left", NULL); | 895 "Left", "Up and Left", NULL); |
| 899 fAppMenu->assignKeyEquivalentToItem(itemID, 'k'); | 896 fAppMenu->assignKeyEquivalentToItem(itemID, 'k'); |
| 900 itemID = fAppMenu->appendAction("Save to PDF", sinkID); | 897 itemID = fAppMenu->appendAction("Save to PDF", sinkID); |
| 901 fAppMenu->assignKeyEquivalentToItem(itemID, 'e'); | 898 fAppMenu->assignKeyEquivalentToItem(itemID, 'e'); |
| 902 | 899 |
| 903 this->addMenu(fAppMenu); | 900 this->addMenu(fAppMenu); |
| 904 fSlideMenu = new SkOSMenu; | 901 fSlideMenu = new SkOSMenu; |
| 905 this->addMenu(fSlideMenu); | 902 this->addMenu(fSlideMenu); |
| 906 | 903 |
| 907 this->setColorType(kN32_SkColorType); | |
| 908 this->setVisibleP(true); | 904 this->setVisibleP(true); |
| 909 this->setClipToBounds(false); | 905 this->setClipToBounds(false); |
| 910 | 906 |
| 911 this->loadView((*fSamples[fCurrIndex])()); | 907 this->loadView((*fSamples[fCurrIndex])()); |
| 912 | 908 |
| 913 if (NULL == devManager) { | 909 if (NULL == devManager) { |
| 914 fDevManager = new DefaultDeviceManager(); | 910 fDevManager = new DefaultDeviceManager(); |
| 915 } else { | 911 } else { |
| 916 devManager->ref(); | 912 devManager->ref(); |
| 917 fDevManager = devManager; | 913 fDevManager = devManager; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 958 } | 954 } |
| 959 | 955 |
| 960 static SkBitmap capture_bitmap(SkCanvas* canvas) { | 956 static SkBitmap capture_bitmap(SkCanvas* canvas) { |
| 961 SkBitmap bm; | 957 SkBitmap bm; |
| 962 if (bm.tryAllocPixels(canvas->imageInfo())) { | 958 if (bm.tryAllocPixels(canvas->imageInfo())) { |
| 963 canvas->readPixels(&bm, 0, 0); | 959 canvas->readPixels(&bm, 0, 0); |
| 964 } | 960 } |
| 965 return bm; | 961 return bm; |
| 966 } | 962 } |
| 967 | 963 |
| 968 static bool bitmap_diff(SkCanvas* canvas, const SkBitmap& orig, | 964 static void drawText(SkCanvas* canvas, SkString str, SkScalar left, SkScalar top
, SkPaint& paint) { |
| 969 SkBitmap* diff) { | |
| 970 SkBitmap src = capture_bitmap(canvas); | |
| 971 | |
| 972 SkAutoLockPixels alp0(src); | |
| 973 SkAutoLockPixels alp1(orig); | |
| 974 for (int y = 0; y < src.height(); y++) { | |
| 975 const void* srcP = src.getAddr(0, y); | |
| 976 const void* origP = orig.getAddr(0, y); | |
| 977 size_t bytes = src.width() * src.bytesPerPixel(); | |
| 978 if (memcmp(srcP, origP, bytes)) { | |
| 979 SkDebugf("---------- difference on line %d\n", y); | |
| 980 return true; | |
| 981 } | |
| 982 } | |
| 983 return false; | |
| 984 } | |
| 985 | |
| 986 static void drawText(SkCanvas* canvas, SkString string, SkScalar left, SkScalar
top, SkPaint& paint) | |
| 987 { | |
| 988 SkColor desiredColor = paint.getColor(); | 965 SkColor desiredColor = paint.getColor(); |
| 989 paint.setColor(SK_ColorWHITE); | 966 paint.setColor(SK_ColorWHITE); |
| 990 const char* c_str = string.c_str(); | 967 const char* c_str = str.c_str(); |
| 991 size_t size = string.size(); | 968 size_t size = str.size(); |
| 992 SkRect bounds; | 969 SkRect bounds; |
| 993 paint.measureText(c_str, size, &bounds); | 970 paint.measureText(c_str, size, &bounds); |
| 994 bounds.offset(left, top); | 971 bounds.offset(left, top); |
| 995 SkScalar inset = SkIntToScalar(-2); | 972 SkScalar inset = SkIntToScalar(-2); |
| 996 bounds.inset(inset, inset); | 973 bounds.inset(inset, inset); |
| 997 canvas->drawRect(bounds, paint); | 974 canvas->drawRect(bounds, paint); |
| 998 if (desiredColor != SK_ColorBLACK) { | 975 if (desiredColor != SK_ColorBLACK) { |
| 999 paint.setColor(SK_ColorBLACK); | 976 paint.setColor(SK_ColorBLACK); |
| 1000 canvas->drawText(c_str, size, left + SK_Scalar1, top + SK_Scalar1, paint
); | 977 canvas->drawText(c_str, size, left + SK_Scalar1, top + SK_Scalar1, paint
); |
| 1001 } | 978 } |
| 1002 paint.setColor(desiredColor); | 979 paint.setColor(desiredColor); |
| 1003 canvas->drawText(c_str, size, left, top, paint); | 980 canvas->drawText(c_str, size, left, top, paint); |
| 1004 } | 981 } |
| 1005 | 982 |
| 1006 #define XCLIP_N 8 | 983 #define XCLIP_N 8 |
| 1007 #define YCLIP_N 8 | 984 #define YCLIP_N 8 |
| 1008 | 985 |
| 1009 void SampleWindow::draw(SkCanvas* canvas) { | 986 void SampleWindow::draw(SkCanvas* canvas) { |
| 1010 gAnimTimer.updateTime(); | 987 gAnimTimer.updateTime(); |
| 1011 | 988 |
| 1012 if (fGesture.isActive()) { | 989 if (fGesture.isActive()) { |
| 1013 this->updateMatrix(); | 990 this->updateMatrix(); |
| 1014 } | 991 } |
| 1015 | 992 |
| 1016 if (fMeasureFPS) { | 993 if (fMeasureFPS) { |
| 1017 fMeasureFPS_Time = 0; | 994 fMeasureFPS_Time = 0; |
| 1018 } | 995 } |
| 1019 | 996 |
| 1020 if (fNClip) { | 997 SkSize tile = this->tileSize(); |
| 1021 this->INHERITED::draw(canvas); | |
| 1022 SkBitmap orig = capture_bitmap(canvas); | |
| 1023 | 998 |
| 1024 const SkScalar w = this->width(); | 999 if (kNo_Tiling == fTilingMode) { |
| 1025 const SkScalar h = this->height(); | 1000 this->INHERITED::draw(canvas); // no looping or surfaces needed |
| 1026 const SkScalar cw = w / XCLIP_N; | 1001 } else { |
| 1027 const SkScalar ch = h / YCLIP_N; | 1002 const int w = SkScalarRoundToInt(tile.width()); |
| 1028 for (int y = 0; y < YCLIP_N; y++) { | 1003 const int h = SkScalarRoundToInt(tile.height()); |
| 1029 SkRect r; | 1004 SkImageInfo info = SkImageInfo::MakeN32Premul(w, h); |
| 1030 r.fTop = y * ch; | 1005 SkAutoTUnref<SkSurface> surface(canvas->newSurface(info)); |
| 1031 r.fBottom = (y + 1) * ch; | 1006 SkCanvas* tileCanvas = surface->getCanvas(); |
| 1032 if (y == YCLIP_N - 1) { | 1007 |
| 1033 r.fBottom = h; | 1008 for (SkScalar y = 0; y < height(); y += tile.height()) { |
| 1034 } | 1009 for (SkScalar x = 0; x < width(); x += tile.width()) { |
| 1035 for (int x = 0; x < XCLIP_N; x++) { | 1010 SkAutoCanvasRestore acr(tileCanvas, true); |
| 1036 SkAutoCanvasRestore acr(canvas, true); | 1011 tileCanvas->translate(-x, -y); |
| 1037 r.fLeft = x * cw; | 1012 tileCanvas->clear(0); |
| 1038 r.fRight = (x + 1) * cw; | 1013 this->INHERITED::draw(tileCanvas); |
| 1039 if (x == XCLIP_N - 1) { | 1014 surface->draw(canvas, x, y, NULL); |
| 1040 r.fRight = w; | |
| 1041 } | |
| 1042 canvas->clipRect(r); | |
| 1043 this->INHERITED::draw(canvas); | |
| 1044 } | 1015 } |
| 1045 } | 1016 } |
| 1046 | 1017 |
| 1047 SkBitmap diff; | 1018 // for drawing the borders between tiles |
| 1048 if (bitmap_diff(canvas, orig, &diff)) { | 1019 SkPaint paint; |
| 1049 } | 1020 paint.setColor(0x60FF00FF); |
| 1050 } else { | 1021 paint.setStyle(SkPaint::kStroke_Style); |
| 1051 SkSize tile = this->tileSize(); | |
| 1052 | 1022 |
| 1053 if (kNo_Tiling == fTilingMode) { | 1023 for (SkScalar y = 0; y < height(); y += tile.height()) { |
| 1054 this->INHERITED::draw(canvas); // no looping or surfaces needed | 1024 for (SkScalar x = 0; x < width(); x += tile.width()) { |
| 1055 } else { | 1025 canvas->drawRect(SkRect::MakeXYWH(x, y, tile.width(), tile.heigh
t()), paint); |
| 1056 const int w = SkScalarRoundToInt(tile.width()); | |
| 1057 const int h = SkScalarRoundToInt(tile.height()); | |
| 1058 SkImageInfo info = SkImageInfo::MakeN32Premul(w, h); | |
| 1059 SkAutoTUnref<SkSurface> surface(canvas->newSurface(info)); | |
| 1060 SkCanvas* tileCanvas = surface->getCanvas(); | |
| 1061 | |
| 1062 for (SkScalar y = 0; y < height(); y += tile.height()) { | |
| 1063 for (SkScalar x = 0; x < width(); x += tile.width()) { | |
| 1064 SkAutoCanvasRestore acr(tileCanvas, true); | |
| 1065 tileCanvas->translate(-x, -y); | |
| 1066 tileCanvas->clear(0); | |
| 1067 this->INHERITED::draw(tileCanvas); | |
| 1068 surface->draw(canvas, x, y, NULL); | |
| 1069 } | |
| 1070 } | |
| 1071 | |
| 1072 // for drawing the borders between tiles | |
| 1073 SkPaint paint; | |
| 1074 paint.setColor(0x60FF00FF); | |
| 1075 paint.setStyle(SkPaint::kStroke_Style); | |
| 1076 | |
| 1077 for (SkScalar y = 0; y < height(); y += tile.height()) { | |
| 1078 for (SkScalar x = 0; x < width(); x += tile.width()) { | |
| 1079 canvas->drawRect(SkRect::MakeXYWH(x, y, tile.width(), tile.h
eight()), paint); | |
| 1080 } | |
| 1081 } | 1026 } |
| 1082 } | 1027 } |
| 1083 } | 1028 } |
| 1029 |
| 1084 if (fShowZoomer && !fSaveToPdf) { | 1030 if (fShowZoomer && !fSaveToPdf) { |
| 1085 showZoomer(canvas); | 1031 showZoomer(canvas); |
| 1086 } | 1032 } |
| 1087 if (fMagnify && !fSaveToPdf) { | 1033 if (fMagnify && !fSaveToPdf) { |
| 1088 magnify(canvas); | 1034 magnify(canvas); |
| 1089 } | 1035 } |
| 1090 | 1036 |
| 1091 if (fMeasureFPS && fMeasureFPS_Time) { | 1037 if (fMeasureFPS && fMeasureFPS_Time) { |
| 1092 this->updateTitle(); | 1038 this->updateTitle(); |
| 1093 this->postInvalDelay(); | 1039 this->postInvalDelay(); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1389 } | 1335 } |
| 1390 if (fPerspAnim || fRotate) { | 1336 if (fPerspAnim || fRotate) { |
| 1391 this->inval(NULL); | 1337 this->inval(NULL); |
| 1392 } | 1338 } |
| 1393 } | 1339 } |
| 1394 | 1340 |
| 1395 void SampleWindow::afterChild(SkView* child, SkCanvas* canvas) { | 1341 void SampleWindow::afterChild(SkView* child, SkCanvas* canvas) { |
| 1396 canvas->setDrawFilter(NULL); | 1342 canvas->setDrawFilter(NULL); |
| 1397 } | 1343 } |
| 1398 | 1344 |
| 1399 static SkColorType gColorTypeCycle[] = { | |
| 1400 kUnknown_SkColorType, // none -> none | |
| 1401 kUnknown_SkColorType, // a8 -> none | |
| 1402 kN32_SkColorType, // 565 -> 8888 | |
| 1403 kN32_SkColorType, // 4444 -> 8888 | |
| 1404 kRGB_565_SkColorType, // 8888 -> 565 | |
| 1405 kRGB_565_SkColorType, // 8888 -> 565 | |
| 1406 kUnknown_SkColorType, // index8 -> none | |
| 1407 }; | |
| 1408 | |
| 1409 static SkColorType cycle_colortypes(SkColorType c) { | |
| 1410 return gColorTypeCycle[c]; | |
| 1411 } | |
| 1412 | |
| 1413 void SampleWindow::changeZoomLevel(float delta) { | 1345 void SampleWindow::changeZoomLevel(float delta) { |
| 1414 fZoomLevel += delta; | 1346 fZoomLevel += delta; |
| 1415 if (fZoomLevel > 0) { | 1347 if (fZoomLevel > 0) { |
| 1416 fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL); | 1348 fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL); |
| 1417 fZoomScale = fZoomLevel + SK_Scalar1; | 1349 fZoomScale = fZoomLevel + SK_Scalar1; |
| 1418 } else if (fZoomLevel < 0) { | 1350 } else if (fZoomLevel < 0) { |
| 1419 fZoomLevel = SkMaxScalar(fZoomLevel, MIN_ZOOM_LEVEL); | 1351 fZoomLevel = SkMaxScalar(fZoomLevel, MIN_ZOOM_LEVEL); |
| 1420 fZoomScale = SK_Scalar1 / (SK_Scalar1 - fZoomLevel); | 1352 fZoomScale = SK_Scalar1 / (SK_Scalar1 - fZoomLevel); |
| 1421 } else { | 1353 } else { |
| 1422 fZoomScale = SK_Scalar1; | 1354 fZoomScale = SK_Scalar1; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1505 this->updateTitle(); | 1437 this->updateTitle(); |
| 1506 return true; | 1438 return true; |
| 1507 } | 1439 } |
| 1508 if (evt.isType(ANIMATING_EVENTTYPE)) { | 1440 if (evt.isType(ANIMATING_EVENTTYPE)) { |
| 1509 if (fAnimating) { | 1441 if (fAnimating) { |
| 1510 this->nextSample(); | 1442 this->nextSample(); |
| 1511 this->postAnimatingEvent(); | 1443 this->postAnimatingEvent(); |
| 1512 } | 1444 } |
| 1513 return true; | 1445 return true; |
| 1514 } | 1446 } |
| 1515 if (evt.isType("replace-transition-view")) { | |
| 1516 this->loadView((SkView*)SkEventSink::FindSink(evt.getFast32())); | |
| 1517 return true; | |
| 1518 } | |
| 1519 if (evt.isType("set-curr-index")) { | 1447 if (evt.isType("set-curr-index")) { |
| 1520 this->goToSample(evt.getFast32()); | 1448 this->goToSample(evt.getFast32()); |
| 1521 return true; | 1449 return true; |
| 1522 } | 1450 } |
| 1523 if (isInvalEvent(evt)) { | 1451 if (isInvalEvent(evt)) { |
| 1524 this->inval(NULL); | 1452 this->inval(NULL); |
| 1525 return true; | 1453 return true; |
| 1526 } | 1454 } |
| 1527 int selected = -1; | 1455 int selected = -1; |
| 1528 if (SkOSMenu::FindListIndex(evt, "Device Type", &selected)) { | 1456 if (SkOSMenu::FindListIndex(evt, "Device Type", &selected)) { |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1791 if (this->nextSample()) { | 1719 if (this->nextSample()) { |
| 1792 return true; | 1720 return true; |
| 1793 } | 1721 } |
| 1794 break; | 1722 break; |
| 1795 case kLeft_SkKey: | 1723 case kLeft_SkKey: |
| 1796 if (this->previousSample()) { | 1724 if (this->previousSample()) { |
| 1797 return true; | 1725 return true; |
| 1798 } | 1726 } |
| 1799 return true; | 1727 return true; |
| 1800 case kUp_SkKey: | 1728 case kUp_SkKey: |
| 1801 if (USE_ARROWS_FOR_ZOOM) { | 1729 this->changeZoomLevel(1.f / 32.f); |
| 1802 this->changeZoomLevel(1.f / 32.f); | |
| 1803 } else { | |
| 1804 fNClip = !fNClip; | |
| 1805 this->inval(NULL); | |
| 1806 this->updateTitle(); | |
| 1807 } | |
| 1808 return true; | 1730 return true; |
| 1809 case kDown_SkKey: | 1731 case kDown_SkKey: |
| 1810 if (USE_ARROWS_FOR_ZOOM) { | 1732 this->changeZoomLevel(-1.f / 32.f); |
| 1811 this->changeZoomLevel(-1.f / 32.f); | |
| 1812 } else { | |
| 1813 this->setColorType(cycle_colortypes(this->getBitmap().colorType(
))); | |
| 1814 this->updateTitle(); | |
| 1815 } | |
| 1816 return true; | 1733 return true; |
| 1817 case kOK_SkKey: { | 1734 case kOK_SkKey: { |
| 1818 SkString title; | 1735 SkString title; |
| 1819 if (curr_title(this, &title)) { | 1736 if (curr_title(this, &title)) { |
| 1820 writeTitleToPrefs(title.c_str()); | 1737 writeTitleToPrefs(title.c_str()); |
| 1821 } | 1738 } |
| 1822 return true; | 1739 return true; |
| 1823 } | 1740 } |
| 1824 case kBack_SkKey: | 1741 case kBack_SkKey: |
| 1825 this->showOverview(); | 1742 this->showOverview(); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1972 | 1889 |
| 1973 if (fTilingMode != kNo_Tiling) { | 1890 if (fTilingMode != kNo_Tiling) { |
| 1974 title.prependf("<T: %s> ", gTilingInfo[fTilingMode].label); | 1891 title.prependf("<T: %s> ", gTilingInfo[fTilingMode].label); |
| 1975 } | 1892 } |
| 1976 if (fAnimating) { | 1893 if (fAnimating) { |
| 1977 title.prepend("<A> "); | 1894 title.prepend("<A> "); |
| 1978 } | 1895 } |
| 1979 if (fRotate) { | 1896 if (fRotate) { |
| 1980 title.prepend("<R> "); | 1897 title.prepend("<R> "); |
| 1981 } | 1898 } |
| 1982 if (fNClip) { | |
| 1983 title.prepend("<C> "); | |
| 1984 } | |
| 1985 if (fPerspAnim) { | 1899 if (fPerspAnim) { |
| 1986 title.prepend("<K> "); | 1900 title.prepend("<K> "); |
| 1987 } | 1901 } |
| 1988 if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDistanceFieldFonts
_Flag) { | 1902 if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDistanceFieldFonts
_Flag) { |
| 1989 title.prepend("<DFF> "); | 1903 title.prepend("<DFF> "); |
| 1990 } | 1904 } |
| 1991 | 1905 |
| 1992 title.prepend(trystate_str(fLCDState, "LCD ", "lcd ")); | 1906 title.prepend(trystate_str(fLCDState, "LCD ", "lcd ")); |
| 1993 title.prepend(trystate_str(fAAState, "AA ", "aa ")); | 1907 title.prepend(trystate_str(fAAState, "AA ", "aa ")); |
| 1994 title.prepend(gFilterLevelStates[fFilterLevelIndex].fLabel); | 1908 title.prepend(gFilterLevelStates[fFilterLevelIndex].fLabel); |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2367 setenv("ANDROID_ROOT", "/android/device/data", 0); | 2281 setenv("ANDROID_ROOT", "/android/device/data", 0); |
| 2368 #endif | 2282 #endif |
| 2369 SkGraphics::Init(); | 2283 SkGraphics::Init(); |
| 2370 SkEvent::Init(); | 2284 SkEvent::Init(); |
| 2371 } | 2285 } |
| 2372 | 2286 |
| 2373 void application_term() { | 2287 void application_term() { |
| 2374 SkEvent::Term(); | 2288 SkEvent::Term(); |
| 2375 SkGraphics::Term(); | 2289 SkGraphics::Term(); |
| 2376 } | 2290 } |
| OLD | NEW |