56 for (
int h = 0; h <
intensity.size(); h++) {
70 std::replace(text.begin(), text.end(),
',',
' ');
71 data = strstr(&text[0],
"\nTILT=");
84 char *old_data =
data;
86 if (
data == old_data) {
98 char *old_data =
data;
100 if (
data == old_data) {
120 if (strncmp(parser.
data,
"\nTILT=INCLUDE", 13) == 0) {
125 for (
int i = 0; i < 2 * num_tilt; i++) {
131 parser.
data = strstr(parser.
data + 1,
"\n");
142 int v_angles_num = parser.
get_long();
143 int h_angles_num = parser.
get_long();
174 factor *= 0.0706650768394;
177 for (
int i = 0; i < v_angles_num; i++) {
182 for (
int i = 0; i < h_angles_num; i++) {
187 for (
int i = 0; i < h_angles_num; i++) {
189 for (
int j = 0; j < v_angles_num; j++) {
194 return !parser.
eof();
200 newintensity.resize(
v_angles.size());
201 for (
int i = 0; i <
v_angles.size(); i++) {
202 newintensity[i].reserve(
h_angles.size());
203 for (
int j = 0; j <
h_angles.size(); j++) {
204 newintensity[i].push_back(
intensity[j][i]);
211 if (h_last != 90.0f) {
215 if (h_first == 0.0f) {
221 new_h_angles.reserve(2 * hnum - 1);
222 new_intensity.reserve(2 * hnum - 1);
223 for (
int i = hnum - 1; i > 0; i--) {
224 new_h_angles.push_back(90.0f -
h_angles[i]);
227 for (
int i = 0; i < hnum; i++) {
228 new_h_angles.push_back(90.0f +
h_angles[i]);
234 else if (h_first == -90.0f) {
236 for (
int i = 0; i <
h_angles.size(); i++) {
247 if (v_last != 90.0f) {
251 if (v_first == 0.0f) {
257 new_v_angles.reserve(2 * vnum - 1);
258 for (
int i = vnum - 1; i > 0; i--) {
259 new_v_angles.push_back(90.0f -
v_angles[i]);
261 for (
int i = 0; i < vnum; i++) {
262 new_v_angles.push_back(90.0f +
v_angles[i]);
264 for (
int i = 0; i < hnum; i++) {
266 new_intensity.reserve(2 * vnum - 1);
267 for (
int j = vnum - 2; j >= 0; j--) {
268 new_intensity.push_back(
intensity[i][j]);
275 else if (v_first == -90.0f) {
277 for (
int i = 0; i <
v_angles.size(); i++) {
290 for (
int i = 0; i <
h_angles.size(); i++) {
310 for (
int i = hnum - 2; i >= 0; i--) {
319 for (
int i = hnum - 2; i >= 0; i--) {
331 float difference = 360.0f -
h_angles[hnum - 1];
332 if (last_step == difference || first_step == difference) {
342 if (v_first == 90.0f) {
343 if (v_last == 180.0f) {
345 for (
int i = 0; i <
v_angles.size(); i++) {
353 else if (v_first != 0.0f) {
383 for (
int i = 0; i <
v_angles.size(); i++) {
386 for (
int i = 0; i <
h_angles.size(); i++) {
enum IESFile::IESType type
vector< vector< float > > intensity
bool load(const string &ies)
bool parse(const string &ies)
IESTextParser(const string &str)
#define CCL_NAMESPACE_END
ccl_device_inline float __int_as_float(int i)