Kaydet (Commit) 36679103 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl Kaydeden (comit) Tomaž Vajngerl

move ImpNodeCache into Octree.cxx and clean-up

ImpNodeCache is specific to Octree so it's best that it lives
near the source.

Change-Id: I35e937343312b0ab18ed1a4dcaa067ea01a0191f
Reviewed-on: https://gerrit.libreoffice.org/70736Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
Tested-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst 8aaeaa27
......@@ -104,41 +104,6 @@ inline BitmapColor ImpErrorQuad::ImplGetColor()
std::clamp(nBlue, 0L, 8160L) >> 5);
}
class ImpNodeCache
{
OctreeNode* pActNode;
public:
ImpNodeCache(const sal_uLong nInitSize);
~ImpNodeCache();
inline OctreeNode* ImplGetFreeNode();
inline void ImplReleaseNode(OctreeNode* pNode);
};
inline OctreeNode* ImpNodeCache::ImplGetFreeNode()
{
OctreeNode* pNode;
if (!pActNode)
{
pActNode = new OctreeNode;
pActNode->pNextInCache = nullptr;
}
pNode = pActNode;
pActNode = pNode->pNextInCache;
memset(pNode, 0, sizeof(OctreeNode));
return pNode;
}
inline void ImpNodeCache::ImplReleaseNode(OctreeNode* pNode)
{
pNode->pNextInCache = pActNode;
pActNode = pNode;
}
#endif // INCLUDED_VCL_INC_IMPOCTREE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -23,7 +23,6 @@
#include <vcl/bitmapaccess.hxx>
#include <bitmap/Octree.hxx>
#include <bitmap/impoctree.hxx>
namespace
{
......@@ -34,30 +33,59 @@ constexpr sal_uLong gnBits = 8 - OCTREE_BITS;
} // end anonymous namespace
ImpNodeCache::ImpNodeCache(const sal_uLong nInitSize)
: pActNode(nullptr)
class ImpNodeCache
{
const sal_uLong nSize = nInitSize + 4;
private:
OctreeNode* mpActNode;
for (sal_uLong i = 0; i < nSize; i++)
public:
ImpNodeCache(const sal_uLong nInitSize)
: mpActNode(nullptr)
{
OctreeNode* pNewNode = new OctreeNode;
const sal_uLong nSize = nInitSize + 4;
pNewNode->pNextInCache = pActNode;
pActNode = pNewNode;
for (sal_uLong i = 0; i < nSize; i++)
{
OctreeNode* pNewNode = new OctreeNode;
pNewNode->pNextInCache = mpActNode;
mpActNode = pNewNode;
}
}
}
ImpNodeCache::~ImpNodeCache()
{
while (pActNode)
~ImpNodeCache()
{
OctreeNode* pNode = pActNode;
while (mpActNode)
{
OctreeNode* pNode = mpActNode;
pActNode = pNode->pNextInCache;
delete pNode;
mpActNode = pNode->pNextInCache;
delete pNode;
}
}
}
OctreeNode* ImplGetFreeNode()
{
OctreeNode* pNode;
if (!mpActNode)
{
mpActNode = new OctreeNode;
mpActNode->pNextInCache = nullptr;
}
pNode = mpActNode;
mpActNode = pNode->pNextInCache;
memset(pNode, 0, sizeof(OctreeNode));
return pNode;
}
void ImplReleaseNode(OctreeNode* pNode)
{
pNode->pNextInCache = mpActNode;
mpActNode = pNode;
}
};
Octree::Octree(const BitmapReadAccess& rReadAcc, sal_uLong nColors)
: mnLeafCount(0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment