OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CCFontAtlas_h | 5 #ifndef CCFontAtlas_h |
6 #define CCFontAtlas_h | 6 #define CCFontAtlas_h |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "IntRect.h" | 12 #include "IntRect.h" |
13 #include "third_party/skia/include/core/SkBitmap.h" | 13 #include "third_party/skia/include/core/SkBitmap.h" |
14 | 14 |
15 class SkCanvas; | 15 class SkCanvas; |
16 | 16 |
17 namespace gfx { | 17 namespace gfx { |
18 class Point; | 18 class Point; |
19 } | 19 } |
20 | 20 |
21 namespace cc { | 21 namespace cc { |
22 | 22 |
23 class IntSize; | 23 class IntSize; |
24 | 24 |
25 // This class provides basic ability to draw text onto the heads-up display. | 25 // This class provides basic ability to draw text onto the heads-up display. |
26 class CCFontAtlas { | 26 class FontAtlas { |
27 public: | 27 public: |
28 static scoped_ptr<CCFontAtlas> create(SkBitmap bitmap, IntRect asciiToRectTa
ble[128], int fontHeight) | 28 static scoped_ptr<FontAtlas> create(SkBitmap bitmap, IntRect asciiToRectTabl
e[128], int fontHeight) |
29 { | 29 { |
30 return make_scoped_ptr(new CCFontAtlas(bitmap, asciiToRectTable, fontHei
ght)); | 30 return make_scoped_ptr(new FontAtlas(bitmap, asciiToRectTable, fontHeigh
t)); |
31 } | 31 } |
32 ~CCFontAtlas(); | 32 ~FontAtlas(); |
33 | 33 |
34 // Draws multiple lines of text where each line of text is separated by '\n'
. | 34 // Draws multiple lines of text where each line of text is separated by '\n'
. |
35 // - Correct glyphs will be drawn for ASCII codes in the range 32-127; any c
haracters | 35 // - Correct glyphs will be drawn for ASCII codes in the range 32-127; any c
haracters |
36 // outside that range will be displayed as a default rectangle glyph. | 36 // outside that range will be displayed as a default rectangle glyph. |
37 // - IntSize clip is used to avoid wasting time drawing things that are outs
ide the | 37 // - IntSize clip is used to avoid wasting time drawing things that are outs
ide the |
38 // target canvas bounds. | 38 // target canvas bounds. |
39 // - Should only be called only on the impl thread. | 39 // - Should only be called only on the impl thread. |
40 void drawText(SkCanvas*, const SkPaint&, const std::string& text, const gfx:
:Point& destPosition, const IntSize& clip) const; | 40 void drawText(SkCanvas*, const SkPaint&, const std::string& text, const gfx:
:Point& destPosition, const IntSize& clip) const; |
41 | 41 |
42 // Draws the entire atlas at the specified position, just for debugging purp
oses. | 42 // Draws the entire atlas at the specified position, just for debugging purp
oses. |
43 void drawDebugAtlas(SkCanvas*, const gfx::Point& destPosition) const; | 43 void drawDebugAtlas(SkCanvas*, const gfx::Point& destPosition) const; |
44 | 44 |
45 private: | 45 private: |
46 CCFontAtlas(SkBitmap, IntRect asciiToRectTable[128], int fontHeight); | 46 FontAtlas(SkBitmap, IntRect asciiToRectTable[128], int fontHeight); |
47 | 47 |
48 void drawOneLineOfTextInternal(SkCanvas*, const SkPaint&, const std::string&
, const gfx::Point& destPosition) const; | 48 void drawOneLineOfTextInternal(SkCanvas*, const SkPaint&, const std::string&
, const gfx::Point& destPosition) const; |
49 | 49 |
50 // The actual texture atlas containing all the pre-rendered glyphs. | 50 // The actual texture atlas containing all the pre-rendered glyphs. |
51 SkBitmap m_atlas; | 51 SkBitmap m_atlas; |
52 | 52 |
53 // The look-up tables mapping ascii characters to their IntRect locations on
the atlas. | 53 // The look-up tables mapping ascii characters to their IntRect locations on
the atlas. |
54 IntRect m_asciiToRectTable[128]; | 54 IntRect m_asciiToRectTable[128]; |
55 | 55 |
56 int m_fontHeight; | 56 int m_fontHeight; |
57 | 57 |
58 DISALLOW_COPY_AND_ASSIGN(CCFontAtlas); | 58 DISALLOW_COPY_AND_ASSIGN(FontAtlas); |
59 }; | 59 }; |
60 | 60 |
61 } // namespace cc | 61 } // namespace cc |
62 | 62 |
63 #endif | 63 #endif |
OLD | NEW |