15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch#ifndef CONTENT_CHILD_BROWSER_FONT_RESOURCE_TRUSTED_H_ 658e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch#define CONTENT_CHILD_BROWSER_FONT_RESOURCE_TRUSTED_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/proxy/plugin_resource.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppapi_preferences.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_browser_font_trusted_api.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SkCanvas; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace WebKit { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebFont; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2658e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochnamespace content { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2858e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass BrowserFontResource_Trusted 2958e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch : public ppapi::proxy::PluginResource, 3058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch public ppapi::thunk::PPB_BrowserFont_Trusted_API { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 3258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch BrowserFontResource_Trusted(ppapi::proxy::Connection connection, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_Instance instance, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PP_BrowserFont_Trusted_Description& desc, 3558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch const ppapi::Preferences& prefs); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Validates the parameters in thee description. Can be called on any thread. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsPPFontDescriptionValid( 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_BrowserFont_Trusted_Description& desc); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Resource override. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ::ppapi::thunk::PPB_BrowserFont_Trusted_API* 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AsPPB_BrowserFont_Trusted_API() OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // PPB_BrowserFont_Trusted_API implementation. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PP_Bool Describe(PP_BrowserFont_Trusted_Description* description, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_BrowserFont_Trusted_Metrics* metrics) OVERRIDE; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PP_Bool DrawTextAt(PP_Resource image_data, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_BrowserFont_Trusted_TextRun* text, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_Point* position, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t color, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_Rect* clip, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool image_data_is_opaque) OVERRIDE; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t MeasureText( 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_BrowserFont_Trusted_TextRun* text) OVERRIDE; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual uint32_t CharacterOffsetForPixel( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_BrowserFont_Trusted_TextRun* text, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t pixel_position) OVERRIDE; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t PixelOffsetForCharacter( 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_BrowserFont_Trusted_TextRun* text, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t char_offset) OVERRIDE; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 6458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch virtual ~BrowserFontResource_Trusted(); 6558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Internal version of DrawTextAt that takes a mapped PlatformCanvas. 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DrawTextToCanvas(SkCanvas* destination, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_BrowserFont_Trusted_TextRun& text, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_Point* position, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t color, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_Rect* clip, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool image_data_is_opaque); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<WebKit::WebFont> font_; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BrowserFontResource_Trusted); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch} // namespace content 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch#endif // CONTENT_CHILD_BROWSER_FONT_RESOURCE_TRUSTED_H_ 83