// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PPAPI_SHARED_IMPL_WEBKIT_FORWARDING_H_ #define PPAPI_SHARED_IMPL_WEBKIT_FORWARDING_H_ #include #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_stdint.h" #include "ppapi/shared_impl/ppapi_shared_export.h" struct PP_FontDescription_Dev; struct PP_FontMetrics_Dev; struct PP_Point; struct PP_Rect; namespace skia { class PlatformCanvas; } namespace ppapi { struct Preferences; class PPAPI_SHARED_EXPORT WebKitForwarding { public: class PPAPI_SHARED_EXPORT Font { public: // C++ version of PP_TextRun_Dev. Since the functions below will be called // on an alternate thread in the proxy, and since there are different // methods of converting PP_Var -> strings in the plugin and the proxy, we // can't use PP_Vars in the Do* functions below. struct TextRun { std::string text; bool rtl; bool override_direction; }; // DoDrawText takes too many arguments to be used with base::Bind, so we // use this struct to hold them. struct PPAPI_SHARED_EXPORT DrawTextParams { DrawTextParams(skia::PlatformCanvas* destination_arg, const TextRun& text_arg, const PP_Point* position_arg, uint32_t color_arg, const PP_Rect* clip_arg, PP_Bool image_data_is_opaque_arg); ~DrawTextParams(); skia::PlatformCanvas* destination; const TextRun& text; const PP_Point* position; uint32_t color; const PP_Rect* clip; PP_Bool image_data_is_opaque; }; virtual ~Font(); // The face name in the description is not filled in to avoid a dependency // on creating vars. Instead, the face name is placed into the given // string. See class description for waitable_event documentation. If // non-null, the given event will be set on completion. virtual void Describe(PP_FontDescription_Dev* description, std::string* face, PP_FontMetrics_Dev* metrics, PP_Bool* result) = 0; virtual void DrawTextAt(const DrawTextParams& params) = 0; virtual void MeasureText(const TextRun& text, int32_t* result) = 0; virtual void CharacterOffsetForPixel(const TextRun& text, int32_t pixel_position, uint32_t* result) = 0; virtual void PixelOffsetForCharacter(const TextRun& text, uint32_t char_offset, int32_t* result) = 0; }; virtual ~WebKitForwarding(); }; } // namespace ppapi #endif // PPAPI_SHARED_IMPL_WEBKIT_FORWARDING_H_