/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef SC_PFUNCACHE_HXX #define SC_PFUNCACHE_HXX #include #include #include "rangelst.hxx" #include "printopt.hxx" class ScDocShell; class ScMarkData; /** Possible types of selection for print functions */ enum ScPrintSelectionMode { SC_PRINTSEL_INVALID, SC_PRINTSEL_DOCUMENT, SC_PRINTSEL_CURSOR, SC_PRINTSEL_RANGE, SC_PRINTSEL_RANGE_EXCLUSIVELY_OLE_AND_DRAW_OBJECTS }; /** Stores the selection in the ScPrintFuncCache so it is only used for the same selection again. */ class ScPrintSelectionStatus { ScPrintSelectionMode eMode; ScRangeList aRanges; ScPrintOptions aOptions; public: ScPrintSelectionStatus() : eMode(SC_PRINTSEL_INVALID) {} ~ScPrintSelectionStatus() {} void SetMode(ScPrintSelectionMode eNew) { eMode = eNew; } void SetRanges(const ScRangeList& rNew) { aRanges = rNew; } void SetOptions(const ScPrintOptions& rNew) { aOptions = rNew; } BOOL operator==(const ScPrintSelectionStatus& rOther) const { return eMode == rOther.eMode && aRanges == rOther.aRanges && aOptions == rOther.aOptions; } ScPrintSelectionMode GetMode() const { return eMode; } const ScPrintOptions& GetOptions() const { return aOptions; } }; /** The range that is printed on a page (excluding repeated columns/rows), and its position on the page, used to find hyperlink targets. */ struct ScPrintPageLocation { long nPage; ScRange aCellRange; Rectangle aRectangle; // pixels ScPrintPageLocation() : nPage(-1) {} // default: invalid ScPrintPageLocation( long nP, const ScRange& rRange, const Rectangle& rRect ) : nPage(nP), aCellRange(rRange), aRectangle(rRect) {} }; /** Stores the data for printing that is needed from several sheets, so it doesn't have to be calculated for rendering each page. */ class ScPrintFuncCache { ScPrintSelectionStatus aSelection; ScDocShell* pDocSh; long nTotalPages; long nPages[MAXTABCOUNT]; long nFirstAttr[MAXTABCOUNT]; std::vector aLocations; bool bLocInitialized; public: ScPrintFuncCache( ScDocShell* pD, const ScMarkData& rMark, const ScPrintSelectionStatus& rStatus ); ~ScPrintFuncCache(); BOOL IsSameSelection( const ScPrintSelectionStatus& rStatus ) const; void InitLocations( const ScMarkData& rMark, OutputDevice* pDev ); bool FindLocation( const ScAddress& rCell, ScPrintPageLocation& rLocation ) const; long GetPageCount() const { return nTotalPages; } long GetFirstAttr( SCTAB nTab ) const { return nFirstAttr[nTab]; } SCTAB GetTabForPage( long nPage ) const; long GetTabStart( SCTAB nTab ) const; long GetDisplayStart( SCTAB nTab ) const; }; #endif .2'>distro/collabora/libreoffice-4.0.6.2 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/touch
AgeCommit message (Collapse)Author
2013-09-19Directly build UNOIDL .rdb files from .idl filesStephan Bergmann
...via unoidl-write and the new source-format registry provicers, instead of using idlc to produce .urd files, regmerge to merge them into legacy .rdb files, and unoidl-write to translate those to new UNOIDL .rdb files. gb_UnoApi and gb_InternalUnoApi ctors take an additional argument now that is the path (below $(SRCDIR)) of the source-format registry from which to obtain UNOIDL entity definitions. It can either be an .idl file (in which case no *_add_idlfiles calls should be used and the resulting .rdb will contain all the entities from that one .idl file; used in some tests to conveniently define all test-specific entities in a single file) or a directory denoting the root of an .idl file tree (in which case *_add_idlfiles calls specify the entites to include in the resulting .idl file). (In the first case, the generated .rdb file needs to depend on that single .idl file, so the gb_UnoApiTarget ctor contains a dependency on that additional argument, which happens, as a side effect, to trigger rebuilds in the second, tree-based case when addition/removal of .idl files in the tree causes updates of directory time-stamps.) UnoApiPartTarget and all the dependency-tracking logic based on .urd files in solenv/gbuild/UnoApiTarget.mk is gone. Generation of an .rdb file now depends on its source registry (see previous paragraph) and all the .idl files specified with *_add_idlfiles (in the second, tree-based case above). A consequence of that is that gb_UnoApi_add_idlfile, -_nohdl, and -_noheader all do the same now. I left them in for now anyway, maybe they become relevant again when the use of cppumaker is changed to read directly from a source-format registry instead of going via a .rdb registry. The legacy tools idlc, regcompare, regmerge, and regview are still contained in the URE or SDK for now. cb344cd59e1ddb7c6db66dbd9263b4755969d4ba "Revert 'Looks like idlc resolved typedefs inside sequence<...>'" is re-reverted as now "the current offapi.rdb is generated via unoidl-write instead of idlc." Change-Id: I3d9d92f17326bc9f49dd934c85aab6a17951d06d