Home | History | Annotate | Download | only in child
      1 // Copyright (c) 2012 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 #ifndef CONTENT_CHILD_BROWSER_FONT_RESOURCE_TRUSTED_H_
      6 #define CONTENT_CHILD_BROWSER_FONT_RESOURCE_TRUSTED_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/scoped_ptr.h"
     12 #include "ppapi/c/pp_bool.h"
     13 #include "ppapi/c/pp_instance.h"
     14 #include "ppapi/c/pp_resource.h"
     15 #include "ppapi/c/pp_stdint.h"
     16 #include "ppapi/proxy/plugin_resource.h"
     17 #include "ppapi/shared_impl/ppapi_preferences.h"
     18 #include "ppapi/thunk/ppb_browser_font_trusted_api.h"
     19 
     20 class SkCanvas;
     21 
     22 namespace blink {
     23 class WebFont;
     24 }
     25 
     26 namespace content {
     27 
     28 class BrowserFontResource_Trusted
     29     : public ppapi::proxy::PluginResource,
     30       public ppapi::thunk::PPB_BrowserFont_Trusted_API {
     31  public:
     32   BrowserFontResource_Trusted(ppapi::proxy::Connection connection,
     33                               PP_Instance instance,
     34                               const PP_BrowserFont_Trusted_Description& desc,
     35                               const ppapi::Preferences& prefs);
     36 
     37   // Validates the parameters in thee description. Can be called on any thread.
     38   static bool IsPPFontDescriptionValid(
     39       const PP_BrowserFont_Trusted_Description& desc);
     40 
     41   // Resource override.
     42   virtual ::ppapi::thunk::PPB_BrowserFont_Trusted_API*
     43       AsPPB_BrowserFont_Trusted_API() OVERRIDE;
     44 
     45   // PPB_BrowserFont_Trusted_API implementation.
     46   virtual PP_Bool Describe(PP_BrowserFont_Trusted_Description* description,
     47                            PP_BrowserFont_Trusted_Metrics* metrics) OVERRIDE;
     48   virtual PP_Bool DrawTextAt(PP_Resource image_data,
     49                              const PP_BrowserFont_Trusted_TextRun* text,
     50                              const PP_Point* position,
     51                              uint32_t color,
     52                              const PP_Rect* clip,
     53                              PP_Bool image_data_is_opaque) OVERRIDE;
     54   virtual int32_t MeasureText(
     55       const PP_BrowserFont_Trusted_TextRun* text) OVERRIDE;
     56   virtual uint32_t CharacterOffsetForPixel(
     57       const PP_BrowserFont_Trusted_TextRun* text,
     58       int32_t pixel_position) OVERRIDE;
     59   virtual int32_t PixelOffsetForCharacter(
     60       const PP_BrowserFont_Trusted_TextRun* text,
     61       uint32_t char_offset) OVERRIDE;
     62 
     63  private:
     64   virtual ~BrowserFontResource_Trusted();
     65 
     66   // Internal version of DrawTextAt that takes a mapped PlatformCanvas.
     67   void DrawTextToCanvas(SkCanvas* destination,
     68                         const PP_BrowserFont_Trusted_TextRun& text,
     69                         const PP_Point* position,
     70                         uint32_t color,
     71                         const PP_Rect* clip,
     72                         PP_Bool image_data_is_opaque);
     73 
     74  private:
     75   scoped_ptr<blink::WebFont> font_;
     76 
     77   DISALLOW_COPY_AND_ASSIGN(BrowserFontResource_Trusted);
     78 };
     79 
     80 }  // namespace content
     81 
     82 #endif  // CONTENT_CHILD_BROWSER_FONT_RESOURCE_TRUSTED_H_
     83