diff -r 000000000000 -r 6474c204b198 gfx/thebes/gfxPlatformGtk.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/thebes/gfxPlatformGtk.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,111 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef GFX_PLATFORM_GTK_H +#define GFX_PLATFORM_GTK_H + +#include "gfxPlatform.h" +#include "nsAutoRef.h" +#include "nsTArray.h" + +#if (MOZ_WIDGET_GTK == 2) +extern "C" { + typedef struct _GdkDrawable GdkDrawable; +} +#endif + +class gfxFontconfigUtils; + +class gfxPlatformGtk : public gfxPlatform { +public: + gfxPlatformGtk(); + virtual ~gfxPlatformGtk(); + + static gfxPlatformGtk *GetPlatform() { + return (gfxPlatformGtk*) gfxPlatform::GetPlatform(); + } + + virtual already_AddRefed + CreateOffscreenSurface(const IntSize& size, + gfxContentType contentType) MOZ_OVERRIDE; + + mozilla::TemporaryRef + GetScaledFontForFont(mozilla::gfx::DrawTarget* aTarget, gfxFont *aFont); + + nsresult GetFontList(nsIAtom *aLangGroup, + const nsACString& aGenericFamily, + nsTArray& aListOfFonts); + + nsresult UpdateFontList(); + + nsresult ResolveFontName(const nsAString& aFontName, + FontResolverCallback aCallback, + void *aClosure, bool& aAborted); + + nsresult GetStandardFamilyName(const nsAString& aFontName, nsAString& aFamilyName); + + gfxFontGroup *CreateFontGroup(const nsAString &aFamilies, + const gfxFontStyle *aStyle, + gfxUserFontSet *aUserFontSet); + + /** + * Look up a local platform font using the full font face name (needed to + * support @font-face src local() ) + */ + virtual gfxFontEntry* LookupLocalFont(const gfxProxyFontEntry *aProxyEntry, + const nsAString& aFontName); + + /** + * Activate a platform font (needed to support @font-face src url() ) + * + */ + virtual gfxFontEntry* MakePlatformFont(const gfxProxyFontEntry *aProxyEntry, + const uint8_t *aFontData, + uint32_t aLength); + + /** + * Check whether format is supported on a platform or not (if unclear, + * returns true). + */ + virtual bool IsFontFormatSupported(nsIURI *aFontURI, + uint32_t aFormatFlags); + +#if (MOZ_WIDGET_GTK == 2) + static void SetGdkDrawable(cairo_surface_t *target, + GdkDrawable *drawable); + static GdkDrawable *GetGdkDrawable(cairo_surface_t *target); +#endif + + static int32_t GetDPI(); + + bool UseXRender() { +#if defined(MOZ_X11) + if (GetContentBackend() != mozilla::gfx::BackendType::NONE && + GetContentBackend() != mozilla::gfx::BackendType::CAIRO) + return false; + + return sUseXRender; +#else + return false; +#endif + } + + virtual gfxImageFormat GetOffscreenFormat(); + + virtual int GetScreenDepth() const; + +protected: + static gfxFontconfigUtils *sFontconfigUtils; + +private: + virtual void GetPlatformCMSOutputProfile(void *&mem, size_t &size); + + virtual bool SupportsOffMainThreadCompositing(); +#ifdef MOZ_X11 + static bool sUseXRender; +#endif +}; + +#endif /* GFX_PLATFORM_GTK_H */