Blender V5.0
AdvancedFunctions0D.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009-2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9
10#include "AdvancedFunctions0D.h"
11#include "Canvas.h"
12
15
17
19{
20 Canvas *canvas = Canvas::getInstance();
21 int bound = _filter.getBound();
22
23 if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > canvas->width()) ||
24 (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > canvas->height()))
25 {
26 result = 0.0;
27 return 0;
28 }
29
30 RGBImage image;
31 canvas->readColorPixels(int(iter->getProjectedX()) - bound,
32 int(iter->getProjectedY()) - bound,
33 _filter.maskSize(),
34 _filter.maskSize(),
35 image);
36 result = _filter.getSmoothedPixel<RGBImage>(
37 &image, int(iter->getProjectedX()), int(iter->getProjectedY()));
38
39 return 0;
40}
41
43{
44 Canvas *iViewer = Canvas::getInstance();
45 int bound = _filter.getBound();
46
47 if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > iViewer->width()) ||
48 (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > iViewer->height()))
49 {
50 result = 0.0;
51 return 0;
52 }
53
54 GrayImage image;
55 iViewer->readDepthPixels(int(iter->getProjectedX()) - bound,
56 int(iter->getProjectedY()) - bound,
57 _filter.maskSize(),
58 _filter.maskSize(),
59 image);
60 result = _filter.getSmoothedPixel(
61 &image, int(iter->getProjectedX()), int(iter->getProjectedY()));
62
63 return 0;
64}
65
67{
68 Canvas *canvas = Canvas::getInstance();
69 result = canvas->readMapPixel(
70 _mapName, _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
71 return 0;
72}
73
75{
78 _orientation, _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
79 return 0;
80}
81
89
91{
93 float pxy = svm->readCompleteViewMapPixel(
94 _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
95 float gx = svm->readCompleteViewMapPixel(
96 _level, int(iter->getProjectedX()) + _step, int(iter->getProjectedY())) -
97 pxy;
98 float gy = svm->readCompleteViewMapPixel(
99 _level, int(iter->getProjectedX()), int(iter->getProjectedY()) + _step) -
100 pxy;
101 result = Vec2f(gx, gy).norm();
102 return 0;
103}
104
105} // namespace Freestyle::Functions0D
Functions taking 0D input.
Class to define a canvas designed to draw style modules.
Functions taking 0D input.
Convenient access to the steerable ViewMap to which any element of the ViewMap belongs to.
virtual void readDepthPixels(int x, int y, int w, int h, GrayImage &oImage) const =0
float readMapPixel(const char *iMapName, int level, int x, int y)
Definition Canvas.cpp:452
virtual void readColorPixels(int x, int y, int w, int h, RGBImage &oImage) const =0
virtual int height() const =0
virtual int width() const =0
static Canvas * getInstance()
Definition Canvas.h:55
SteerableViewMap * getSteerableViewMap()
Definition Canvas.h:163
int operator()(Interface0DIterator &iter)
int operator()(Interface0DIterator &iter)
virtual real getProjectedX() const
virtual real getProjectedY() const
float readCompleteViewMapPixel(int iLevel, int x, int y)
float readSteerableViewMapPixel(uint iOrientation, int iLevel, int x, int y)
value_type norm() const
Definition VecMat.h:92
VecMat::Vec2< float > Vec2f
Definition Geom.h:22