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 class Size; |
19 } | 20 } |
20 | 21 |
21 namespace cc { | 22 namespace cc { |
22 | 23 |
23 class IntSize; | |
24 | |
25 // This class provides basic ability to draw text onto the heads-up display. | 24 // This class provides basic ability to draw text onto the heads-up display. |
26 class FontAtlas { | 25 class FontAtlas { |
27 public: | 26 public: |
28 static scoped_ptr<FontAtlas> create(SkBitmap bitmap, IntRect asciiToRectTabl
e[128], int fontHeight) | 27 static scoped_ptr<FontAtlas> create(SkBitmap bitmap, IntRect asciiToRectTabl
e[128], int fontHeight) |
29 { | 28 { |
30 return make_scoped_ptr(new FontAtlas(bitmap, asciiToRectTable, fontHeigh
t)); | 29 return make_scoped_ptr(new FontAtlas(bitmap, asciiToRectTable, fontHeigh
t)); |
31 } | 30 } |
32 ~FontAtlas(); | 31 ~FontAtlas(); |
33 | 32 |
34 // Draws multiple lines of text where each line of text is separated by '\n'
. | 33 // 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 | 34 // - 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. | 35 // 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 | 36 // - gfx::Size clip is used to avoid wasting time drawing things that are ou
tside the |
38 // target canvas bounds. | 37 // target canvas bounds. |
39 // - Should only be called only on the impl thread. | 38 // - 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; | 39 void drawText(SkCanvas*, const SkPaint&, const std::string& text, const gfx:
:Point& destPosition, const gfx::Size& clip) const; |
41 | 40 |
42 // Draws the entire atlas at the specified position, just for debugging purp
oses. | 41 // Draws the entire atlas at the specified position, just for debugging purp
oses. |
43 void drawDebugAtlas(SkCanvas*, const gfx::Point& destPosition) const; | 42 void drawDebugAtlas(SkCanvas*, const gfx::Point& destPosition) const; |
44 | 43 |
45 private: | 44 private: |
46 FontAtlas(SkBitmap, IntRect asciiToRectTable[128], int fontHeight); | 45 FontAtlas(SkBitmap, IntRect asciiToRectTable[128], int fontHeight); |
47 | 46 |
48 void drawOneLineOfTextInternal(SkCanvas*, const SkPaint&, const std::string&
, const gfx::Point& destPosition) const; | 47 void drawOneLineOfTextInternal(SkCanvas*, const SkPaint&, const std::string&
, const gfx::Point& destPosition) const; |
49 | 48 |
50 // The actual texture atlas containing all the pre-rendered glyphs. | 49 // The actual texture atlas containing all the pre-rendered glyphs. |
51 SkBitmap m_atlas; | 50 SkBitmap m_atlas; |
52 | 51 |
53 // The look-up tables mapping ascii characters to their IntRect locations on
the atlas. | 52 // The look-up tables mapping ascii characters to their IntRect locations on
the atlas. |
54 IntRect m_asciiToRectTable[128]; | 53 IntRect m_asciiToRectTable[128]; |
55 | 54 |
56 int m_fontHeight; | 55 int m_fontHeight; |
57 | 56 |
58 DISALLOW_COPY_AND_ASSIGN(FontAtlas); | 57 DISALLOW_COPY_AND_ASSIGN(FontAtlas); |
59 }; | 58 }; |
60 | 59 |
61 } // namespace cc | 60 } // namespace cc |
62 | 61 |
63 #endif | 62 #endif |
OLD | NEW |