Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Side by Side Diff: ppapi/cpp/dev/font_dev.cc

Issue 1428653002: PPAPI: Remove PPB_Font_Dev. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ppapi/cpp/dev/font_dev.h ('k') | ppapi/cpp/private/flash_font_file.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ppapi/cpp/dev/font_dev.h"
6
7 #include <algorithm>
8
9 #include "ppapi/cpp/image_data.h"
10 #include "ppapi/cpp/instance_handle.h"
11 #include "ppapi/cpp/point.h"
12 #include "ppapi/cpp/rect.h"
13 #include "ppapi/cpp/module_impl.h"
14
15 namespace pp {
16
17 namespace {
18
19 template <> const char* interface_name<PPB_Font_Dev>() {
20 return PPB_FONT_DEV_INTERFACE;
21 }
22
23 } // namespace
24
25 // FontDescription_Dev ---------------------------------------------------------
26
27 FontDescription_Dev::FontDescription_Dev() {
28 pp_font_description_.face = face_.pp_var();
29 set_family(PP_FONTFAMILY_DEFAULT);
30 set_size(0);
31 set_weight(PP_FONTWEIGHT_NORMAL);
32 set_italic(false);
33 set_small_caps(false);
34 set_letter_spacing(0);
35 set_word_spacing(0);
36 }
37
38 FontDescription_Dev::FontDescription_Dev(const FontDescription_Dev& other) {
39 set_face(other.face());
40 set_family(other.family());
41 set_size(other.size());
42 set_weight(other.weight());
43 set_italic(other.italic());
44 set_small_caps(other.small_caps());
45 set_letter_spacing(other.letter_spacing());
46 set_word_spacing(other.word_spacing());
47 }
48
49 FontDescription_Dev::~FontDescription_Dev() {
50 }
51
52 FontDescription_Dev& FontDescription_Dev::operator=(
53 const FontDescription_Dev& other) {
54 pp_font_description_ = other.pp_font_description_;
55
56 // Be careful about the refcount of the string, the copy that operator= made
57 // above didn't copy a ref.
58 pp_font_description_.face = PP_MakeUndefined();
59 set_face(other.face());
60
61 return *this;
62 }
63
64 // TextRun_Dev -----------------------------------------------------------------
65
66 TextRun_Dev::TextRun_Dev() {
67 pp_text_run_.text = text_.pp_var();
68 pp_text_run_.rtl = PP_FALSE;
69 pp_text_run_.override_direction = PP_FALSE;
70 }
71
72 TextRun_Dev::TextRun_Dev(const std::string& text,
73 bool rtl,
74 bool override_direction)
75 : text_(text) {
76 pp_text_run_.text = text_.pp_var();
77 pp_text_run_.rtl = PP_FromBool(rtl);
78 pp_text_run_.override_direction = PP_FromBool(override_direction);
79 }
80
81 TextRun_Dev::TextRun_Dev(const TextRun_Dev& other) : text_(other.text_) {
82 pp_text_run_.text = text_.pp_var();
83 pp_text_run_.rtl = other.pp_text_run_.rtl;
84 pp_text_run_.override_direction = other.pp_text_run_.override_direction;
85 }
86
87 TextRun_Dev::~TextRun_Dev() {
88 }
89
90 TextRun_Dev& TextRun_Dev::operator=(const TextRun_Dev& other) {
91 pp_text_run_ = other.pp_text_run_;
92 text_ = other.text_;
93 pp_text_run_.text = text_.pp_var();
94 return *this;
95 }
96
97 // Font ------------------------------------------------------------------------
98
99 Font_Dev::Font_Dev() : Resource() {
100 }
101
102 Font_Dev::Font_Dev(PP_Resource resource) : Resource(resource) {
103 }
104
105 Font_Dev::Font_Dev(const InstanceHandle& instance,
106 const FontDescription_Dev& description) {
107 if (!has_interface<PPB_Font_Dev>())
108 return;
109 PassRefFromConstructor(get_interface<PPB_Font_Dev>()->Create(
110 instance.pp_instance(), &description.pp_font_description()));
111 }
112
113 Font_Dev::Font_Dev(const Font_Dev& other) : Resource(other) {
114 }
115
116 Font_Dev& Font_Dev::operator=(const Font_Dev& other) {
117 Resource::operator=(other);
118 return *this;
119 }
120
121 // static
122 Var Font_Dev::GetFontFamilies(const InstanceHandle& instance) {
123 if (!has_interface<PPB_Font_Dev>())
124 return Var();
125 return Var(PASS_REF, get_interface<PPB_Font_Dev>()->GetFontFamilies(
126 instance.pp_instance()));
127 }
128
129 bool Font_Dev::Describe(FontDescription_Dev* description,
130 PP_FontMetrics_Dev* metrics) const {
131 if (!has_interface<PPB_Font_Dev>())
132 return false;
133
134 // Be careful with ownership of the |face| string. It will come back with
135 // a ref of 1, which we want to assign to the |face_| member of the C++ class.
136 if (!get_interface<PPB_Font_Dev>()->Describe(
137 pp_resource(), &description->pp_font_description_, metrics))
138 return false;
139 description->face_ = Var(PASS_REF,
140 description->pp_font_description_.face);
141
142 return true;
143 }
144
145 bool Font_Dev::DrawTextAt(ImageData* dest,
146 const TextRun_Dev& text,
147 const Point& position,
148 uint32_t color,
149 const Rect& clip,
150 bool image_data_is_opaque) const {
151 if (!has_interface<PPB_Font_Dev>())
152 return false;
153 return PP_ToBool(get_interface<PPB_Font_Dev>()->DrawTextAt(
154 pp_resource(),
155 dest->pp_resource(),
156 &text.pp_text_run(),
157 &position.pp_point(),
158 color,
159 &clip.pp_rect(),
160 PP_FromBool(image_data_is_opaque)));
161 }
162
163 int32_t Font_Dev::MeasureText(const TextRun_Dev& text) const {
164 if (!has_interface<PPB_Font_Dev>())
165 return -1;
166 return get_interface<PPB_Font_Dev>()->MeasureText(pp_resource(),
167 &text.pp_text_run());
168 }
169
170 uint32_t Font_Dev::CharacterOffsetForPixel(const TextRun_Dev& text,
171 int32_t pixel_position) const {
172 if (!has_interface<PPB_Font_Dev>())
173 return 0;
174 return get_interface<PPB_Font_Dev>()->CharacterOffsetForPixel(
175 pp_resource(), &text.pp_text_run(), pixel_position);
176
177 }
178
179 int32_t Font_Dev::PixelOffsetForCharacter(const TextRun_Dev& text,
180 uint32_t char_offset) const {
181 if (!has_interface<PPB_Font_Dev>())
182 return 0;
183 return get_interface<PPB_Font_Dev>()->PixelOffsetForCharacter(
184 pp_resource(), &text.pp_text_run(), char_offset);
185 }
186
187 bool Font_Dev::DrawSimpleText(ImageData* dest,
188 const std::string& text,
189 const Point& position,
190 uint32_t color,
191 bool image_data_is_opaque) const {
192 return DrawTextAt(dest, TextRun_Dev(text), position, color,
193 Rect(dest->size()), image_data_is_opaque);
194 }
195
196 int32_t Font_Dev::MeasureSimpleText(const std::string& text) const {
197 return MeasureText(TextRun_Dev(text));
198 }
199
200 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/cpp/dev/font_dev.h ('k') | ppapi/cpp/private/flash_font_file.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698