| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef SD_PREVIEW_RENDERER_HXX |
| #define SD_PREVIEW_RENDERER_HXX |
| |
| #include "drawview.hxx" |
| #include <vcl/image.hxx> |
| #include <vcl/virdev.hxx> |
| #include <svl/listener.hxx> |
| #include <memory> |
| |
| |
| class OutputDevice; |
| class SdPage; |
| class VirtualDevice; |
| |
| namespace sd { |
| |
| class DrawDocShell; |
| class DrawView; |
| |
| |
| class PreviewRenderer |
| : public SfxListener |
| { |
| public: |
| /** Create a new preview renderer that takes some of its inital values |
| from the given output device. |
| @param pTemplate |
| May be NULL. |
| @param bPaintFrame |
| When <TRUE/> (the default) then a frame is painted around the |
| preview. This makes the actual preview smaller. |
| */ |
| PreviewRenderer ( |
| OutputDevice* pTemplate = NULL, |
| const bool bPaintFrame = true); |
| |
| ~PreviewRenderer (void); |
| |
| /** Render a page with the given pixel size. |
| Use this version when only the width of the preview is known to the |
| caller. The height is then calculated according to the aspect |
| ration of the given page. |
| @param pPage |
| The page to render. |
| @param nWidth |
| The width of the preview in device coordinates. |
| @param sSubstitutionText |
| When the actual preview can not be created for some reason, then |
| this text is painted in an empty rectangle of the requested size |
| instead. |
| @param bObeyHighContrastMode |
| When <FALSE/> then the high contrast mode of the application is |
| ignored and the preview is rendered in normal mode. When |
| <TRUE/> and high contrast mode is active then the preview is |
| rendered in high contrast mode. |
| @param bDisplayPresentationObjects |
| When <FALSE/> then the PresObj place holders are not displayed |
| in the returned preview. |
| */ |
| Image RenderPage ( |
| const SdPage* pPage, |
| const sal_Int32 nWidth, |
| const String& sSubstitutionText, |
| const bool bObeyHighContrastMode = true, |
| const bool bDisplayPresentationObjects = true); |
| |
| /** Render a page with the given pixel size. |
| @param pPage |
| The page to render. |
| @param aPreviewPixelSize |
| The size in device coordinates of the preview. |
| @param sSubstitutionText |
| When the actual preview can not be created for some reason, then |
| this text is painted in an empty rectangle of the requested size |
| instead. |
| @param bObeyHighContrastMode |
| When <FALSE/> then the high contrast mode of the application is |
| ignored and the preview is rendered in normal mode. When |
| <TRUE/> and high contrast mode is active then the preview is |
| rendered in high contrast mode. |
| @param bDisplayPresentationObjects |
| When <FALSE/> then the PresObj place holders are not displayed |
| in the returned preview. |
| */ |
| Image RenderPage ( |
| const SdPage* pPage, |
| const Size aPreviewPixelSize, |
| const String& sSubstitutionText, |
| const bool bObeyHighContrastMode = true, |
| const bool bDisplayPresentationObjects = true); |
| |
| /** Render an image that contains the given substitution text instead of a |
| slide preview. |
| @param aPreviewPixelSize |
| The size in device coordinates of the image. |
| */ |
| Image RenderSubstitution ( |
| const Size& rPreviewPixelSize, |
| const String& sSubstitutionText); |
| |
| /** Scale the given bitmap by keeping its aspect ratio to the desired |
| width. Add a frame to it afterwards. |
| */ |
| Image ScaleBitmap ( |
| const BitmapEx& rBitmap, |
| int nWidth); |
| |
| protected: |
| virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); |
| |
| private: |
| ::std::auto_ptr<VirtualDevice> mpPreviewDevice; |
| ::std::auto_ptr<DrawView> mpView; |
| DrawDocShell* mpDocShellOfView; |
| int mnWidthOfView; |
| const Color maFrameColor; |
| const bool mbHasFrame; |
| static const int snSubstitutionTextSize; |
| // Width of the frame that is painted arround the preview. |
| static const int snFrameWidth; |
| |
| bool Initialize ( |
| const SdPage* pPage, |
| const Size& rPixelSize, |
| const bool bObeyHighContrastMode); |
| void Cleanup (void); |
| void PaintPage ( |
| const SdPage* pPage, |
| const bool bDisplayPresentationObjects); |
| void PaintSubstitutionText (const String& rSubstitutionText); |
| void PaintFrame (void); |
| |
| /** Set up the map mode so that the given page is renderer into a bitmap |
| with the specified width. |
| @param rPage |
| The page for which the preview is created. |
| @param rPixelSize |
| The size of the resulting preview bitmap. Note that this size |
| includes the frame. The actual preview is smaller accordingly. |
| */ |
| void SetupOutputSize (const SdPage& rPage, const Size& rPixelSize); |
| |
| /** When mpView is empty then create a new view and initialize it. |
| Otherwise just initialize it. |
| */ |
| void ProvideView (DrawDocShell* pDocShell); |
| }; |
| |
| } // end of namespace ::sd |
| |
| #endif |