/* -*- 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 _SV_OCTREE_HXX #define _SV_OCTREE_HXX #include #include #define OCTREE_BITS 5 #define OCTREE_BITS_1 10 typedef struct OctreeNode { sal_uLong nCount; sal_uLong nRed; sal_uLong nGreen; sal_uLong nBlue; OctreeNode* pChild[ 8 ]; OctreeNode* pNext; OctreeNode* pNextInCache; sal_uInt16 nPalIndex; sal_Bool bLeaf; } NODE; typedef NODE* PNODE; typedef PNODE* PPNODE; class ImpNodeCache; class BitmapReadAccess; class VCL_PLUGIN_PUBLIC Octree { private: BitmapPalette aPal; sal_uLong nMax; sal_uLong nLeafCount; sal_uLong nLevel; PNODE pTree; PNODE pReduce[ OCTREE_BITS + 1 ]; BitmapColor* pColor; ImpNodeCache* pNodeCache; const BitmapReadAccess* pAcc; sal_uInt16 nPalIndex; Octree() {} void CreatePalette( PNODE pNode ); void GetPalIndex( PNODE pNode ); SAL_DLLPRIVATE void ImplCreateOctree(); SAL_DLLPRIVATE void ImplDeleteOctree( PPNODE ppNode ); SAL_DLLPRIVATE void ImplAdd( PPNODE ppNode ); SAL_DLLPRIVATE void ImplReduce(); public: Octree( const BitmapReadAccess& rReadAcc, sal_uLong nColors ); ~Octree(); inline const BitmapPalette& GetPalette(); inline sal_uInt16 GetBestPaletteIndex( const BitmapColor& rColor ); }; inline const BitmapPalette& Octree::GetPalette() { aPal.SetEntryCount( (sal_uInt16) nLeafCount ); nPalIndex = 0; CreatePalette( pTree ); return aPal; } inline sal_uInt16 Octree::GetBestPaletteIndex( const BitmapColor& rColor ) { pColor = &(BitmapColor&) rColor; nPalIndex = 65535; nLevel = 0L; GetPalIndex( pTree ); return nPalIndex; } class VCL_PLUGIN_PUBLIC InverseColorMap { private: sal_uInt8* pBuffer; sal_uInt8* pMap; const sal_uLong nBits; SAL_DLLPRIVATE void ImplCreateBuffers( const sal_uLong nMax ); public: explicit InverseColorMap( const BitmapPalette& rPal ); ~InverseColorMap(); inline sal_uInt16 GetBestPaletteIndex( const BitmapColor& rColor ); }; inline sal_uInt16 InverseColorMap::GetBestPaletteIndex( const BitmapColor& rColor ) { return pMap[ ( ( (sal_uLong) rColor.GetRed() >> nBits ) << OCTREE_BITS_1 ) | ( ( (sal_uLong) rColor.GetGreen() >> nBits ) << OCTREE_BITS ) | ( (sal_uLong) rColor.GetBlue() >> nBits ) ]; } #endif // _SV_OCTREE_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ > LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2017-04-21gbuild: Remove MSVC 2013 legacy codeDavid Ostrovsky
2017-04-02libstaroffice import filter improvementsosnola
2016-02-08wpftimpress: use service constructorDavid Tardon
2015-05-19glm is only needed for libetonyek buildDavid Tardon
2015-05-19upload libetonyek 0.1.2David Tardon
2015-05-19upload libwps 0.4.0osnola
2015-02-08tdf#84168 convert wpftimpress to use ImportFilter base classKishor Bhat
2014-10-20Add a filter for AppleWork's presentation file...osnola
2014-05-26rebase all import libsDavid Tardon
2014-04-24change libwriterperfect to shared libraryDavid Tardon
2013-12-13Missing "boost_headers"Stephan Bergmann
2013-12-13handle Keynote package format tooDavid Tardon
2013-10-30integrate Apple Keynote import filterDavid Tardon