123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* 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 mozilla_layout_PrintTranslator_h
- #define mozilla_layout_PrintTranslator_h
- #include <istream>
- #include "mozilla/gfx/2D.h"
- #include "mozilla/gfx/Filters.h"
- #include "mozilla/gfx/RecordedEvent.h"
- #include "nsRefPtrHashtable.h"
- class nsDeviceContext;
- namespace mozilla {
- namespace layout {
- using gfx::Translator;
- using gfx::ReferencePtr;
- using gfx::DrawTarget;
- using gfx::Path;
- using gfx::SourceSurface;
- using gfx::FilterNode;
- using gfx::GradientStops;
- using gfx::ScaledFont;
- using gfx::NativeFontResource;
- class PrintTranslator final : public Translator
- {
- public:
- explicit PrintTranslator(nsDeviceContext* aDeviceContext);
- bool TranslateRecording(std::istream& aRecording);
- DrawTarget* LookupDrawTarget(ReferencePtr aRefPtr) final
- {
- DrawTarget* result = mDrawTargets.GetWeak(aRefPtr);
- MOZ_ASSERT(result);
- return result;
- }
- Path* LookupPath(ReferencePtr aRefPtr) final
- {
- Path* result = mPaths.GetWeak(aRefPtr);
- MOZ_ASSERT(result);
- return result;
- }
- SourceSurface* LookupSourceSurface(ReferencePtr aRefPtr) final
- {
- SourceSurface* result = mSourceSurfaces.GetWeak(aRefPtr);
- MOZ_ASSERT(result);
- return result;
- }
- FilterNode* LookupFilterNode(ReferencePtr aRefPtr) final
- {
- FilterNode* result = mFilterNodes.GetWeak(aRefPtr);
- MOZ_ASSERT(result);
- return result;
- }
- GradientStops* LookupGradientStops(ReferencePtr aRefPtr) final
- {
- GradientStops* result = mGradientStops.GetWeak(aRefPtr);
- MOZ_ASSERT(result);
- return result;
- }
- ScaledFont* LookupScaledFont(ReferencePtr aRefPtr) final
- {
- ScaledFont* result = mScaledFonts.GetWeak(aRefPtr);
- MOZ_ASSERT(result);
- return result;
- }
- NativeFontResource* LookupNativeFontResource(uint64_t aKey) final
- {
- NativeFontResource* result = mNativeFontResources.GetWeak(aKey);
- MOZ_ASSERT(result);
- return result;
- }
- void AddDrawTarget(ReferencePtr aRefPtr, DrawTarget *aDT) final
- {
- mDrawTargets.Put(aRefPtr, aDT);
- }
- void AddPath(ReferencePtr aRefPtr, Path *aPath) final
- {
- mPaths.Put(aRefPtr, aPath);
- }
- void AddSourceSurface(ReferencePtr aRefPtr, SourceSurface *aSurface) final
- {
- mSourceSurfaces.Put(aRefPtr, aSurface);
- }
- void AddFilterNode(ReferencePtr aRefPtr, FilterNode *aFilter) final
- {
- mFilterNodes.Put(aRefPtr, aFilter);
- }
- void AddGradientStops(ReferencePtr aRefPtr, GradientStops *aStops) final
- {
- mGradientStops.Put(aRefPtr, aStops);
- }
- void AddScaledFont(ReferencePtr aRefPtr, ScaledFont *aScaledFont) final
- {
- mScaledFonts.Put(aRefPtr, aScaledFont);
- }
- void AddNativeFontResource(uint64_t aKey,
- NativeFontResource *aScaledFontResouce) final
- {
- mNativeFontResources.Put(aKey, aScaledFontResouce);
- }
- void RemoveDrawTarget(ReferencePtr aRefPtr) final
- {
- mDrawTargets.Remove(aRefPtr);
- }
- void RemovePath(ReferencePtr aRefPtr) final
- {
- mPaths.Remove(aRefPtr);
- }
- void RemoveSourceSurface(ReferencePtr aRefPtr) final
- {
- mSourceSurfaces.Remove(aRefPtr);
- }
- void RemoveFilterNode(ReferencePtr aRefPtr) final
- {
- mFilterNodes.Remove(aRefPtr);
- }
- void RemoveGradientStops(ReferencePtr aRefPtr) final
- {
- mGradientStops.Remove(aRefPtr);
- }
- void RemoveScaledFont(ReferencePtr aRefPtr) final
- {
- mScaledFonts.Remove(aRefPtr);
- }
- already_AddRefed<DrawTarget> CreateDrawTarget(ReferencePtr aRefPtr,
- const gfx::IntSize &aSize,
- gfx::SurfaceFormat aFormat) final;
- mozilla::gfx::DrawTarget* GetReferenceDrawTarget() final { return mBaseDT; }
- mozilla::gfx::FontType GetDesiredFontType() final;
- private:
- RefPtr<nsDeviceContext> mDeviceContext;
- RefPtr<DrawTarget> mBaseDT;
- nsRefPtrHashtable<nsPtrHashKey<void>, DrawTarget> mDrawTargets;
- nsRefPtrHashtable<nsPtrHashKey<void>, Path> mPaths;
- nsRefPtrHashtable<nsPtrHashKey<void>, SourceSurface> mSourceSurfaces;
- nsRefPtrHashtable<nsPtrHashKey<void>, FilterNode> mFilterNodes;
- nsRefPtrHashtable<nsPtrHashKey<void>, GradientStops> mGradientStops;
- nsRefPtrHashtable<nsPtrHashKey<void>, ScaledFont> mScaledFonts;
- nsRefPtrHashtable<nsUint64HashKey, NativeFontResource> mNativeFontResources;
- };
- } // namespace layout
- } // namespace mozilla
- #endif // mozilla_layout_PrintTranslator_h
|