Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp')
-rw-r--r--source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp123
1 files changed, 67 insertions, 56 deletions
diff --git a/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp b/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp
index 37273b0dd1e..6c5cbc71a76 100644
--- a/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp
+++ b/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp
@@ -25,91 +25,102 @@
namespace Freestyle {
-ArbitraryGridDensityProvider::ArbitraryGridDensityProvider(OccluderSource& source, const real proscenium[4],
+ArbitraryGridDensityProvider::ArbitraryGridDensityProvider(OccluderSource &source,
+ const real proscenium[4],
unsigned numCells)
-: GridDensityProvider(source), numCells(numCells)
+ : GridDensityProvider(source), numCells(numCells)
{
- initialize (proscenium);
+ initialize(proscenium);
}
-ArbitraryGridDensityProvider::ArbitraryGridDensityProvider(OccluderSource& source, const BBox<Vec3r>& bbox,
- const GridHelpers::Transform& transform, unsigned numCells)
-: GridDensityProvider(source), numCells(numCells)
+ArbitraryGridDensityProvider::ArbitraryGridDensityProvider(OccluderSource &source,
+ const BBox<Vec3r> &bbox,
+ const GridHelpers::Transform &transform,
+ unsigned numCells)
+ : GridDensityProvider(source), numCells(numCells)
{
- real proscenium[4];
- calculateQuickProscenium(transform, bbox, proscenium);
+ real proscenium[4];
+ calculateQuickProscenium(transform, bbox, proscenium);
- initialize (proscenium);
+ initialize(proscenium);
}
-ArbitraryGridDensityProvider::ArbitraryGridDensityProvider(OccluderSource& source, unsigned numCells)
-: GridDensityProvider(source), numCells(numCells)
+ArbitraryGridDensityProvider::ArbitraryGridDensityProvider(OccluderSource &source,
+ unsigned numCells)
+ : GridDensityProvider(source), numCells(numCells)
{
- real proscenium[4];
- calculateOptimalProscenium(source, proscenium);
+ real proscenium[4];
+ calculateOptimalProscenium(source, proscenium);
- initialize (proscenium);
+ initialize(proscenium);
}
-ArbitraryGridDensityProvider::~ArbitraryGridDensityProvider() {}
+ArbitraryGridDensityProvider::~ArbitraryGridDensityProvider()
+{
+}
void ArbitraryGridDensityProvider::initialize(const real proscenium[4])
{
- float prosceniumWidth = (proscenium[1] - proscenium[0]);
- float prosceniumHeight = (proscenium[3] - proscenium[2]);
- real cellArea = prosceniumWidth * prosceniumHeight / numCells;
- if (G.debug & G_DEBUG_FREESTYLE) {
- cout << prosceniumWidth << " x " << prosceniumHeight << " grid with cells of area " << cellArea << "." << endl;
- }
-
- _cellSize = sqrt(cellArea);
- // Now we know how many cells make each side of our grid
- _cellsX = ceil(prosceniumWidth / _cellSize);
- _cellsY = ceil(prosceniumHeight / _cellSize);
- if (G.debug & G_DEBUG_FREESTYLE) {
- cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
- }
-
- // Make sure the grid exceeds the proscenium by a small amount
- float safetyZone = 0.1f;
- if (_cellsX * _cellSize < prosceniumWidth * (1.0 + safetyZone)) {
- _cellsX = ceil(prosceniumWidth * (1.0 + safetyZone) / _cellSize);
- }
- if (_cellsY * _cellSize < prosceniumHeight * (1.0 + safetyZone)) {
- _cellsY = ceil(prosceniumHeight * (1.0 + safetyZone) / _cellSize);
- }
- if (G.debug & G_DEBUG_FREESTYLE) {
- cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
- }
-
- // Find grid origin
- _cellOrigin[0] = ((proscenium[0] + proscenium[1]) / 2.0) - (_cellsX / 2.0) * _cellSize;
- _cellOrigin[1] = ((proscenium[2] + proscenium[3]) / 2.0) - (_cellsY / 2.0) * _cellSize;
+ float prosceniumWidth = (proscenium[1] - proscenium[0]);
+ float prosceniumHeight = (proscenium[3] - proscenium[2]);
+ real cellArea = prosceniumWidth * prosceniumHeight / numCells;
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << prosceniumWidth << " x " << prosceniumHeight << " grid with cells of area " << cellArea
+ << "." << endl;
+ }
+
+ _cellSize = sqrt(cellArea);
+ // Now we know how many cells make each side of our grid
+ _cellsX = ceil(prosceniumWidth / _cellSize);
+ _cellsY = ceil(prosceniumHeight / _cellSize);
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
+ }
+
+ // Make sure the grid exceeds the proscenium by a small amount
+ float safetyZone = 0.1f;
+ if (_cellsX * _cellSize < prosceniumWidth * (1.0 + safetyZone)) {
+ _cellsX = ceil(prosceniumWidth * (1.0 + safetyZone) / _cellSize);
+ }
+ if (_cellsY * _cellSize < prosceniumHeight * (1.0 + safetyZone)) {
+ _cellsY = ceil(prosceniumHeight * (1.0 + safetyZone) / _cellSize);
+ }
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
+ }
+
+ // Find grid origin
+ _cellOrigin[0] = ((proscenium[0] + proscenium[1]) / 2.0) - (_cellsX / 2.0) * _cellSize;
+ _cellOrigin[1] = ((proscenium[2] + proscenium[3]) / 2.0) - (_cellsY / 2.0) * _cellSize;
}
ArbitraryGridDensityProviderFactory::ArbitraryGridDensityProviderFactory(unsigned numCells)
-: numCells(numCells)
+ : numCells(numCells)
{
}
-ArbitraryGridDensityProviderFactory::~ArbitraryGridDensityProviderFactory() {}
+ArbitraryGridDensityProviderFactory::~ArbitraryGridDensityProviderFactory()
+{
+}
-AutoPtr<GridDensityProvider> ArbitraryGridDensityProviderFactory::newGridDensityProvider(OccluderSource& source,
- const real proscenium[4])
+AutoPtr<GridDensityProvider> ArbitraryGridDensityProviderFactory::newGridDensityProvider(
+ OccluderSource &source, const real proscenium[4])
{
- return AutoPtr<GridDensityProvider>(new ArbitraryGridDensityProvider(source, proscenium, numCells));
+ return AutoPtr<GridDensityProvider>(
+ new ArbitraryGridDensityProvider(source, proscenium, numCells));
}
-AutoPtr<GridDensityProvider>
-ArbitraryGridDensityProviderFactory::newGridDensityProvider(OccluderSource& source, const BBox<Vec3r>& bbox,
- const GridHelpers::Transform& transform)
+AutoPtr<GridDensityProvider> ArbitraryGridDensityProviderFactory::newGridDensityProvider(
+ OccluderSource &source, const BBox<Vec3r> &bbox, const GridHelpers::Transform &transform)
{
- return AutoPtr<GridDensityProvider>(new ArbitraryGridDensityProvider(source, bbox, transform, numCells));
+ return AutoPtr<GridDensityProvider>(
+ new ArbitraryGridDensityProvider(source, bbox, transform, numCells));
}
-AutoPtr<GridDensityProvider> ArbitraryGridDensityProviderFactory::newGridDensityProvider(OccluderSource& source)
+AutoPtr<GridDensityProvider> ArbitraryGridDensityProviderFactory::newGridDensityProvider(
+ OccluderSource &source)
{
- return AutoPtr<GridDensityProvider>(new ArbitraryGridDensityProvider(source, numCells));
+ return AutoPtr<GridDensityProvider>(new ArbitraryGridDensityProvider(source, numCells));
}
} /* namespace Freestyle */