| Index: ppapi/shared_impl/font_impl.h
|
| ===================================================================
|
| --- ppapi/shared_impl/font_impl.h (revision 0)
|
| +++ ppapi/shared_impl/font_impl.h (revision 0)
|
| @@ -0,0 +1,123 @@
|
| +// 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_FONT_IMPL_H_
|
| +#define PPAPI_SHARED_IMPL_FONT_IMPL_H_
|
| +#pragma once
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "ppapi/c/pp_bool.h"
|
| +#include "ppapi/c/pp_stdint.h"
|
| +
|
| +struct PP_FontDescription_Dev;
|
| +struct PP_FontMetrics_Dev;
|
| +struct PP_Point;
|
| +struct PP_Rect;
|
| +
|
| +namespace base {
|
| +class WaitableEvent;
|
| +}
|
| +
|
| +namespace skia {
|
| +class PlatformCanvas;
|
| +} // namespace skia
|
| +
|
| +namespace WebKit {
|
| +class WebFont;
|
| +} // namespace WebKit
|
| +
|
| +namespace pp {
|
| +namespace shared_impl {
|
| +
|
| +// This class is a bit subtle. It's designed to be used in two contexts:
|
| +// - In the renderer in the same thread as WebKit.
|
| +// - On a special WebKit thread in the plugin process.
|
| +// As a result, the actual implementation is provided in terms of functions
|
| +// prefixed by "Do" that don't depend on any global Pepper state, and that
|
| +// supply the return values via output parameters (for the other-thread case).
|
| +// Each implementation is then in charge of setting up the call appropriately.
|
| +//
|
| +// The Do* functions take an optional waitable event. If provided, this
|
| +// event will be signaled when the function completes. This allows the
|
| +// cross-thread implementation to know when the function completes.
|
| +class FontImpl {
|
| + public:
|
| + // C++ version of PP_TextRun_Dev. Since the Do* functions 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;
|
| + };
|
| +
|
| + FontImpl();
|
| + virtual ~FontImpl();
|
| +
|
| + // Validates the parameters in thee description. Can be called on any thread.
|
| + static bool IsPPFontDescriptionValid(const PP_FontDescription_Dev& desc);
|
| +
|
| + protected:
|
| + // DoDrawText takes too many arguments to be used with base::Bind, so we
|
| + // use this struct to hold them.
|
| + struct 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;
|
| + };
|
| +
|
| + // The face name from the description is given in desc_face so we can avoid
|
| + // a dependency on var conversion. See class description for waitable_event
|
| + // documentation.
|
| + void DoCreate(base::WaitableEvent* event,
|
| + const PP_FontDescription_Dev& desc,
|
| + const std::string& desc_face);
|
| +
|
| + // 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.
|
| + void DoDescribe(base::WaitableEvent* event,
|
| + PP_FontDescription_Dev* description,
|
| + std::string* face,
|
| + PP_FontMetrics_Dev* metrics,
|
| + PP_Bool* result);
|
| + void DoDrawTextAt(base::WaitableEvent* event,
|
| + const DrawTextParams& params);
|
| + void DoMeasureText(base::WaitableEvent* event,
|
| + const TextRun& text, int32_t* result);
|
| + void DoCharacterOffsetForPixel(base::WaitableEvent* event,
|
| + const TextRun& text,
|
| + int32_t pixel_position,
|
| + uint32_t* result);
|
| + void DoPixelOffsetForCharacter(base::WaitableEvent* event,
|
| + const TextRun& text,
|
| + uint32_t char_offset,
|
| + int32_t* result);
|
| +
|
| + // Access only on the WebKit thread.
|
| + scoped_ptr<WebKit::WebFont> font_;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(FontImpl);
|
| +};
|
| +
|
| +} // namespace shared_impl
|
| +} // namespace pp
|
| +
|
| +#endif // PPAPI_SHARED_IMPL_FONT_IMPL_H_
|
|
|
| Property changes on: ppapi/shared_impl/font_impl.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|