config_host/config_features.h.in | 5 configure.ac | 10 include/vcl/sysdata.hxx | 11 ios/.gitignore | 1 ios/experimental/TiledLibreOffice/.gitignore | 9 ios/experimental/TiledLibreOffice/TiledLibreOffice/.gitignore | 1 sw/source/core/view/viewsh.cxx | 3 vcl/Library_vcl.mk | 19 vcl/headless/svpgdi.cxx | 5 vcl/headless/svpinst.cxx | 22 vcl/inc/headless/svpframe.hxx | 7 vcl/inc/headless/svpgdi.hxx | 18 vcl/inc/headless/svpinst.hxx | 6 vcl/inc/headless/svpvd.hxx | 4 vcl/inc/opengl/openglinst.hxx | 54 + vcl/inc/opengl/salbmp.h | 98 +++ vcl/inc/opengl/salgdi.h | 302 ++++++++++ vcl/inc/opengl/salvd.h | 57 + vcl/inc/saldatabasic.hxx | 9 vcl/ios/iosinst.cxx | 15 20 files changed, 645 insertions(+), 11 deletions(-)
New commits: commit c3fe92ca70ad58e2fbac78508d343f06a80c7e86 Author: Ptyl Dragon <p...@cloudon.com> Date: Mon Oct 6 14:40:58 2014 +0300 change return type to ImplFontCharMapPtr post creating vcl-opengl2 branch Change-Id: Id2022cf1b3665b54356c28deda51d82e172a839e diff --git a/vcl/inc/opengl/salgdi.h b/vcl/inc/opengl/salgdi.h index 4631182..0f71248 100644 --- a/vcl/inc/opengl/salgdi.h +++ b/vcl/inc/opengl/salgdi.h @@ -185,7 +185,7 @@ public: // get the current font's metrics virtual void GetFontMetric( ImplFontMetricData*, int /* nFallbackLevel */ ) SAL_OVERRIDE {} // get the repertoire of the current font - virtual const ImplFontCharMap* + virtual const ImplFontCharMapPtr GetImplFontCharMap() const SAL_OVERRIDE { return nullptr; commit 500149536c75fd4b3f81ebaf5fa624ee143809f6 Author: Ptyl Dragon <p...@cloudon.com> Date: Mon Oct 6 12:52:55 2014 +0300 make works with OpenGLSalInstance / OpenGLSalGraphics Change-Id: Ie5156dd15122586e9c173a3532759a3be728809a diff --git a/configure.ac b/configure.ac index f01ed6f..6e85b87 100644 --- a/configure.ac +++ b/configure.ac @@ -2448,6 +2448,7 @@ if test $_os != iOS -a $_os != Android; then fi if test "$enable_vgl" == yes; then + HAVE_VCL_OPEN_GL_BACKEND="TRUE" AC_DEFINE(HAVE_VCL_OPEN_GL_BACKEND) fi diff --git a/include/vcl/sysdata.hxx b/include/vcl/sysdata.hxx index 4cfc737..fa909af 100644 --- a/include/vcl/sysdata.hxx +++ b/include/vcl/sysdata.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_VCL_SYSDATA_HXX #define INCLUDED_VCL_SYSDATA_HXX +#include <config_features.h> + #include <vector> #include <cstddef> @@ -36,9 +38,12 @@ class NSView; #endif #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#else typedef const struct __CTFont * CTFontRef; typedef struct CGContext *CGContextRef; #endif +#endif #if defined( WNT ) #include <windef.h> @@ -140,7 +145,10 @@ struct SystemGraphicsData #elif defined( ANDROID ) // Nothing #elif defined( IOS ) +#if HAVE_VCL_OPEN_GL_BACKEND +#else CGContextRef rCGContext; // CoreGraphics graphic context +#endif #elif defined( UNX ) void* pDisplay; // the relevant display connection long hDrawable; // a drawable @@ -159,7 +167,10 @@ struct SystemGraphicsData #elif defined( ANDROID ) // Nothing #elif defined( IOS ) +#if HAVE_VCL_OPEN_GL_BACKEND +#else , rCGContext( NULL ) +#endif #elif defined( UNX ) , pDisplay( NULL ) , hDrawable( 0 ) diff --git a/ios/.gitignore b/ios/.gitignore index 08c6a68..3d2a3a2 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -7,3 +7,4 @@ # /lo.xcconfig +/.log diff --git a/ios/experimental/TiledLibreOffice/TiledLibreOffice/.gitignore b/ios/experimental/TiledLibreOffice/TiledLibreOffice/.gitignore new file mode 100644 index 0000000..ba78577 --- /dev/null +++ b/ios/experimental/TiledLibreOffice/TiledLibreOffice/.gitignore @@ -0,0 +1 @@ +/native-code.mm diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index 0731c2b..7506b6b 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -1851,7 +1851,10 @@ void touch_lo_draw_tile(void *context, int contextWidth, int contextHeight, MLOD if (pViewShell) { SystemGraphicsData aData; +#if HAVE_VCL_OPEN_GL_BACKEND +#else aData.rCGContext = (CGContextRef) context; +#endif VirtualDevice aDevice(&aData, (sal_uInt16)0); // paint to it pViewShell->PaintTile(aDevice, contextWidth, contextHeight, tilePosX, tilePosY, tileWidth, tileHeight); diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index dea1d8d..213d59f 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -401,9 +401,11 @@ $(eval $(call gb_Library_add_defs,vcl,\ -DMACOSX_BUNDLE_IDENTIFIER=\"$(MACOSX_BUNDLE_IDENTIFIER)\" \ )) -$(eval $(call gb_Library_add_exception_objects,vcl,\ +$(if $(filter-out TRUE, $(HAVE_VCL_OPEN_GL_BACKEND)), \ +$(eval $(call gb_Library_add_exception_objects,vcl, \ $(vcl_coretext_code) \ -)) +)) \ +) $(eval $(call gb_Library_use_system_darwin_frameworks,vcl,\ ApplicationServices \ @@ -462,8 +464,13 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/osx/PictToBmpFlt \ vcl/osx/clipboard \ vcl/osx/service_entry \ - $(vcl_quartz_code) \ - vcl/quartz/salgdiutils \ + $(if $(filter-out TRUE, $(HAVE_VCL_OPEN_GL_BACKEND)),\ + $(vcl_quartz_code) \ + vcl/quartz/salgdiutils \ + )\ + $(if $(filter TRUE, $(HAVE_VCL_OPEN_GL_BACKEND)),\ + vcl/quartz/utils \ + )\ vcl/osx/salnativewidgets \ vcl/osx/salprn \ vcl/osx/salframe \ @@ -604,8 +611,8 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/ios/iosinst \ vcl/ios/dummies \ $(vcl_really_generic_code) \ - $(vcl_coretext_code) \ - $(vcl_quartz_code) \ + $(if $(filter-out TRUE, $(HAVE_VCL_OPEN_GL_BACKEND)), $(vcl_quartz_code) $(vcl_coretext_code)) \ + $(if $(filter TRUE, $(HAVE_VCL_OPEN_GL_BACKEND)), vcl/quartz/utils )\ $(vcl_headless_code) \ )) $(eval $(call gb_Library_use_system_darwin_frameworks,vcl,\ diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index ef8f126..db3ea29 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -730,11 +730,12 @@ bool SvpSalGraphics::supportsOperation( OutDevSupportType ) const #endif #ifdef IOS - +#if HAVE_VCL_OPEN_GL_BACKEND +#else void SvpSalGraphics::RefreshRect(float /* lX */, float /* lY */, float /* lWidth */, float /* lHeight */) { } - +#endif #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx index 3fa2226..2fa3448 100644 --- a/vcl/headless/svpinst.cxx +++ b/vcl/headless/svpinst.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> + #include <unistd.h> #include <fcntl.h> #include <sys/time.h> @@ -32,10 +34,16 @@ #include "headless/svpvd.hxx" #ifdef IOS #include "headless/svpgdi.hxx" +#if HAVE_VCL_OPEN_GL_BACKEND +#include "opengl/salbmp.h" +#include "opengl/salgdi.h" +#include "opengl/salvd.h" +#else #include "quartz/salbmp.h" #include "quartz/salgdi.h" #include "quartz/salvd.h" #endif +#endif #include "headless/svpbmp.hxx" #include <salframe.hxx> @@ -230,6 +238,16 @@ SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* /* pGraphics return pNew; } +#else +#if HAVE_VCL_OPEN_GL_BACKEND +SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* /* pGraphics */, + long /* nDX */, long /*nDY*/, + sal_uInt16 /* nBitCount */, + const SystemGraphicsData* /* pData */ ) +{ + return nullptr; +} +#endif #endif SalTimer* SvpSalInstance::CreateSalTimer() @@ -250,7 +268,11 @@ SalSystem* SvpSalInstance::CreateSalSystem() SalBitmap* SvpSalInstance::CreateSalBitmap() { #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND + return new OpenGLSalBitmap(); +#else return new QuartzSalBitmap(); +#endif #else return new SvpSalBitmap(); #endif diff --git a/vcl/inc/headless/svpframe.hxx b/vcl/inc/headless/svpframe.hxx index 8e0bbd4..bd26e39 100644 --- a/vcl/inc/headless/svpframe.hxx +++ b/vcl/inc/headless/svpframe.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_VCL_INC_HEADLESS_SVPFRAME_HXX #define INCLUDED_VCL_INC_HEADLESS_SVPFRAME_HXX +#include <config_features.h> + #include <vcl/sysdata.hxx> #include <basegfx/range/b2ibox.hxx> #include <basebmp/bitmapdevice.hxx> @@ -29,9 +31,14 @@ #include <list> #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#define SvpSalGraphics OpenGLSalGraphics +#define SvpSalInstance OpenGLSalInstance +#else #define SvpSalGraphics AquaSalGraphics #define SvpSalInstance AquaSalInstance #endif +#endif class SvpSalInstance; class SvpSalGraphics; diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx index aad4693..425dc04 100644 --- a/vcl/inc/headless/svpgdi.hxx +++ b/vcl/inc/headless/svpgdi.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_VCL_INC_HEADLESS_SVPGDI_HXX #define INCLUDED_VCL_INC_HEADLESS_SVPGDI_HXX +#include <config_features.h> + #include <basebmp/bitmapdevice.hxx> #include <basebmp/color.hxx> #include <vcl/sysdata.hxx> @@ -28,12 +30,16 @@ #include "sallayout.hxx" #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#include "opengl/salgdi.h" +#else #include "quartz/salgdi.h" #include <premac.h> #include <Foundation/Foundation.h> #include <CoreGraphics/CoreGraphics.h> #include <postmac.h> #endif +#endif class ServerFont; @@ -42,9 +48,15 @@ class ServerFont; // let's continue calling the SalGraphics subclass "AquaSalGraphics" even if it // is used by us also on iOS, where of course the term "Aqua" has no meaning at all. // (Note that even on OS X, using the term "Aqua" is a misunderstanding or obsolete.) +#if HAVE_VCL_OPEN_GL_BACKEND +#define SvpSalGraphics OpenGLSalGraphics +#define SVP_SAL_GRAPHICS_ALREADY_DEFINED +#else #define SvpSalGraphics AquaSalGraphics #endif +#endif +#ifndef SVP_SAL_GRAPHICS_ALREADY_DEFINED class SvpSalGraphics : public SalGraphics { #ifndef IOS @@ -83,7 +95,6 @@ private: public: void setDevice( basebmp::BitmapDeviceSharedPtr& rDevice ); -#else friend class CTLayout; CGLayerRef mxLayer; @@ -242,6 +253,8 @@ public: virtual SystemFontData GetSysFontData( int nFallbacklevel ) const SAL_OVERRIDE; #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#else void SetVirDevGraphics( CGLayerRef xLayer, CGContextRef xContext, int = 0 ); bool CheckContext(); @@ -262,7 +275,10 @@ public: void ApplyXorContext(); void Pattern50Fill(); #endif +#endif }; +#endif +#undef SVP_SAL_GRAPHICS_ALREADY_DEFINED #endif // INCLUDED_VCL_INC_HEADLESS_SVPGDI_HXX diff --git a/vcl/inc/headless/svpinst.hxx b/vcl/inc/headless/svpinst.hxx index 0bf542f..d5fd8cc 100644 --- a/vcl/inc/headless/svpinst.hxx +++ b/vcl/inc/headless/svpinst.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_VCL_INC_HEADLESS_SVPINST_HXX #define INCLUDED_VCL_INC_HEADLESS_SVPINST_HXX +#include <config_features.h> + #include <osl/mutex.hxx> #include <osl/thread.hxx> #include <salinst.hxx> @@ -37,8 +39,12 @@ #define VIRTUAL_DESKTOP_HEIGHT 768 #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#define SvpSalInstance OpenGLSalInstance +#else #define SvpSalInstance AquaSalInstance #endif +#endif class SvpSalInstance; class SvpSalTimer : public SalTimer diff --git a/vcl/inc/headless/svpvd.hxx b/vcl/inc/headless/svpvd.hxx index f6a9cc5..3b3d38b 100644 --- a/vcl/inc/headless/svpvd.hxx +++ b/vcl/inc/headless/svpvd.hxx @@ -25,8 +25,12 @@ #include <list> #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#define SvpSalGraphics OpenGLSalGraphics +#else #define SvpSalGraphics AquaSalGraphics #endif +#endif class SvpSalGraphics; diff --git a/vcl/inc/opengl/openglinst.hxx b/vcl/inc/opengl/openglinst.hxx new file mode 100644 index 0000000..0c9ac4d --- /dev/null +++ b/vcl/inc/opengl/openglinst.hxx @@ -0,0 +1,54 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * 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/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#ifndef INCLUDED_VCL_INC_OPENGL_OPENGLINST_HXX +#define INCLUDED_VCL_INC_OPENGL_OPENGLINST_HXX + +#include <tools/link.hxx> + +#include "headless/svpinst.hxx" +#include "headless/svpframe.hxx" + +class OpenGLSalInstance : public SvpSalInstance +{ +public: + OpenGLSalInstance( SalYieldMutex * /* pMutex */ ) {} + virtual ~OpenGLSalInstance() {} + static OpenGLSalInstance *getInstance() + { + return nullptr; + } + + virtual SalSystem* CreateSalSystem() SAL_OVERRIDE + { + return nullptr; + } + virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* /* salGraphics */, + long /* nDX */, + long /* nDY */, + sal_uInt16 /* nBitCount */, + const SystemGraphicsData* /* systemGraphicsData */ ) SAL_OVERRIDE + { + return nullptr; + } +}; + +#endif // INCLUDED_VCL_INC_OPENGL_OPENGLINST_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/opengl/salbmp.h b/vcl/inc/opengl/salbmp.h new file mode 100644 index 0000000..1ed8aa1 --- /dev/null +++ b/vcl/inc/opengl/salbmp.h @@ -0,0 +1,98 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * 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/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#ifndef INCLUDED_VCL_INC_OPENGL_SALBMP_H +#define INCLUDED_VCL_INC_OPENGL_SALBMP_H + +#include "tools/gen.hxx" + +#include "basebmp/bitmapdevice.hxx" + +#include "vcl/salbtype.hxx" + +#include "headless/svpgdi.hxx" + +#include "salinst.hxx" +#include "salvd.hxx" +#include "salbmp.hxx" + +// - SalBitmap - + +struct BitmapBuffer; +class BitmapPalette; + +class OpenGLSalBitmap : public SalBitmap +{ +public: + OpenGLSalBitmap() {} + virtual ~OpenGLSalBitmap() {} + +public: + + // SalBitmap methods + bool Create( const Size& /* rSize*/, sal_uInt16 /* nBitCount */, const BitmapPalette& /* rPal */ ) SAL_OVERRIDE + { + return false; + } + bool Create( const SalBitmap& /* rSalBmp */ ) SAL_OVERRIDE + { + return false; + } + bool Create( const SalBitmap& /* rSalBmp */, SalGraphics* /* pGraphics */ ) SAL_OVERRIDE + { + return false; + } + bool Create( const SalBitmap& /* rSalBmp */, sal_uInt16 /* nNewBitCount */ ) SAL_OVERRIDE + { + return false; + } + virtual bool Create( const ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XBitmapCanvas > /* xBitmapCanvas */, + Size& /* rSize */, + bool /* bMask */ ) SAL_OVERRIDE + { + return false; + } + + void Destroy() SAL_OVERRIDE {} + + Size GetSize() const SAL_OVERRIDE + { + return {}; + } + sal_uInt16 GetBitCount() const SAL_OVERRIDE + { + return 0; + } + + BitmapBuffer *AcquireBuffer( bool /* bReadOnly */ ) SAL_OVERRIDE + { + return nullptr; + } + void ReleaseBuffer( BitmapBuffer* /* pBuffer */, bool /* bReadOnly */ ) SAL_OVERRIDE {} + + bool GetSystemData( BitmapSystemData& /* rData */ ) SAL_OVERRIDE + { + return false; + } + +}; + +#endif // INCLUDED_VCL_INC_OPENGL_SALBMP_H + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/opengl/salgdi.h b/vcl/inc/opengl/salgdi.h new file mode 100644 index 0000000..4631182 --- /dev/null +++ b/vcl/inc/opengl/salgdi.h @@ -0,0 +1,302 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * 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/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#ifndef INCLUDED_VCL_INC_OPENGL_SALGDI_H +#define INCLUDED_VCL_INC_OPENGL_SALGDI_H + + +#include "salgdi.hxx" +#include <vcl/sysdata.hxx> + +class OpenGLSalGraphics : public SalGraphics +{ +protected: + virtual bool drawTransformedBitmap( + const basegfx::B2DPoint& /* rNull */, + const basegfx::B2DPoint& /* rX */, + const basegfx::B2DPoint& /* rY */, + const SalBitmap& /* rSourceBitmap */, + const SalBitmap* /* pAlphaBitmap */) SAL_OVERRIDE + { + return false; + } +public: + OpenGLSalGraphics() {} + virtual ~OpenGLSalGraphics() {} + + virtual bool setClipRegion( const vcl::Region& ) SAL_OVERRIDE + { + return false; + } + + // draw --> LineColor and FillColor and RasterOp and ClipRegion + virtual void drawPixel( long /* nX */, long /* nY */ ) SAL_OVERRIDE {} + virtual void drawPixel( long /* nX */, long /* nY */, SalColor /* nSalColor */ ) SAL_OVERRIDE {} + virtual void drawLine( long /* nX1 */, long /* nY1 */, long /* nX2 */, long /* nY2 */ ) SAL_OVERRIDE {} + virtual void drawRect( long /* nX */, long /* nY */, long /* nWidth */, long /* nHeight */ ) SAL_OVERRIDE {} + virtual void drawPolyLine( sal_uInt32 /* nPoints */, const SalPoint* /* pPtAry */ ) SAL_OVERRIDE {} + virtual void drawPolygon( sal_uInt32 /* nPoints */, const SalPoint* /* pPtAry */ ) SAL_OVERRIDE {} + virtual void drawPolyPolygon( sal_uInt32 /* nPoly */, const sal_uInt32* /* pPoints */, PCONSTSALPOINT* /* pPtAry */ ) SAL_OVERRIDE {} + virtual bool drawPolyPolygon( const ::basegfx::B2DPolyPolygon&, double /* fTransparency */ ) SAL_OVERRIDE + { + return false; + } + virtual bool drawPolyLineBezier( sal_uInt32 /* nPoints */, const SalPoint* /* pPtAry */, const sal_uInt8* /* pFlgAry */ ) SAL_OVERRIDE + { + return false; + } + virtual bool drawPolygonBezier( sal_uInt32 /* nPoints */, const SalPoint* /* pPtAry */, const sal_uInt8* /* pFlgAry */ ) SAL_OVERRIDE + { + return false; + } + virtual bool drawPolyPolygonBezier( sal_uInt32 /* nPoly */, const sal_uInt32* /* pPoints */, const SalPoint* const* /* pPtAry */, const sal_uInt8* const* /* pFlgAry */ ) SAL_OVERRIDE + { + return false; + } + virtual bool drawPolyLine( + const ::basegfx::B2DPolygon&, + double /* fTransparency */, + const ::basegfx::B2DVector& /* rLineWidths */, + basegfx::B2DLineJoin, + com::sun::star::drawing::LineCap /* eLineCap */) SAL_OVERRIDE + { + return false; + } + + // CopyArea --> No RasterOp, but ClipRegion + virtual void copyArea( long /* nDestX */, long /* nDestY */, long /* nSrcX */, long /* nSrcY */, long /* nSrcWidth */, + long /* nSrcHeight */, sal_uInt16 /* nFlags */ ) SAL_OVERRIDE {} + + // CopyBits and DrawBitmap --> RasterOp and ClipRegion + // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics + virtual void copyBits( const SalTwoRect& /* rPosAry */, SalGraphics* /* pSrcGraphics */ ) SAL_OVERRIDE {} + virtual void drawBitmap( const SalTwoRect& /* rPosAry */, const SalBitmap& /* rSalBitmap */ ) SAL_OVERRIDE {} + virtual void drawBitmap( const SalTwoRect& /* rPosAry */, + const SalBitmap& /* rSalBitmap */, + SalColor /* nTransparentColor */ ) SAL_OVERRIDE {} + virtual void drawBitmap( const SalTwoRect& /* rPosAry */, + const SalBitmap& /* rSalBitmap */, + const SalBitmap& /* rTransparentBitmap */ ) SAL_OVERRIDE {} + virtual void drawMask( const SalTwoRect& /* rPosAry */, + const SalBitmap& /* rSalBitmap */, + SalColor /* nMaskColor */ ) SAL_OVERRIDE {} + + virtual SalBitmap* getBitmap( long /* nX */, long /* nY */, long /* nWidth */, long /* nHeight */ ) SAL_OVERRIDE + { + return nullptr; + } + virtual SalColor getPixel( long /* nX */, long /* nY */ ) SAL_OVERRIDE + { + return {}; + } + + // invert --> ClipRegion (only Windows or VirDevs) + virtual void invert( long /* nX */, long /* nY */, long /* nWidth */, long /* nHeight */, SalInvert /* nFlags */) SAL_OVERRIDE {} + virtual void invert( sal_uInt32 /* nPoints */, const SalPoint* /* pPtAry */, SalInvert /* nFlags */ ) SAL_OVERRIDE {} + + virtual bool drawEPS( long /* nX */, long /* nY */, long /* nWidth */, long /* nHeight */, void* /* pPtr */, sal_uLong /* nSize */ ) SAL_OVERRIDE; + + virtual bool drawAlphaBitmap( const SalTwoRect&, + const SalBitmap& /* rSourceBitmap */, + const SalBitmap& /* rAlphaBitmap */ ) SAL_OVERRIDE + { + return false; + } + + virtual bool drawAlphaRect( long /* nX */, long /* nY */, long /* nWidth */, + long /* nHeight */, sal_uInt8 /* nTransparency */ ) SAL_OVERRIDE + { + return false; + } + + virtual bool hitTestNativeControl( ControlType /* nType */, ControlPart /* nPart */, const Rectangle& /* rControlRegion */, + const Point& /* aPos */, bool& /* rIsInside */ ) SAL_OVERRIDE + { + return false; + } + virtual bool drawNativeControl( ControlType /* nType */, ControlPart /* nPart */, const Rectangle& /* rControlRegion */, + ControlState /* nState */, const ImplControlValue& /* aValue */, + const OUString& /* aCaption */ ) SAL_OVERRIDE + + { + return false; + } + virtual bool getNativeControlRegion( ControlType /* nType */, ControlPart /* nPart */, const Rectangle& /* rControlRegion */, ControlState /* nState */, + const ImplControlValue& /* aValue */, const OUString& /* aCaption */, + Rectangle & /* rNativeBoundingRegion */, Rectangle & /* rNativeContentRegion */ ) SAL_OVERRIDE + + { + return false; + } + // get device resolution + virtual void GetResolution( sal_Int32& /* rDPIX */, sal_Int32& /* rDPIY */ ) SAL_OVERRIDE; + // get the depth of the device + virtual sal_uInt16 GetBitCount() const SAL_OVERRIDE + { + return 0; + } + // get the width of the device + virtual long GetGraphicsWidth() const SAL_OVERRIDE + { + return 0L; + } + + // set the clip region to empty + virtual void ResetClipRegion() SAL_OVERRIDE {} + + // set the line color to transparent (= don't draw lines) + virtual void SetLineColor() SAL_OVERRIDE {} + // set the line color to a specific color + virtual void SetLineColor( SalColor /* nSalColor */ ) SAL_OVERRIDE {} + // set the fill color to transparent (= don't fill) + virtual void SetFillColor() SAL_OVERRIDE {} + // set the fill color to a specific color, shapes will be + // filled accordingly + virtual void SetFillColor( SalColor /* nSalColor */ ) SAL_OVERRIDE {} + // enable/disable XOR drawing + virtual void SetXORMode( bool /* bSet */, bool /* bInvertOnly */ ) SAL_OVERRIDE {} + // set line color for raster operations + virtual void SetROPLineColor( SalROPColor /* nROPColor */ ) SAL_OVERRIDE {} + // set fill color for raster operations + virtual void SetROPFillColor( SalROPColor /* nROPColor */ ) SAL_OVERRIDE {} + // set the text color to a specific color + virtual void SetTextColor( SalColor /* nSalColor */ ) SAL_OVERRIDE {} + // set the font + virtual sal_uInt16 SetFont( FontSelectPattern*, int /* nFallbackLevel */ ) SAL_OVERRIDE + { + return 0; + } + // get the current font's metrics + virtual void GetFontMetric( ImplFontMetricData*, int /* nFallbackLevel */ ) SAL_OVERRIDE {} + // get the repertoire of the current font + virtual const ImplFontCharMap* + GetImplFontCharMap() const SAL_OVERRIDE + { + return nullptr; + } + virtual bool GetFontCapabilities(vcl::FontCapabilities & /* rFontCapabilities */) const SAL_OVERRIDE + { + return false; + } + // graphics must fill supplied font list + virtual void GetDevFontList( PhysicalFontCollection* ) SAL_OVERRIDE {} + // graphics must drop any cached font info + virtual void ClearDevFontCache() SAL_OVERRIDE {} + virtual bool AddTempDevFont( PhysicalFontCollection*, const OUString& /* rFileURL */, const OUString& /* rFontName */ ) SAL_OVERRIDE + { + return false; + } + // CreateFontSubset: a method to get a subset of glyhps of a font + // inside a new valid font file + // returns TRUE if creation of subset was successful + // parameters: rToFile: contains a osl file URL to write the subset to + // pFont: describes from which font to create a subset + // pGlyphIDs: the glyph ids to be extracted + // pEncoding: the character code corresponding to each glyph + // pWidths: the advance widths of the correspoding glyphs (in PS font units) + // nGlyphs: the number of glyphs + // rInfo: additional outgoing information + // implementation note: encoding 0 with glyph id 0 should be added implicitly + // as "undefined character" + virtual bool CreateFontSubset( const OUString& /* rToFile */, + const PhysicalFontFace* /* pFont */, + sal_GlyphId* /* pGlyphIds */, + sal_uInt8* /* pEncoding */, + sal_Int32* /* pWidths */, + int /* nGlyphs */, + FontSubsetInfo& /* rInfo */ // out parameter + ) SAL_OVERRIDE + { + return false; + } + + // GetFontEncodingVector: a method to get the encoding map Unicode + // to font encoded character; this is only used for type1 fonts and + // may return NULL in case of unknown encoding vector + // if ppNonEncoded is set and non encoded characters (that is type1 + // glyphs with only a name) exist it is set to the corresponding + // map for non encoded glyphs; the encoding vector contains -1 + // as encoding for these cases + virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** /* ppNonEncoded */ ) SAL_OVERRIDE + { + return nullptr; + } + + // GetEmbedFontData: gets the font data for a font marked + // embeddable by GetDevFontList or NULL in case of error + // parameters: pFont: describes the font in question + // pWidths: the widths of all glyphs from char code 0 to 255 + // pWidths MUST support at least 256 members; + // rInfo: additional outgoing information + // pDataLen: out parameter, contains the byte length of the returned buffer + virtual const void* GetEmbedFontData( const PhysicalFontFace*, + const sal_Ucs* /* pUnicodes */, + sal_Int32* /* pWidths */, + FontSubsetInfo& /* rInfo */, + long* /* pDataLen */ ) SAL_OVERRIDE + { + return nullptr; + } + // frees the font data again + virtual void FreeEmbedFontData( const void* /* pData */, long /* nDataLen */ ) SAL_OVERRIDE {} + + virtual void GetGlyphWidths( const PhysicalFontFace*, + bool /* bVertical */, + Int32Vector& /* rWidths */, + Ucs2UIntMap& /* rUnicodeEnc */ ) SAL_OVERRIDE {} + + virtual bool GetGlyphBoundRect( sal_GlyphId, Rectangle& ) SAL_OVERRIDE + { + return false; + } + virtual bool GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) SAL_OVERRIDE + { + return false; + } + + virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int /*nFallbackLevel */ ) SAL_OVERRIDE + { + return nullptr; + } + virtual void DrawServerFontLayout( const ServerFontLayout& ) SAL_OVERRIDE {} + virtual bool supportsOperation( OutDevSupportType ) const SAL_OVERRIDE + { + return false; + } + + // Query the platform layer for control support + virtual bool IsNativeControlSupported( ControlType /* nType */, ControlPart /* Part */ ) SAL_OVERRIDE + { + return false; + } + + virtual SystemGraphicsData + GetGraphicsData() const SAL_OVERRIDE + { + return {}; + } + virtual SystemFontData GetSysFontData( int /* nFallbacklevel */ ) const SAL_OVERRIDE + { + return {}; + } +}; + +#endif // INCLUDED_VCL_INC_OPENGL_SALGDI_H + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/opengl/salvd.h b/vcl/inc/opengl/salvd.h new file mode 100644 index 0000000..29b3c3fc --- /dev/null +++ b/vcl/inc/opengl/salvd.h @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * 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/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#ifndef INCLUDED_VCL_INC_OPENGL_SALVD_H +#define INCLUDED_VCL_INC_OPENGL_SALVD_H + +#include "opengl/salgdi.h" + +#include "salvd.hxx" + +struct SalVirDevData +{ +}; + +typedef struct SalVirDevData SalVirDevData; +typedef SalVirDevData *SalVirDevDataPtr; +typedef SalVirDevDataPtr *SalVirDevDataHandle; + +class OpenGLSalGraphics; + +class OpenGLSalVirtualDevice : public SalVirtualDevice +{ +public: + OpenGLSalVirtualDevice( OpenGLSalGraphics* /* pGraphic */, long /* nDX */, long /* nDY */, sal_uInt16 /* nBitCount */, const SystemGraphicsData * /* pData */ ){} + virtual ~OpenGLSalVirtualDevice() {} + + virtual SalGraphics* AcquireGraphics() SAL_OVERRIDE + { + return nullptr; + } + virtual void ReleaseGraphics( SalGraphics* /* pGraphics */ ) SAL_OVERRIDE {} + virtual bool SetSize( long /* nNewDX */, long /* nNewDY */ ) SAL_OVERRIDE + { + return false; + } + virtual void GetSize( long& /* rWidth */ , long& /* rHeight */ ) SAL_OVERRIDE {} +}; + +#endif // INCLUDED_VCL_INC_OPENGL_SALVD_H + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/saldatabasic.hxx b/vcl/inc/saldatabasic.hxx index 6803d60..e659375 100644 --- a/vcl/inc/saldatabasic.hxx +++ b/vcl/inc/saldatabasic.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_VCL_INC_SALDATABASIC_HXX #define INCLUDED_VCL_INC_SALDATABASIC_HXX +#include <config_features.h> + #include <svdata.hxx> #include <salinst.hxx> #include <osl/module.h> @@ -27,8 +29,12 @@ #include "vcl/dllapi.h" #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#include "opengl/salgdi.h" +#else #include "quartz/salgdi.h" #endif +#endif namespace psp { @@ -47,9 +53,12 @@ public: SalData(); virtual ~SalData(); #ifdef IOS +#if HAVE_VCL_OPEN_GL_BACKEND +#else SystemFontList* mpFontList; CGColorSpaceRef mxRGBSpace; CGColorSpaceRef mxGraySpace; +#endif static void ensureThreadAutoreleasePool() {}; #endif }; diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx index f1d87b8..508539c 100644 --- a/vcl/ios/iosinst.cxx +++ b/vcl/ios/iosinst.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> + #include <premac.h> #include <UIKit/UIKit.h> #include <postmac.h> @@ -197,10 +199,14 @@ const OUString& SalGetDesktopEnvironment() } SalData::SalData() : - m_pInstance( 0 ), + m_pInstance( 0 ) +#if HAVE_VCL_OPEN_GL_BACKEND +#else + , mpFontList( 0 ), mxRGBSpace( CGColorSpaceCreateDeviceRGB() ), mxGraySpace( CGColorSpaceCreateDeviceGray() ) +#endif { } @@ -232,8 +238,13 @@ int IosSalSystem::ShowNativeDialog( const OUString& rTitle, (void)rButtons; (void)nDefButton; +#if HAVE_VCL_OPEN_GL_BACKEND + // CreateNSString doesn't link, dunno why + (void)rTitle; + (void)rMessage; +#else NSLog(@"%@: %@", CreateNSString(rTitle), CreateNSString(rMessage)); - +#endif return 0; } commit 685aa13ccd1961db2749c131453cceada0ff64de Author: Ptyl Dragon <p...@cloudon.com> Date: Tue Sep 30 12:41:02 2014 +0300 Added flag --enable-vgl mapped to HAVE_VCL_OPEN_GL_BACKEND Change-Id: I8077d90ecb950740ce76a37444658d8bdc799453 diff --git a/config_host/config_features.h.in b/config_host/config_features.h.in index 04dc7ba..9c97eb5 100644 --- a/config_host/config_features.h.in +++ b/config_host/config_features.h.in @@ -136,4 +136,9 @@ */ #define HAVE_FEATURE_COLLADA 0 +/* + * Whether VCL renders using Open GL. + */ +#define HAVE_VCL_OPEN_GL_BACKEND 0 + #endif diff --git a/configure.ac b/configure.ac index 6e17ac2..f01ed6f 100644 --- a/configure.ac +++ b/configure.ac @@ -1222,6 +1222,11 @@ AC_ARG_ENABLE(vlc, [Enable building with the VLC avmedia backend.]), ,enable_vlc=no) +AC_ARG_ENABLE(vgl, + AS_HELP_STRING([--enable-vgl], + [Enable building with the VCL Open GL backend.]), +,enable_vgl=no) + AC_ARG_ENABLE(neon, AS_HELP_STRING([--disable-neon], [Disable neon and the compilation of webdav binding.]), @@ -2442,6 +2447,10 @@ if test $_os != iOS -a $_os != Android; then AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT) fi +if test "$enable_vgl" == yes; then + AC_DEFINE(HAVE_VCL_OPEN_GL_BACKEND) +fi + DISABLE_EXPORT='' if test "$enable_export" != no; then BUILD_TYPE="$BUILD_TYPE EXPORT" diff --git a/ios/experimental/TiledLibreOffice/.gitignore b/ios/experimental/TiledLibreOffice/.gitignore new file mode 100644 index 0000000..a8966da9 --- /dev/null +++ b/ios/experimental/TiledLibreOffice/.gitignore @@ -0,0 +1,9 @@ +# +# This file is part of the LibreOffice project. +# +# 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/. +# + +/Resources _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits