From 22d4e7e3f34ebd01aac522a0a7022a43941e5269 Mon Sep 17 00:00:00 2001 From: Roozbeh Pournader Date: Mon, 6 Mar 2017 14:05:23 -0800 Subject: [PATCH] Remove sample directory Since there are no known users of Minikin outside Android yet, these files are simply a maintenance burden with no actual benefit. Removing the samples until there are potential external users. Test: Not needed Change-Id: If7f1fb775cae427fbe31b86c202d1380c701bf28 --- engine/src/flutter/sample/Android.mk | 69 ---------- engine/src/flutter/sample/MinikinSkia.cpp | 68 ---------- engine/src/flutter/sample/MinikinSkia.h | 40 ------ engine/src/flutter/sample/example.cpp | 100 -------------- engine/src/flutter/sample/example_skia.cpp | 150 --------------------- 5 files changed, 427 deletions(-) delete mode 100644 engine/src/flutter/sample/Android.mk delete mode 100644 engine/src/flutter/sample/MinikinSkia.cpp delete mode 100644 engine/src/flutter/sample/MinikinSkia.h delete mode 100644 engine/src/flutter/sample/example.cpp delete mode 100644 engine/src/flutter/sample/example_skia.cpp diff --git a/engine/src/flutter/sample/Android.mk b/engine/src/flutter/sample/Android.mk deleted file mode 100644 index c4a644d74d5..00000000000 --- a/engine/src/flutter/sample/Android.mk +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (C) 2013 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_C_INCLUDES += \ - external/harfbuzz_ng/src \ - external/freetype/include \ - frameworks/minikin/include - -LOCAL_SRC_FILES:= example.cpp - -LOCAL_SHARED_LIBRARIES += \ - libutils \ - liblog \ - libcutils \ - libharfbuzz_ng \ - libicuuc \ - libft2 \ - libpng \ - libz \ - libminikin - -LOCAL_MODULE:= minikin_example - -include $(BUILD_EXECUTABLE) - - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAG := tests - -LOCAL_C_INCLUDES += \ - external/harfbuzz_ng/src \ - external/freetype/include \ - frameworks/minikin/include \ - external/skia/src/core - -LOCAL_SRC_FILES:= example_skia.cpp \ - MinikinSkia.cpp - -LOCAL_SHARED_LIBRARIES += \ - libutils \ - liblog \ - libcutils \ - libharfbuzz_ng \ - libicuuc \ - libskia \ - libminikin \ - libft2 - -LOCAL_MODULE:= minikin_skia_example - -include $(BUILD_EXECUTABLE) diff --git a/engine/src/flutter/sample/MinikinSkia.cpp b/engine/src/flutter/sample/MinikinSkia.cpp deleted file mode 100644 index 1ba7cccb417..00000000000 --- a/engine/src/flutter/sample/MinikinSkia.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include - -#include -#include "MinikinSkia.h" - -namespace minikin { - -MinikinFontSkia::MinikinFontSkia(sk_sp typeface) : - MinikinFont(typeface->uniqueID()), - mTypeface(std::move(typeface)) { -} - -static void MinikinFontSkia_SetSkiaPaint(sk_sp typeface, SkPaint* skPaint, const MinikinPaint& paint) { - skPaint->setTypeface(std::move(typeface)); - skPaint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); - // TODO: set more paint parameters from Minikin - skPaint->setTextSize(paint.size); -} - -float MinikinFontSkia::GetHorizontalAdvance(uint32_t glyph_id, - const MinikinPaint &paint) const { - SkPaint skPaint; - uint16_t glyph16 = glyph_id; - SkScalar skWidth; - MinikinFontSkia_SetSkiaPaint(mTypeface, &skPaint, paint); - skPaint.getTextWidths(&glyph16, sizeof(glyph16), &skWidth, NULL); -#ifdef VERBOSE - ALOGD("width for typeface %d glyph %d = %f", mTypeface->uniqueID(), glyph_id -#endif - return skWidth; -} - -void MinikinFontSkia::GetBounds(MinikinRect* bounds, uint32_t glyph_id, - const MinikinPaint& paint) const { - SkPaint skPaint; - uint16_t glyph16 = glyph_id; - SkRect skBounds; - MinikinFontSkia_SetSkiaPaint(mTypeface, &skPaint, paint); - skPaint.getTextWidths(&glyph16, sizeof(glyph16), NULL, &skBounds); - bounds->mLeft = skBounds.fLeft; - bounds->mTop = skBounds.fTop; - bounds->mRight = skBounds.fRight; - bounds->mBottom = skBounds.fBottom; -} - -const void* MinikinFontSkia::GetTable(uint32_t tag, size_t* size, - MinikinDestroyFunc* destroy) const { - // we don't have a buffer to the font data, copy to own buffer - const size_t tableSize = mTypeface->getTableSize(tag); - *size = tableSize; - if (tableSize == 0) { - return nullptr; - } - void* buf = malloc(tableSize); - if (buf == nullptr) { - return nullptr; - } - mTypeface->getTableData(tag, 0, tableSize, buf); - *destroy = free; - return buf; -} - -SkTypeface *MinikinFontSkia::GetSkTypeface() const { - return mTypeface.get(); -} - -} // namespace minikin diff --git a/engine/src/flutter/sample/MinikinSkia.h b/engine/src/flutter/sample/MinikinSkia.h deleted file mode 100644 index 5ebf1b61617..00000000000 --- a/engine/src/flutter/sample/MinikinSkia.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -namespace minikin { - -class MinikinFontSkia : public MinikinFont { -public: - explicit MinikinFontSkia(sk_sp typeface); - - float GetHorizontalAdvance(uint32_t glyph_id, - const MinikinPaint &paint) const; - - void GetBounds(MinikinRect* bounds, uint32_t glyph_id, - const MinikinPaint& paint) const; - - const std::vector& GetAxes() const { - return mAxes; - } - const void* GetTable(uint32_t tag, size_t* size, MinikinDestroyFunc* destroy) const; - - SkTypeface *GetSkTypeface() const; - -private: - sk_sp mTypeface; - std::vector mAxes; -}; - -} // namespace minikin diff --git a/engine/src/flutter/sample/example.cpp b/engine/src/flutter/sample/example.cpp deleted file mode 100644 index 3df09050030..00000000000 --- a/engine/src/flutter/sample/example.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This is a test program that uses Minikin to layout and draw some text. -// At the moment, it just draws a string into /data/local/tmp/foo.pgm. - -#include -#include -#include - -#include -#include - -#include -#include - -using std::vector; -using namespace minikin; - -FT_Library library; // TODO: this should not be a global - -FontCollection *makeFontCollection() { - vector>typefaces; - const char *fns[] = { - "/system/fonts/Roboto-Regular.ttf", - "/system/fonts/Roboto-Italic.ttf", - "/system/fonts/Roboto-BoldItalic.ttf", - "/system/fonts/Roboto-Light.ttf", - "/system/fonts/Roboto-Thin.ttf", - "/system/fonts/Roboto-Bold.ttf", - "/system/fonts/Roboto-ThinItalic.ttf", - "/system/fonts/Roboto-LightItalic.ttf" - }; - - FT_Face face; - FT_Error error; - std::vector fonts; - for (size_t i = 0; i < sizeof(fns)/sizeof(fns[0]); i++) { - const char *fn = fns[i]; - printf("adding %s\n", fn); - error = FT_New_Face(library, fn, 0, &face); - if (error != 0) { - printf("error loading %s, %d\n", fn, error); - } - std::shared_ptr font(new MinikinFontFreeType(face)); - fonts.push_back(Font(font, FontStyle())); - } - std::shared_ptr family(new FontFamily(std::move(fonts))); - typefaces.push_back(family); - -#if 1 - const char *fn = "/system/fonts/DroidSansDevanagari-Regular.ttf"; - error = FT_New_Face(library, fn, 0, &face); - std::shared_ptr font(new MinikinFontFreeType(face)); - family.reset(new FontFamily(std::vector({ Font(font, FontStyle()) }))); - typefaces.push_back(family); -#endif - - return new FontCollection(typefaces); -} - -int runMinikinTest() { - FT_Error error = FT_Init_FreeType(&library); - if (error) { - return -1; - } - std::shared_ptr collection(makeFontCollection()); - Layout layout(collection); - const char *text = "fine world \xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa5\x87"; - int bidiFlags = 0; - FontStyle fontStyle; - MinikinPaint paint; - paint.size = 32; - icu::UnicodeString icuText = icu::UnicodeString::fromUTF8(text); - layout.doLayout(icuText.getBuffer(), 0, icuText.length(), icuText.length(), bidiFlags, fontStyle, paint); - layout.dump(); - Bitmap bitmap(250, 50); - layout.draw(&bitmap, 10, 40, 32); - std::ofstream o; - o.open("/data/local/tmp/foo.pgm", std::ios::out | std::ios::binary); - bitmap.writePnm(o); - return 0; -} - -int main() { - return runMinikinTest(); -} diff --git a/engine/src/flutter/sample/example_skia.cpp b/engine/src/flutter/sample/example_skia.cpp deleted file mode 100644 index 6fa788b9e77..00000000000 --- a/engine/src/flutter/sample/example_skia.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This is a test program that uses Minikin to layout and draw some text. -// At the moment, it just draws a string into /data/local/tmp/foo.pgm. - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include "MinikinSkia.h" - -using std::vector; - -namespace minikin { - -FT_Library library; // TODO: this should not be a global - -FontCollection *makeFontCollection() { - vector> typefaces; - const char *fns[] = { - "/system/fonts/Roboto-Regular.ttf", - "/system/fonts/Roboto-Italic.ttf", - "/system/fonts/Roboto-BoldItalic.ttf", - "/system/fonts/Roboto-Light.ttf", - "/system/fonts/Roboto-Thin.ttf", - "/system/fonts/Roboto-Bold.ttf", - "/system/fonts/Roboto-ThinItalic.ttf", - "/system/fonts/Roboto-LightItalic.ttf" - }; - - std::vector fonts; - for (size_t i = 0; i < sizeof(fns)/sizeof(fns[0]); i++) { - const char *fn = fns[i]; - sk_sp skFace = SkTypeface::MakeFromFile(fn); - std::shared_ptr font(new MinikinFontSkia(std::move(skFace))); - fonts.push_back(Font(font, FontStyle())); - } - std::shared_ptr family(new FontFamily(std::move(fonts))); - typefaces.push_back(family); - -#if 1 - const char *fn = "/system/fonts/DroidSansDevanagari-Regular.ttf"; - sk_sp skFace = SkTypeface::MakeFromFile(fn); - std::shared_ptr font(new MinikinFontSkia(std::move(skFace))); - family.reset(new FontFamily(std::vector({ Font(font, FontStyle()) }))); - typefaces.push_back(family); -#endif - return new FontCollection(typefaces); -} - -// Maybe move to MinikinSkia (esp. instead of opening GetSkTypeface publicly)? - -void drawToSkia(SkCanvas *canvas, SkPaint *paint, Layout *layout, float x, float y) { - size_t nGlyphs = layout->nGlyphs(); - uint16_t *glyphs = new uint16_t[nGlyphs]; - SkPoint *pos = new SkPoint[nGlyphs]; - SkTypeface *lastFace = NULL; - SkTypeface *skFace = NULL; - size_t start = 0; - - paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); - for (size_t i = 0; i < nGlyphs; i++) { - const MinikinFontSkia *mfs = static_cast(layout->getFont(i)); - skFace = mfs->GetSkTypeface(); - glyphs[i] = layout->getGlyphId(i); - pos[i].fX = x + layout->getX(i); - pos[i].fY = y + layout->getY(i); - if (i > 0 && skFace != lastFace) { - paint->setTypeface(sk_ref_sp(lastFace)); - canvas->drawPosText(glyphs + start, (i - start) << 1, pos + start, *paint); - start = i; - } - lastFace = skFace; - } - paint->setTypeface(sk_ref_sp(skFace)); - canvas->drawPosText(glyphs + start, (nGlyphs - start) << 1, pos + start, *paint); - delete[] glyphs; - delete[] pos; -} - -int runMinikinTest() { - FT_Error error = FT_Init_FreeType(&library); - if (error) { - return -1; - } - - std::shared_ptr collection(makeFontCollection()); - Layout layout(collection); - const char *text = "fine world \xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa5\x87"; - int bidiFlags = 0; - FontStyle fontStyle(7); - MinikinPaint minikinPaint; - minikinPaint.size = 32; - icu::UnicodeString icuText = icu::UnicodeString::fromUTF8(text); - layout.doLayout(icuText.getBuffer(), 0, icuText.length(), icuText.length(), bidiFlags, fontStyle, minikinPaint); - layout.dump(); - - SkAutoGraphics ag; - - int width = 800; - int height = 600; - SkBitmap bitmap; - bitmap.allocN32Pixels(width, height); - SkCanvas canvas(bitmap); - SkPaint paint; - paint.setARGB(255, 0, 0, 128); - paint.setStyle(SkPaint::kStroke_Style); - paint.setStrokeWidth(2); - paint.setTextSize(100); - paint.setAntiAlias(true); - canvas.drawLine(10, 300, 10 + layout.getAdvance(), 300, paint); - paint.setStyle(SkPaint::kFill_Style); - drawToSkia(&canvas, &paint, &layout, 10, 300); - - SkFILEWStream file("/data/local/tmp/foo.png"); - SkEncodeImage(&file, bitmap, SkEncodedImageFormat::kPNG, 100); - return 0; -} - -} // namespace minikin - -int main(int argc, const char** argv) { - return minikin::runMinikinTest(); -}