1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #ifndef INCLUDED_VCL_INC_HEADLESS_SVPFRAME_HXX 21 #define INCLUDED_VCL_INC_HEADLESS_SVPFRAME_HXX 22 23 #include <vcl/sysdata.hxx> 24 25 #include <salframe.hxx> 26 27 #include <list> 28 #include <vector> 29 30 #ifdef IOS 31 #define SvpSalInstance AquaSalInstance 32 #define SvpSalGraphics AquaSalGraphics 33 #endif 34 35 class SvpSalInstance; 36 class SvpSalGraphics; 37 38 class SvpSalFrame : public SalFrame 39 { 40 SvpSalInstance* m_pInstance; 41 SvpSalFrame* m_pParent; // pointer to parent frame 42 std::list< SvpSalFrame* > m_aChildren; // List of child frames 43 SalFrameStyleFlags const m_nStyle; 44 bool m_bVisible; 45 #ifndef IOS 46 cairo_surface_t* m_pSurface; 47 #endif 48 long m_nMinWidth; 49 long m_nMinHeight; 50 long m_nMaxWidth; 51 long m_nMaxHeight; 52 53 SystemEnvData m_aSystemChildData; 54 55 std::vector< SvpSalGraphics* > m_aGraphics; 56 57 static SvpSalFrame* s_pFocusFrame; 58 public: 59 SvpSalFrame( SvpSalInstance* pInstance, 60 SalFrame* pParent, 61 SalFrameStyleFlags nSalFrameStyle ); 62 virtual ~SvpSalFrame() override; 63 64 void GetFocus(); 65 void LoseFocus(); 66 void PostPaint() const; 67 68 // SalFrame 69 virtual SalGraphics* AcquireGraphics() override; 70 virtual void ReleaseGraphics( SalGraphics* pGraphics ) override; 71 72 virtual bool PostEvent(std::unique_ptr<ImplSVEvent> pData) override; 73 74 virtual void SetTitle( const OUString& rTitle ) override; 75 virtual void SetIcon( sal_uInt16 nIcon ) override; 76 virtual void SetMenu( SalMenu* pMenu ) override; 77 virtual void DrawMenuBar() override; 78 79 virtual void SetExtendedFrameStyle( SalExtStyle nExtStyle ) override; 80 virtual void Show( bool bVisible, bool bNoActivate = false ) override; 81 virtual void SetMinClientSize( long nWidth, long nHeight ) override; 82 virtual void SetMaxClientSize( long nWidth, long nHeight ) override; 83 virtual void SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_uInt16 nFlags ) override; 84 virtual void GetClientSize( long& rWidth, long& rHeight ) override; 85 virtual void GetWorkArea( tools::Rectangle& rRect ) override; 86 virtual SalFrame* GetParent() const override; 87 virtual void SetWindowState( const SalFrameState* pState ) override; 88 virtual bool GetWindowState( SalFrameState* pState ) override; 89 virtual void ShowFullScreen( bool bFullScreen, sal_Int32 nDisplay ) override; 90 virtual void StartPresentation( bool bStart ) override; 91 virtual void SetAlwaysOnTop( bool bOnTop ) override; 92 virtual void ToTop( SalFrameToTop nFlags ) override; 93 virtual void SetPointer( PointerStyle ePointerStyle ) override; 94 virtual void CaptureMouse( bool bMouse ) override; 95 virtual void SetPointerPos( long nX, long nY ) override; 96 using SalFrame::Flush; 97 virtual void Flush() override; 98 virtual void SetInputContext( SalInputContext* pContext ) override; 99 virtual void EndExtTextInput( EndExtTextInputFlags nFlags ) override; 100 virtual OUString GetKeyName( sal_uInt16 nKeyCode ) override; 101 virtual bool MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType, vcl::KeyCode& rKeyCode ) override; 102 virtual LanguageType GetInputLanguage() override; 103 virtual void UpdateSettings( AllSettings& rSettings ) override; 104 virtual void Beep() override; 105 virtual const SystemEnvData* GetSystemData() const override; 106 virtual SalPointerState GetPointerState() override; 107 virtual KeyIndicatorState GetIndicatorState() override; 108 virtual void SimulateKeyPress( sal_uInt16 nKeyCode ) override; 109 virtual void SetParent( SalFrame* pNewParent ) override; 110 virtual bool SetPluginParent( SystemParentData* pNewParent ) override; 111 virtual void ResetClipRegion() override; 112 virtual void BeginSetClipRegion( sal_uInt32 nRects ) override; 113 virtual void UnionClipRegion( long nX, long nY, long nWidth, long nHeight ) override; 114 virtual void EndSetClipRegion() override; 115 116 /*TODO: functional implementation */ SetScreenNumber(unsigned int)117 virtual void SetScreenNumber( unsigned int ) override {} SetApplicationID(const OUString &)118 virtual void SetApplicationID(const OUString &) override {} 119 120 }; 121 122 #endif // INCLUDED_VCL_INC_HEADLESS_SVPFRAME_HXX 123 124 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 125