From 1bc51c2392c08120d6ec61ea9afb105b98562d70 Mon Sep 17 00:00:00 2001 From: Aleksas Pantechovskis Date: Mon, 5 Dec 2011 22:35:20 +0100 Subject: [PATCH] Teapot 3D model data moved to app resources * GLTeapot 3D model data moved from the text file "teapot.data" into Application resources; * Fixes #4934 and completes GCI 2011 task made by Aleksas Pantechovskis. Thanks for contribution!!! Signed-off-by: Siarzhuk Zharski --- src/apps/glteapot/GLObject.cpp | 106 +- src/apps/glteapot/GLObject.h | 8 +- src/apps/glteapot/GLTeapot.rdef | 2426 ++++++++++++++++++++++++++++++ src/apps/glteapot/ObjectView.cpp | 49 +- 4 files changed, 2531 insertions(+), 58 deletions(-) diff --git a/src/apps/glteapot/GLObject.cpp b/src/apps/glteapot/GLObject.cpp index f46c464acb..be38ad1394 100644 --- a/src/apps/glteapot/GLObject.cpp +++ b/src/apps/glteapot/GLObject.cpp @@ -16,12 +16,17 @@ This file may be used under the terms of the Be Sample Code License. */ + #include "GLObject.h" + +#include #include -#include #include +#include + #include "glob.h" + struct material { float ambient[3], diffuse[3], specular[3]; }; @@ -141,6 +146,7 @@ GLObject::MenuInvoked(BPoint point) setEvent(fObjView->drawEvent); } + int GLObject::Solidity() const { @@ -148,6 +154,7 @@ GLObject::Solidity() const } + bool GLObject::SpinIt() { @@ -200,55 +207,67 @@ GLObject::Draw(bool forID, float IDcolor[]) } -TriangleObject::TriangleObject(ObjectView* ov, char* filename) - : GLObject(ov), - fPoints(100,100), - fTriangles(100,100), - fQs(50,50) +TriangleObject::TriangleObject(ObjectView* ov) + : + GLObject(ov), + fStatus(B_NO_INIT), + fPoints(100, 100), + fTriangles(100, 100), + fQs(50, 50) { + BResources *res = BApplication::AppResources(); + if (res == NULL) + return; + + size_t size = 0; + int32 *arrayOfPoints + = (int32*)res->LoadResource(B_RAW_TYPE, "points", &size); + if (arrayOfPoints == NULL) + return; + float maxp = 0; - int numPt,numTri; - - FILE* f = fopen(filename,"r"); - fscanf(f,"%d",&numPt); -// printf("Points: %d\n",numPt); - for (int i = 0; i < numPt; i++) { + size_t numPt = size / sizeof(int32); + for (size_t i = 0; i < numPt; i += 6) { point p; - fscanf(f,"%f %f %f %f %f %f", - &p.x, - &p.y, - &p.z, - &p.nx, - &p.ny, - &p.nz); + p.x = 1e-6 * arrayOfPoints[i]; + p.y = 1e-6 * arrayOfPoints[i + 1]; + p.z = 1e-6 * arrayOfPoints[i + 2]; + p.nx = 1e-6 * arrayOfPoints[i + 3]; + p.ny = 1e-6 * arrayOfPoints[i + 4]; + p.nz = 1e-6 * arrayOfPoints[i + 5]; + if (fabs(p.x) > maxp) maxp = fabs(p.x); if (fabs(p.y) > maxp) maxp = fabs(p.y); if (fabs(p.z) > maxp) maxp = fabs(p.z); + fPoints.add(p); } - + for (int i = 0; i < fPoints.num_items; i++) { fPoints[i].x /= maxp; fPoints[i].y /= maxp; fPoints[i].z /= maxp; } - - fscanf(f,"%d",&numTri); -// printf("Triangles: %d\n",numTri); - int tpts = 0; - for (int i = 0; i < numTri; i++) { + + int32 *arrayOfTriangles + = (int32*)res->LoadResource(B_RAW_TYPE, "triangles", &size); + if (arrayOfTriangles == NULL) + return; + + size_t numTriPoints = size / sizeof(int32); + for (size_t i = 0; i < numTriPoints; i += 3) { tri t; - fscanf(f,"%d %d %d", - &t.p1, - &t.p2, - &t.p3); + t.p1 = arrayOfTriangles[i]; + t.p2 = arrayOfTriangles[i + 1]; + t.p3 = arrayOfTriangles[i + 2]; fTriangles.add(t); - tpts += 3; } + size_t numTri = numTriPoints / 3; + int qpts = 4; int qp[1024]; quadStrip q; @@ -259,37 +278,37 @@ TriangleObject::TriangleObject(ObjectView* ov, char* filename) q.pts[1] = fTriangles[0].p3; q.pts[3] = fTriangles[1].p3; - for (int i = 2; i < numTri; i += 2) { - if ((fTriangles[i-1].p1 == fTriangles[i].p2) && - (fTriangles[i-1].p3 == fTriangles[i].p3)) { - q.pts[q.numpts++] = fTriangles[i+1].p1; - q.pts[q.numpts++] = fTriangles[i+1].p3; + for (size_t i = 2; i < numTri; i += 2) { + if ((fTriangles[i - 1].p1 == fTriangles[i].p2) && + (fTriangles[i - 1].p3 == fTriangles[i].p3)) { + q.pts[q.numpts++] = fTriangles[i + 1].p1; + q.pts[q.numpts++] = fTriangles[i + 1].p3; qpts+=2; } else { int *np = (int*)malloc(sizeof(int)*q.numpts); - memcpy(np,qp,q.numpts*sizeof(int)); + memcpy(np, qp, q.numpts * sizeof(int)); quadStrip nqs; nqs.numpts = q.numpts; nqs.pts = np; fQs.add(nqs); - + qpts += 4; q.numpts = 4; q.pts[2] = fTriangles[i].p1; q.pts[0] = fTriangles[i].p2; q.pts[1] = fTriangles[i].p3; - q.pts[3] = fTriangles[i+1].p3; + q.pts[3] = fTriangles[i + 1].p3; } } int* np = (int*)malloc(sizeof(int)*q.numpts); - memcpy(np,qp,q.numpts*sizeof(int)); + memcpy(np, qp, q.numpts * sizeof(int)); quadStrip nqs; nqs.numpts = q.numpts; nqs.pts = np; fQs.add(nqs); - fclose(f); + fStatus = B_OK; } @@ -301,6 +320,13 @@ TriangleObject::~TriangleObject() } +status_t +TriangleObject::InitCheck() const +{ + return fStatus; +} + + void TriangleObject::DoDrawing(bool forID) { diff --git a/src/apps/glteapot/GLObject.h b/src/apps/glteapot/GLObject.h index aad6508548..b1afe982c1 100644 --- a/src/apps/glteapot/GLObject.h +++ b/src/apps/glteapot/GLObject.h @@ -50,7 +50,7 @@ class GLObject { void RotateWorldSpace(float rx, float ry); virtual void MenuInvoked(BPoint point); virtual void DoDrawing(bool forID) {}; - int Solidity() const; + int Solidity() const; float x, y, z; Quaternion fRotation; @@ -68,11 +68,13 @@ class GLObject { class TriangleObject : public GLObject { public: - TriangleObject(ObjectView* ov, char* filename); + TriangleObject(ObjectView* ov); virtual ~TriangleObject(); + status_t InitCheck() const; virtual void DoDrawing(bool forID); - + private: + status_t fStatus; BufferArray fPoints; BufferArray fTriangles; BufferArray fQs; diff --git a/src/apps/glteapot/GLTeapot.rdef b/src/apps/glteapot/GLTeapot.rdef index 76f9c09a72..de24a73cf7 100644 --- a/src/apps/glteapot/GLTeapot.rdef +++ b/src/apps/glteapot/GLTeapot.rdef @@ -47,3 +47,2429 @@ resource vector_icon { $"178200040A00010500" }; +resource(1, "points") array { + 1459600, 0, 2463000, 749768, 0, 661700, + 1500000, 0, 2400000, 902857, 0, 429932, + 1424640, -478560, 2400000, 857866, -280456, 430593, + 1386270, -465671, 2463000, 712062, -232790, 662397, + 1419800, 0, 2494500, 398032, 0, 917368, + 1348469, -452973, 2494500, 377729, -123488, 917640, + 1390200, 0, 2494500, -594549, 0, 804060, + 1320357, -443530, 2494501, -564429, 184525, 804593, + 1380400, 0, 2463000, -997566, 0, -69671, + 1311049, -440403, 2463001, -948177, 309981, -69801, + 1400000, 0, 2400000, -902860, 0, -429934, + 1329664, -446656, 2400000, -857865, 280456, -430592, + 1213920, -890880, 2400000, 729170, -531333, 431273, + 1181225, -866886, 2463000, 604942, -440810, 663117, + 1149016, -843248, 2494500, 320655, -233655, 917921, + 1125061, -825668, 2494500, -479323, 349274, 805140, + 1117130, -819847, 2463001, -806215, 587474, -69936, + 1132992, -831488, 2400000, -729168, 531331, -431271, + 890880, -1213920, 2400000, 531333, -729170, 431273, + 866886, -1181225, 2463000, 440810, -604942, 663117, + 843248, -1149016, 2494500, 233655, -320655, 917921, + 825668, -1125061, 2494500, -349274, 479323, 805140, + 819847, -1117130, 2463000, -587474, 806215, -69936, + 831488, -1132992, 2400000, -531331, 729168, -431271, + 478560, -1424640, 2400000, 280456, -857866, 430593, + 465671, -1386270, 2463000, 232790, -712062, 662397, + 452973, -1348469, 2494500, 123488, -377729, 917640, + 443529, -1320356, 2494500, -184525, 564429, 804593, + 440403, -1311049, 2463000, -309981, 948177, -69801, + 446656, -1329664, 2400000, -280456, 857865, -430592, + 0, -1500000, 2400000, 0, -902857, 429932, + 0, -1459600, 2463000, 0, -749768, 661700, + 0, -1419800, 2494500, 0, -398032, 917368, + 0, -1390200, 2494500, 0, 594549, 804060, + 0, -1380400, 2463000, 0, 997566, -69671, + 0, -1400000, 2400000, 0, 902860, -429934, + 0, 1459600, 2463000, 0, 749768, 661700, + 0, 1500000, 2400000, 0, 902857, 429932, + 478560, 1424640, 2400000, 280456, 857866, 430593, + 465671, 1386270, 2463000, 232790, 712062, 662397, + 0, 1419800, 2494500, 0, 398032, 917368, + 452973, 1348469, 2494500, 123488, 377729, 917640, + 0, 1390200, 2494500, 0, -594549, 804060, + 443530, 1320357, 2494501, -184525, -564429, 804593, + 0, 1380400, 2463000, 0, -997566, -69671, + 440403, 1311049, 2463001, -309981, -948177, -69801, + 0, 1400000, 2400000, 0, -902860, -429934, + 446656, 1329664, 2400000, -280456, -857865, -430592, + 890880, 1213920, 2400000, 531333, 729170, 431273, + 866886, 1181225, 2463000, 440810, 604942, 663117, + 843248, 1149016, 2494500, 233655, 320655, 917921, + 825668, 1125061, 2494500, -349274, -479323, 805140, + 819847, 1117130, 2463001, -587474, -806215, -69936, + 831488, 1132992, 2400000, -531331, -729168, -431271, + 1213920, 890880, 2400000, 729170, 531333, 431273, + 1181225, 866886, 2463000, 604942, 440810, 663117, + 1149016, 843248, 2494500, 320655, 233655, 917921, + 1125061, 825668, 2494500, -479323, -349274, 805140, + 1117130, 819847, 2463000, -806215, -587474, -69936, + 1132992, 831488, 2400000, -729168, -531331, -431271, + 1424640, 478560, 2400000, 857866, 280456, 430593, + 1386270, 465671, 2463000, 712062, 232790, 662397, + 1348469, 452973, 2494500, 377729, 123488, 917640, + 1320356, 443529, 2494500, -564429, -184525, 804593, + 1311049, 440403, 2463000, -948177, -309981, -69801, + 1329664, 446656, 2400000, -857865, -280456, -430592, + -478560, -1424640, 2400000, -280456, -857866, 430593, + -465671, -1386270, 2463000, -232790, -712062, 662397, + -452973, -1348469, 2494500, -123488, -377729, 917640, + -443530, -1320357, 2494501, 184525, 564429, 804593, + -440403, -1311049, 2463001, 309981, 948177, -69801, + -446656, -1329664, 2400000, 280456, 857865, -430592, + -890880, -1213920, 2400000, -531333, -729170, 431273, + -866886, -1181225, 2463000, -440810, -604942, 663117, + -843248, -1149016, 2494500, -233655, -320655, 917921, + -825668, -1125061, 2494500, 349274, 479323, 805140, + -819847, -1117130, 2463001, 587474, 806215, -69936, + -831488, -1132992, 2400000, 531331, 729168, -431271, + -1213920, -890880, 2400000, -729170, -531333, 431273, + -1181225, -866886, 2463000, -604942, -440810, 663117, + -1149016, -843248, 2494500, -320655, -233655, 917921, + -1125061, -825668, 2494500, 479323, 349274, 805140, + -1117130, -819847, 2463000, 806215, 587474, -69936, + -1132992, -831488, 2400000, 729168, 531331, -431271, + -1424640, -478560, 2400000, -857866, -280456, 430593, + -1386270, -465671, 2463000, -712062, -232790, 662397, + -1348469, -452973, 2494500, -377729, -123488, 917640, + -1320356, -443529, 2494500, 564429, 184525, 804593, + -1311049, -440403, 2463000, 948177, 309981, -69801, + -1329664, -446656, 2400000, 857865, 280456, -430592, + -1500000, 0, 2400000, -902857, 0, 429932, + -1459600, 0, 2463000, -749768, 0, 661700, + -1419800, 0, 2494500, -398032, 0, 917368, + -1390200, 0, 2494500, 594549, 0, 804060, + -1380400, 0, 2463000, 997566, 0, -69671, + -1400000, 0, 2400000, 902860, 0, -429934, + -1424640, 478560, 2400000, -857866, 280456, 430593, + -1386270, 465671, 2463000, -712062, 232790, 662397, + -1348469, 452973, 2494500, -377729, 123488, 917640, + -1320357, 443530, 2494501, 564429, -184525, 804593, + -1311049, 440403, 2463001, 948177, -309981, -69801, + -1329664, 446656, 2400000, 857865, -280456, -430592, + -1213920, 890880, 2400000, -729170, 531333, 431273, + -1181225, 866886, 2463000, -604942, 440810, 663117, + -1149016, 843248, 2494500, -320655, 233655, 917921, + -1125061, 825668, 2494500, 479323, -349274, 805140, + -1117130, 819847, 2463001, 806215, -587474, -69936, + -1132992, 831488, 2400000, 729168, -531331, -431271, + -890880, 1213920, 2400000, -531333, 729170, 431273, + -866886, 1181225, 2463000, -440810, 604942, 663117, + -843248, 1149016, 2494500, -233655, 320655, 917921, + -825668, 1125061, 2494500, 349274, -479323, 805140, + -819847, 1117130, 2463000, 587474, -806215, -69936, + -831488, 1132992, 2400000, 531331, -729168, -431271, + -478560, 1424640, 2400000, -280456, 857866, 430593, + -465671, 1386270, 2463000, -232790, 712062, 662397, + -452973, 1348469, 2494500, -123488, 377729, 917640, + -443529, 1320356, 2494500, 184525, -564429, 804593, + -440403, 1311049, 2463000, 309981, -948177, -69801, + -446656, 1329664, 2400000, 280456, -857865, -430592, + 1972000, 0, 1178400, 982662, 0, 185408, + 2000000, 0, 900000, 999997, 0, 0, + 1899520, -638080, 900000, 950495, -310739, 0, + 1872927, -629147, 1178400, 933952, -305330, 185744, + 1896000, 0, 1471200, 952068, 0, 305886, + 1800745, -604900, 1471200, 904777, -295792, 306407, + 1784000, 0, 1774800, 925461, 0, 378844, + 1694372, -569167, 1774800, 879408, -287499, 379453, + 1648000, 0, 2085600, 908570, 0, 417733, + 1565205, -525778, 2085600, 863304, -282234, 418380, + 1618560, -1187840, 900000, 808194, -588917, 0, + 1595900, -1171210, 1178400, 794073, -578627, 186092, + 1534395, -1126072, 1471200, 769179, -560487, 306945, + 1443756, -1059553, 1774800, 747539, -544718, 380083, + 1333694, -978780, 2085600, 733807, -534712, 419049, + 1187840, -1618560, 900000, 588917, -808194, 0, + 1171210, -1595900, 1178400, 578627, -794073, 186092, + 1126072, -1534395, 1471200, 560487, -769179, 306945, + 1059553, -1443756, 1774800, 544718, -747539, 380083, + 978780, -1333694, 2085600, 534712, -733807, 419049, + 638080, -1899520, 900000, 310739, -950495, 0, + 629147, -1872927, 1178400, 305331, -933952, 185744, + 604900, -1800745, 1471200, 295792, -904777, 306407, + 569167, -1694372, 1774800, 287499, -879408, 379453, + 525778, -1565205, 2085600, 282234, -863304, 418380, + 0, -2000000, 900000, 0, -999997, 0, + 0, -1972000, 1178400, 0, -982662, 185408, + 0, -1896000, 1471200, 0, -952068, 305886, + 0, -1784000, 1774800, 0, -925461, 378844, + 0, -1648000, 2085600, 0, -908570, 417733, + 0, 1972000, 1178400, 0, 982662, 185408, + 0, 2000000, 900000, 0, 999997, 0, + 638080, 1899520, 900000, 310739, 950495, 0, + 629147, 1872927, 1178400, 305330, 933952, 185744, + 0, 1896000, 1471200, 0, 952068, 305886, + 604900, 1800745, 1471200, 295792, 904777, 306407, + 0, 1784000, 1774800, 0, 925461, 378844, + 569167, 1694372, 1774800, 287499, 879408, 379453, + 0, 1648000, 2085600, 0, 908570, 417733, + 525778, 1565205, 2085600, 282234, 863304, 418380, + 1187840, 1618560, 900000, 588917, 808194, 0, + 1171210, 1595900, 1178400, 578627, 794073, 186092, + 1126072, 1534395, 1471200, 560487, 769179, 306945, + 1059553, 1443756, 1774800, 544718, 747539, 380083, + 978780, 1333694, 2085600, 534712, 733807, 419049, + 1618560, 1187840, 900000, 808194, 588917, 0, + 1595900, 1171210, 1178400, 794073, 578627, 186092, + 1534395, 1126072, 1471200, 769179, 560487, 306945, + 1443756, 1059553, 1774800, 747539, 544718, 380083, + 1333694, 978780, 2085600, 733807, 534712, 419049, + 1899520, 638080, 900000, 950495, 310739, 0, + 1872927, 629147, 1178400, 933952, 305330, 185744, + 1800745, 604900, 1471200, 904777, 295792, 306407, + 1694372, 569167, 1774800, 879408, 287499, 379453, + 1565205, 525778, 2085600, 863304, 282234, 418380, + -638080, -1899520, 900000, -310739, -950495, 0, + -629147, -1872927, 1178400, -305330, -933952, 185744, + -604900, -1800745, 1471200, -295792, -904777, 306407, + -569167, -1694372, 1774800, -287499, -879408, 379453, + -525778, -1565205, 2085600, -282234, -863304, 418380, + -1187840, -1618560, 900000, -588917, -808194, 0, + -1171210, -1595900, 1178400, -578627, -794073, 186092, + -1126072, -1534395, 1471200, -560487, -769179, 306945, + -1059553, -1443756, 1774800, -544718, -747539, 380083, + -978780, -1333694, 2085600, -534712, -733807, 419049, + -1618560, -1187840, 900000, -808194, -588917, 0, + -1595900, -1171210, 1178400, -794073, -578627, 186092, + -1534395, -1126072, 1471200, -769179, -560487, 306945, + -1443756, -1059553, 1774800, -747539, -544718, 380083, + -1333694, -978780, 2085600, -733807, -534712, 419049, + -1899520, -638080, 900000, -950495, -310739, 0, + -1872927, -629147, 1178400, -933952, -305330, 185744, + -1800745, -604900, 1471200, -904777, -295792, 306407, + -1694372, -569167, 1774800, -879408, -287499, 379453, + -1565205, -525778, 2085600, -863304, -282234, 418380, + -2000000, 0, 900000, -999997, 0, 0, + -1972000, 0, 1178400, -982662, 0, 185408, + -1896000, 0, 1471200, -952068, 0, 305886, + -1784000, 0, 1774800, -925461, 0, 378844, + -1648000, 0, 2085600, -908570, 0, 417733, + -1899520, 638080, 900000, -950495, 310739, 0, + -1872927, 629147, 1178400, -933952, 305330, 185744, + -1800745, 604900, 1471200, -904777, 295792, 306407, + -1694372, 569167, 1774800, -879408, 287499, 379453, + -1565205, 525778, 2085600, -863304, 282234, 418380, + -1618560, 1187840, 900000, -808194, 588917, 0, + -1595900, 1171210, 1178400, -794073, 578627, 186092, + -1534395, 1126072, 1471200, -769179, 560487, 306945, + -1443756, 1059553, 1774800, -747539, 544718, 380083, + -1333694, 978780, 2085600, -733807, 534712, 419049, + -1187840, 1618560, 900000, -588917, 808194, 0, + -1171210, 1595900, 1178400, -578627, 794073, 186092, + -1126072, 1534395, 1471200, -560487, 769179, 306945, + -1059553, 1443756, 1774800, -544718, 747539, 380083, + -978780, 1333694, 2085600, -534712, 733807, 419049, + -638080, 1899520, 900000, -310739, 950495, 0, + -629147, 1872927, 1178400, -305331, 933952, 185744, + -604900, 1800745, 1471200, -295792, 904777, 306407, + -569167, 1694372, 1774800, -287499, 879408, 379453, + -525778, 1565205, 2085600, -282234, 863304, 418380, + 1552000, 0, 213600, 653126, 0, -757248, + 1500000, 0, 150000, 999997, 0, 0, + 1424640, -478560, 150000, 950495, -310739, 0, + 1474028, -495150, 213600, 620124, -202733, -757855, + 1676000, 0, 316800, 653126, 0, -757247, + 1591798, -534711, 316800, 620125, -202733, -757855, + 1824000, 0, 463200, 761538, 0, -648117, + 1732362, -581929, 463200, 723268, -236453, -648825, + 1948000, 0, 656400, 915054, 0, -403329, + 1850133, -621490, 656400, 869485, -284255, -403963, + 1213920, -890880, 150000, 808194, -588917, 0, + 1256003, -921764, 213600, 526696, -383794, -758479, + 1356353, -995410, 316800, 526697, -383795, -758480, + 1476127, -1083310, 463200, 614483, -447763, -649552, + 1576478, -1156956, 656400, 739078, -538553, -404618, + 890880, -1213920, 150000, 588917, -808194, 0, + 921764, -1256003, 213600, 383794, -526696, -758479, + 995410, -1356353, 316800, 383795, -526697, -758480, + 1083310, -1476127, 463200, 447763, -614483, -649552, + 1156956, -1576478, 656400, 538553, -739078, -404619, + 478560, -1424640, 150000, 310739, -950495, 0, + 495150, -1474028, 213600, 202733, -620124, -757855, + 534711, -1591798, 316800, 202733, -620125, -757855, + 581929, -1732362, 463200, 236453, -723268, -648825, + 621490, -1850133, 656400, 284255, -869485, -403963, + 0, -1500000, 150000, 0, -999997, 0, + 0, -1552000, 213600, 0, -653126, -757248, + 0, -1676000, 316800, 0, -653126, -757247, + 0, -1824000, 463200, 0, -761538, -648117, + 0, -1948000, 656400, 0, -915054, -403329, + 0, 1552000, 213600, 0, 653126, -757248, + 0, 1500000, 150000, 0, 999997, 0, + 478560, 1424640, 150000, 310739, 950495, 0, + 495150, 1474028, 213600, 202733, 620124, -757855, + 0, 1676000, 316800, 0, 653126, -757247, + 534711, 1591798, 316800, 202733, 620125, -757855, + 0, 1824000, 463200, 0, 761538, -648117, + 581929, 1732362, 463200, 236453, 723268, -648825, + 0, 1948000, 656400, 0, 915054, -403329, + 621490, 1850133, 656400, 284255, 869485, -403963, + 890880, 1213920, 150000, 588917, 808194, 0, + 921764, 1256003, 213600, 383794, 526696, -758479, + 995410, 1356353, 316800, 383795, 526697, -758480, + 1083310, 1476127, 463200, 447763, 614483, -649552, + 1156956, 1576478, 656400, 538553, 739078, -404618, + 1213920, 890880, 150000, 808194, 588917, 0, + 1256003, 921764, 213600, 526696, 383794, -758479, + 1356353, 995410, 316800, 526697, 383795, -758480, + 1476127, 1083310, 463200, 614483, 447763, -649552, + 1576478, 1156956, 656400, 739078, 538553, -404619, + 1424640, 478560, 150000, 950495, 310739, 0, + 1474028, 495150, 213600, 620124, 202733, -757855, + 1591798, 534711, 316800, 620125, 202733, -757855, + 1732362, 581929, 463200, 723268, 236453, -648825, + 1850133, 621490, 656400, 869485, 284255, -403963, + -478560, -1424640, 150000, -310739, -950495, 0, + -495150, -1474028, 213600, -202733, -620124, -757855, + -534711, -1591798, 316800, -202733, -620125, -757855, + -581929, -1732362, 463200, -236453, -723268, -648825, + -621490, -1850133, 656400, -284255, -869485, -403963, + -890880, -1213920, 150000, -588917, -808194, 0, + -921764, -1256003, 213600, -383794, -526696, -758479, + -995410, -1356353, 316800, -383795, -526697, -758480, + -1083310, -1476127, 463200, -447763, -614483, -649552, + -1156956, -1576478, 656400, -538553, -739078, -404618, + -1213920, -890880, 150000, -808194, -588917, 0, + -1256003, -921764, 213600, -526696, -383794, -758479, + -1356353, -995410, 316800, -526697, -383795, -758480, + -1476127, -1083310, 463200, -614483, -447763, -649552, + -1576478, -1156956, 656400, -739078, -538553, -404619, + -1424640, -478560, 150000, -950495, -310739, 0, + -1474028, -495150, 213600, -620124, -202733, -757855, + -1591798, -534711, 316800, -620125, -202733, -757855, + -1732362, -581929, 463200, -723268, -236453, -648825, + -1850133, -621490, 656400, -869485, -284255, -403963, + -1500000, 0, 150000, -999997, 0, 0, + -1552000, 0, 213600, -653126, 0, -757248, + -1676000, 0, 316800, -653126, 0, -757247, + -1824000, 0, 463200, -761538, 0, -648117, + -1948000, 0, 656400, -915054, 0, -403329, + -1424640, 478560, 150000, -950495, 310739, 0, + -1474028, 495150, 213600, -620124, 202733, -757855, + -1591798, 534711, 316800, -620125, 202733, -757855, + -1732362, 581929, 463200, -723268, 236453, -648825, + -1850133, 621490, 656400, -869485, 284255, -403963, + -1213920, 890880, 150000, -808194, 588917, 0, + -1256003, 921764, 213600, -526696, 383794, -758479, + -1356353, 995410, 316800, -526697, 383795, -758480, + -1476127, 1083310, 463200, -614483, 447763, -649552, + -1576478, 1156956, 656400, -739078, 538553, -404618, + -890880, 1213920, 150000, -588917, 808194, 0, + -921764, 1256003, 213600, -383794, 526696, -758479, + -995410, 1356353, 316800, -383795, 526697, -758480, + -1083310, 1476127, 463200, -447763, 614483, -649552, + -1156956, 1576478, 656400, -538553, 739078, -404619, + -478560, 1424640, 150000, -310739, 950495, 0, + -495150, 1474028, 213600, -202733, 620124, -757855, + -534711, 1591798, 316800, -202733, 620125, -757855, + -581929, 1732362, 463200, -236453, 723268, -648825, + -621490, 1850133, 656400, -284255, 869485, -403963, + 179200, 0, 2804400, 894427, 0, -447213, + 200000, 0, 2700000, 600000, 0, 800000, + 189952, -63808, 2700000, 569610, -186218, 800539, + 170215, -57246, 2804400, 849825, -277126, -448321, + 273600, 0, 2923200, 732528, 0, -680733, + 259910, -87511, 2923200, 695758, -226333, -681680, + 358400, 0, 3034800, 934487, 0, -355995, + 340477, -114676, 3034801, 888413, -288795, -356820, + 308800, 0, 3117600, 360398, 0, 932794, + 293360, -98815, 3117601, 342044, -111168, 933084, + 0, 0, 3150000, 0, 0, 1000000, + 161856, -118784, 2700000, 483729, -352485, 801094, + 145078, -106513, 2804400, 722111, -525753, -449592, + 221585, -162745, 2923200, 590847, -429839, -682740, + 290295, -213234, 3034801, 755194, -549270, -357749, + 250127, -183734, 3117601, 290204, -211059, 933400, + 118784, -161856, 2700000, 352485, -483729, 801094, + 106513, -145078, 2804400, 525753, -722111, -449592, + 162745, -221585, 2923200, 429838, -590847, -682740, + 213234, -290295, 3034800, 549270, -755194, -357749, + 183734, -250127, 3117600, 211060, -290203, 933400, + 63808, -189952, 2700000, 186218, -569610, 800539, + 57246, -170215, 2804400, 277127, -849825, -448321, + 87511, -259910, 2923200, 226332, -695758, -681680, + 114676, -340477, 3034800, 288795, -888413, -356820, + 98815, -293360, 3117600, 111168, -342044, 933084, + 0, -200000, 2700000, 0, -600000, 800000, + 0, -179200, 2804400, 0, -894427, -447213, + 0, -273600, 2923200, 0, -732528, -680733, + 0, -358400, 3034800, 0, -934487, -355995, + 0, -308800, 3117600, 0, -360398, 932794, + 0, 179200, 2804400, 0, 894427, -447213, + 0, 200000, 2700000, 0, 600000, 800000, + 63808, 189952, 2700000, 186218, 569610, 800539, + 57246, 170215, 2804400, 277126, 849825, -448321, + 0, 273600, 2923200, 0, 732528, -680733, + 87511, 259910, 2923200, 226333, 695758, -681680, + 0, 358400, 3034800, 0, 934487, -355995, + 114676, 340477, 3034801, 288795, 888413, -356820, + 0, 308800, 3117600, 0, 360398, 932794, + 98815, 293360, 3117601, 111168, 342044, 933084, + 118784, 161856, 2700000, 352485, 483729, 801094, + 106513, 145078, 2804400, 525753, 722111, -449592, + 162745, 221585, 2923200, 429839, 590847, -682740, + 213234, 290295, 3034801, 549270, 755194, -357749, + 183734, 250127, 3117601, 211059, 290204, 933400, + 161856, 118784, 2700000, 483729, 352485, 801094, + 145078, 106513, 2804400, 722111, 525753, -449592, + 221585, 162745, 2923200, 590847, 429838, -682740, + 290295, 213234, 3034800, 755194, 549270, -357749, + 250127, 183734, 3117600, 290203, 211060, 933400, + 189952, 63808, 2700000, 569610, 186218, 800539, + 170215, 57246, 2804400, 849825, 277126, -448321, + 259910, 87511, 2923200, 695758, 226332, -681680, + 340477, 114676, 3034800, 888413, 288795, -356820, + 293360, 98815, 3117600, 342044, 111168, 933084, + -63808, -189952, 2700000, -186218, -569610, 800539, + -57246, -170215, 2804400, -277126, -849825, -448321, + -87511, -259910, 2923200, -226333, -695758, -681680, + -114676, -340477, 3034801, -288795, -888413, -356820, + -98815, -293360, 3117601, -111168, -342044, 933084, + -118784, -161856, 2700000, -352485, -483729, 801094, + -106513, -145078, 2804400, -525753, -722111, -449592, + -162745, -221585, 2923200, -429839, -590847, -682740, + -213234, -290295, 3034801, -549270, -755194, -357749, + -183734, -250127, 3117601, -211059, -290204, 933400, + -161856, -118784, 2700000, -483729, -352485, 801094, + -145078, -106513, 2804400, -722111, -525753, -449592, + -221585, -162745, 2923200, -590847, -429838, -682740, + -290295, -213234, 3034800, -755194, -549270, -357749, + -250127, -183734, 3117600, -290203, -211060, 933400, + -189952, -63808, 2700000, -569610, -186218, 800539, + -170215, -57246, 2804400, -849825, -277126, -448321, + -259910, -87511, 2923200, -695758, -226332, -681680, + -340477, -114676, 3034800, -888413, -288795, -356820, + -293360, -98815, 3117600, -342044, -111168, 933084, + -200000, 0, 2700000, -600000, 0, 800000, + -179200, 0, 2804400, -894427, 0, -447213, + -273600, 0, 2923200, -732528, 0, -680733, + -358400, 0, 3034800, -934487, 0, -355995, + -308800, 0, 3117600, -360398, 0, 932794, + -189952, 63808, 2700000, -569610, 186218, 800539, + -170215, 57246, 2804400, -849825, 277126, -448321, + -259910, 87511, 2923200, -695758, 226333, -681680, + -340477, 114676, 3034801, -888413, 288795, -356820, + -293360, 98815, 3117601, -342044, 111168, 933084, + -161856, 118784, 2700000, -483729, 352485, 801094, + -145078, 106513, 2804400, -722111, 525753, -449592, + -221585, 162745, 2923200, -590847, 429839, -682740, + -290295, 213234, 3034801, -755194, 549270, -357749, + -250127, 183734, 3117601, -290204, 211059, 933400, + -118784, 161856, 2700000, -352485, 483729, 801094, + -106513, 145078, 2804400, -525753, 722111, -449592, + -162745, 221585, 2923200, -429838, 590847, -682740, + -213234, 290295, 3034800, -549270, 755194, -357749, + -183734, 250127, 3117600, -211060, 290203, 933400, + -63808, 189952, 2700000, -186218, 569610, 800539, + -57246, 170215, 2804400, -277127, 849825, -448321, + -87511, 259910, 2923200, -226332, 695758, -681680, + -114676, 340477, 3034800, -288795, 888413, -356820, + -98815, 293360, 3117600, -111168, 342044, 933084, + 1204800, 0, 2474400, 325793, 0, 945439, + 1300000, 0, 2400000, 999999, 0, 0, + 1234688, -414752, 2400000, 950491, -310738, 0, + 1144271, -384380, 2474400, 309144, -101066, 945625, + 970400, 0, 2527200, 165777, 0, 986162, + 921647, -309597, 2527200, 157282, -51419, 986211, + 673600, 0, 2572800, 152941, 0, 988232, + 639758, -214905, 2572800, 145104, -47438, 988278, + 391200, 0, 2625600, 238138, 0, 971229, + 371546, -124809, 2625601, 225949, -73868, 971335, + 1052064, -772096, 2400000, 808190, -588914, 0, + 975021, -715555, 2474400, 262406, -191211, 945819, + 785325, -576340, 2527200, 133484, -97267, 986266, + 545131, -400065, 2572800, 123146, -89735, 988323, + 316590, -232342, 2625601, 191770, -139740, 971440, + 772096, -1052064, 2400000, 588914, -808190, 0, + 715555, -975021, 2474400, 191211, -262406, 945819, + 576340, -785325, 2527200, 97267, -133484, 986266, + 400065, -545131, 2572800, 89735, -123146, 988323, + 232342, -316590, 2625600, 139740, -191770, 971440, + 414752, -1234688, 2400000, 310738, -950491, 0, + 384379, -1144271, 2474400, 101066, -309144, 945625, + 309596, -921647, 2527200, 51419, -157282, 986211, + 214905, -639758, 2572800, 47438, -145104, 988278, + 124809, -371546, 2625600, 73868, -225949, 971335, + 0, -1300000, 2400000, 0, -999999, 0, + 0, -1204800, 2474400, 0, -325793, 945439, + 0, -970400, 2527200, 0, -165777, 986162, + 0, -673600, 2572800, 0, -152941, 988232, + 0, -391200, 2625600, 0, -238138, 971229, + 0, 1204800, 2474400, 0, 325793, 945439, + 0, 1300000, 2400000, 0, 999999, 0, + 414752, 1234688, 2400000, 310738, 950491, 0, + 384380, 1144271, 2474400, 101066, 309144, 945625, + 0, 970400, 2527200, 0, 165777, 986162, + 309597, 921647, 2527200, 51419, 157282, 986211, + 0, 673600, 2572800, 0, 152941, 988232, + 214905, 639758, 2572800, 47438, 145104, 988278, + 0, 391200, 2625600, 0, 238138, 971229, + 124809, 371546, 2625601, 73868, 225949, 971335, + 772096, 1052064, 2400000, 588914, 808190, 0, + 715555, 975021, 2474400, 191211, 262406, 945819, + 576340, 785325, 2527200, 97267, 133484, 986266, + 400065, 545131, 2572800, 89735, 123146, 988323, + 232342, 316590, 2625601, 139740, 191770, 971440, + 1052064, 772096, 2400000, 808190, 588914, 0, + 975021, 715555, 2474400, 262406, 191211, 945819, + 785325, 576340, 2527200, 133484, 97267, 986266, + 545131, 400065, 2572800, 123146, 89735, 988323, + 316590, 232342, 2625600, 191770, 139740, 971440, + 1234688, 414752, 2400000, 950491, 310738, 0, + 1144271, 384379, 2474400, 309144, 101066, 945625, + 921647, 309596, 2527200, 157282, 51419, 986211, + 639758, 214905, 2572800, 145104, 47438, 988278, + 371546, 124809, 2625600, 225949, 73868, 971335, + -414752, -1234688, 2400000, -310738, -950491, 0, + -384380, -1144271, 2474400, -101066, -309144, 945625, + -309597, -921647, 2527200, -51419, -157282, 986211, + -214905, -639758, 2572800, -47438, -145104, 988278, + -124809, -371546, 2625601, -73868, -225949, 971335, + -772096, -1052064, 2400000, -588914, -808190, 0, + -715555, -975021, 2474400, -191211, -262406, 945819, + -576340, -785325, 2527200, -97267, -133484, 986266, + -400065, -545131, 2572800, -89735, -123146, 988323, + -232342, -316590, 2625601, -139740, -191770, 971440, + -1052064, -772096, 2400000, -808190, -588914, 0, + -975021, -715555, 2474400, -262406, -191211, 945819, + -785325, -576340, 2527200, -133484, -97267, 986266, + -545131, -400065, 2572800, -123146, -89735, 988323, + -316590, -232342, 2625600, -191770, -139740, 971440, + -1234688, -414752, 2400000, -950491, -310738, 0, + -1144271, -384379, 2474400, -309144, -101066, 945625, + -921647, -309596, 2527200, -157282, -51419, 986211, + -639758, -214905, 2572800, -145104, -47438, 988278, + -371546, -124809, 2625600, -225949, -73868, 971335, + -1300000, 0, 2400000, -999999, 0, 0, + -1204800, 0, 2474400, -325793, 0, 945439, + -970400, 0, 2527200, -165777, 0, 986162, + -673600, 0, 2572800, -152941, 0, 988232, + -391200, 0, 2625600, -238138, 0, 971229, + -1234688, 414752, 2400000, -950491, 310738, 0, + -1144271, 384380, 2474400, -309144, 101066, 945625, + -921647, 309597, 2527200, -157282, 51419, 986211, + -639758, 214905, 2572800, -145104, 47438, 988278, + -371546, 124809, 2625601, -225949, 73868, 971335, + -1052064, 772096, 2400000, -808190, 588914, 0, + -975021, 715555, 2474400, -262406, 191211, 945819, + -785325, 576340, 2527200, -133484, 97267, 986266, + -545131, 400065, 2572800, -123146, 89735, 988323, + -316590, 232342, 2625601, -191770, 139740, 971440, + -772096, 1052064, 2400000, -588914, 808190, 0, + -715555, 975021, 2474400, -191211, 262406, 945819, + -576340, 785325, 2527200, -97267, 133484, 986266, + -400065, 545131, 2572800, -89735, 123146, 988323, + -232342, 316590, 2625600, -139740, 191770, 971440, + -414752, 1234688, 2400000, -310738, 950491, 0, + -384379, 1144271, 2474400, -101066, 309144, 945625, + -309596, 921647, 2527200, -51419, 157282, 986211, + -214905, 639758, 2572800, -47438, 145104, 988278, + -124809, 371546, 2625600, -73868, 225949, 971335, + 0, -1480800, 105600, 0, -664364, -747409, + 472435, -1406405, 105600, 206227, -630811, -748027, + 0, -1382400, 64800, 0, -232118, -972685, + 441041, -1312948, 64800, 72000, -220235, -972782, + 0, -1143600, 31200, 0, -87099, -996200, + 364854, -1086146, 31200, 27015, -82633, -996211, + 0, -703200, 8400, 0, -28834, -999583, + 224349, -667871, 8400, 8943, -27355, -999585, + 0, 0, 0, 0, 0, -1000000, + 879477, -1198382, 105600, 390419, -535788, -748665, + 821035, -1118749, 64800, 136205, -186920, -972884, + 679207, -925493, 31200, 51100, -70127, -996225, + 417645, -569086, 8400, 16916, -23215, -999586, + 1198382, -879477, 105600, 535788, -390419, -748665, + 1118749, -821035, 64800, 186920, -136205, -972884, + 925493, -679207, 31200, 70127, -51100, -996225, + 569086, -417645, 8400, 23215, -16916, -999586, + 1406405, -472434, 105600, 630811, -206227, -748027, + 1312948, -441041, 64800, 220235, -72000, -972782, + 1086146, -364854, 31200, 82633, -27015, -996211, + 667871, -224349, 8400, 27355, -8943, -999585, + 1480800, 0, 105600, 664364, 0, -747409, + 1382400, 0, 64800, 232118, 0, -972685, + 1143600, 0, 31200, 87099, 0, -996200, + 703200, 0, 8400, 28834, 0, -999583, + 1406405, 472435, 105600, 630811, 206227, -748027, + 1312948, 441041, 64800, 220235, 72000, -972782, + 1086146, 364854, 31200, 82633, 27015, -996211, + 667871, 224349, 8400, 27355, 8943, -999585, + 1198382, 879477, 105600, 535788, 390419, -748665, + 1118749, 821035, 64800, 186920, 136205, -972884, + 925493, 679207, 31200, 70127, 51100, -996225, + 569086, 417645, 8400, 23215, 16916, -999586, + 879477, 1198382, 105600, 390419, 535788, -748665, + 821035, 1118749, 64800, 136205, 186920, -972884, + 679207, 925493, 31200, 51100, 70127, -996225, + 417645, 569086, 8400, 16916, 23215, -999586, + 472434, 1406405, 105600, 206227, 630811, -748027, + 441041, 1312948, 64800, 72000, 220235, -972782, + 364854, 1086146, 31200, 27015, 82633, -996211, + 224349, 667871, 8400, 8943, 27355, -999585, + 0, 1480800, 105600, 0, 664364, -747409, + 0, 1382400, 64800, 0, 232118, -972685, + 0, 1143600, 31200, 0, 87099, -996200, + 0, 703200, 8400, 0, 28834, -999583, + -1480800, 0, 105600, -664364, 0, -747409, + -1406405, -472435, 105600, -630811, -206227, -748027, + -1382400, 0, 64800, -232118, 0, -972685, + -1312948, -441041, 64800, -220235, -72000, -972782, + -1143600, 0, 31200, -87099, 0, -996200, + -1086146, -364854, 31200, -82633, -27015, -996211, + -703200, 0, 8400, -28834, 0, -999583, + -667871, -224349, 8400, -27355, -8943, -999585, + -1198382, -879477, 105600, -535788, -390419, -748665, + -1118749, -821035, 64800, -186920, -136205, -972884, + -925493, -679207, 31200, -70127, -51100, -996225, + -569086, -417645, 8400, -23215, -16916, -999586, + -879477, -1198382, 105600, -390419, -535788, -748665, + -821035, -1118749, 64800, -136205, -186920, -972884, + -679207, -925493, 31200, -51100, -70127, -996225, + -417645, -569086, 8400, -16916, -23215, -999586, + -472434, -1406405, 105600, -206227, -630811, -748027, + -441041, -1312948, 64800, -72000, -220235, -972782, + -364854, -1086146, 31200, -27015, -82633, -996211, + -224349, -667871, 8400, -8943, -27355, -999585, + -472435, 1406405, 105600, -206227, 630811, -748027, + -441041, 1312948, 64800, -72000, 220235, -972782, + -364854, 1086146, 31200, -27015, 82633, -996211, + -224349, 667871, 8400, -8943, 27355, -999585, + -879477, 1198382, 105600, -390419, 535788, -748665, + -821035, 1118749, 64800, -136205, 186920, -972884, + -679207, 925493, 31200, -51100, 70127, -996225, + -417645, 569086, 8400, -16916, 23215, -999586, + -1198382, 879477, 105600, -535788, 390419, -748665, + -1118749, 821035, 64800, -186920, 136205, -972884, + -925493, 679207, 31200, -70127, 51100, -996225, + -569086, 417645, 8400, -23215, 16916, -999586, + -1406405, 472434, 105600, -630811, 206227, -748027, + -1312948, 441041, 64800, -220235, 72000, -972782, + -1086146, 364854, 31200, -82633, 27015, -996211, + -667871, 224349, 8400, -27355, 8943, -999585, + -2652800, 0, 1909800, 678279, 0, -734802, + -2700000, 0, 1800000, 1000000, 0, 0, + -2731200, -144000, 1800000, 882349, -470586, 0, + -2682669, -144000, 1921219, 629799, -445736, -636138, + -2514400, 0, 1976400, 257464, 0, -966285, + -2539943, -144000, 1994746, 252433, -388174, -886339, + -2289600, 0, 2010600, 80816, 0, -996729, + -2307322, -144000, 2032503, 79910, -370650, -925328, + -1983200, 0, 2023200, 15623, 0, -999877, + -1989107, -144000, 2046413, 15400, -370124, -928855, + -1600000, 0, 2025000, 0, 0, -999997, + -1589600, -144000, 2048400, 0, -371391, -928477, + -2805600, -216000, 1800000, 384615, -923074, 0, + -2753895, -216000, 1948450, 298688, -917366, -263094, + -2600852, -216000, 2038493, 140821, -889659, -434364, + -2349581, -216000, 2084732, 46970, -875201, -481465, + -2003194, -216000, 2101767, 9046, -873433, -486852, + -1564800, -216000, 2104200, 0, -874153, -485641, + -2894400, -216000, 1800000, -384616, -923077, 0, + -2838906, -216000, 1980951, -308779, -920335, 240078, + -2673549, -216000, 2090707, -153234, -894313, 420379, + -2400019, -216000, 2147069, -52052, -876688, 478236, + -2020006, -216000, 2167834, -10009, -873532, 486663, + -1535200, -216000, 2170800, 0, -874157, 485643, + -2968800, -144000, 1800000, -882353, -470588, 0, + -2910131, -144000, 2008181, -718844, -467462, 514531, + -2734458, -144000, 2134455, -333894, -411701, 847945, + -2442279, -144000, 2199298, -107561, -377010, 919942, + -2034093, -144000, 2223188, -20401, -370527, 928596, + -1510400, -144000, 2226600, 0, -371390, 928475, + -3000000, 0, 1800000, -1000000, 0, 0, + -2940000, 0, 2019600, -821368, 0, 570394, + -2760000, 0, 2152800, -375382, 0, 926870, + -2460000, 0, 2221200, -119145, 0, 992876, + -2040000, 0, 2246400, -22494, 0, 999744, + -1500000, 0, 2250000, 0, 0, 999998, + -2968800, 144000, 1800000, -882353, 470588, 0, + -2910131, 144000, 2008181, -718844, 467462, 514531, + -2734458, 144000, 2134455, -333894, 411701, 847945, + -2442279, 144000, 2199298, -107561, 377010, 919942, + -2034093, 144000, 2223187, -20401, 370527, 928596, + -1510400, 144000, 2226600, 0, 371390, 928475, + -2894400, 216000, 1800000, -384615, 923077, 0, + -2838906, 216000, 1980951, -308779, 920335, 240078, + -2673549, 216000, 2090708, -153234, 894313, 420378, + -2400019, 216000, 2147069, -52052, 876688, 478235, + -2020007, 216000, 2167834, -10009, 873533, 486663, + -1535200, 216000, 2170800, 0, 874157, 485643, + -2805600, 216000, 1800000, 384614, 923074, 0, + -2753895, 216000, 1948450, 298687, 917366, -263094, + -2600851, 216000, 2038493, 140821, 889659, -434364, + -2349581, 216000, 2084732, 46970, 875201, -481465, + -2003194, 216000, 2101767, 9046, 873433, -486852, + -1564800, 216000, 2104200, 0, 874153, -485641, + -2731200, 144000, 1800000, 882349, 470586, 0, + -2682669, 144000, 1921219, 629799, 445736, -636138, + -2539943, 144000, 1994746, 252433, 388174, -886339, + -2307322, 144000, 2032503, 79910, 370650, -925328, + -1989107, 144000, 2046413, 15400, 370124, -928855, + -1589600, 144000, 2048400, 0, 371391, -928477, + -2264800, 0, 1058400, 611799, 0, 791013, + -1989600, -144000, 868800, 379236, -382045, 842747, + -2268711, -144000, 1032691, 558613, -364714, 744934, + -2462400, 0, 1249200, 769924, 0, 638135, + -2477875, -144000, 1227298, 691468, -406502, 597183, + -2597600, 0, 1450800, 884111, 0, 467278, + -2621646, -144000, 1433079, 781918, -451570, 429746, + -2675200, 0, 1641600, 962253, 0, 272152, + -2704570, -144000, 1630493, 846995, -471755, 245044, + -1964800, -216000, 794400, 194296, -880806, 431768, + -2278035, -216000, 971386, 280289, -873120, 398872, + -2514778, -216000, 1175069, 322750, -896343, 303976, + -2678983, -216000, 1390820, 344194, -916219, 205104, + -2774605, -216000, 1604007, 366848, -923633, 111013, + -1935200, -216000, 705600, -194296, -880808, -431769, + -2289165, -216000, 898215, -265223, -876079, -402660, + -2558823, -216000, 1112731, -307337, -897713, -315680, + -2747418, -216000, 1340381, -335932, -916638, -216621, + -2858195, -216000, 1572394, -365298, -923730, -115227, + -1910400, -144000, 631200, -379235, -382044, -842744, + -2298490, -144000, 836909, -493114, -377428, -783828, + -2595725, -144000, 1060502, -614546, -413988, -671527, + -2804756, -144000, 1298122, -736106, -454498, -501569, + -2928231, -144000, 1545907, -838352, -472505, -271853, + -1900000, 0, 600000, -410363, 0, -911918, + -2302400, 0, 811200, -525858, 0, -850568, + -2611200, 0, 1038600, -666422, 0, -745575, + -2828800, 0, 1280400, -820903, 0, -571063, + -2957600, 0, 1534800, -950315, 0, -311291, + -1910400, 144000, 631200, -379235, 382044, -842744, + -2298490, 144000, 836909, -493114, 377428, -783828, + -2595725, 144000, 1060502, -614546, 413988, -671527, + -2804756, 144000, 1298122, -736106, 454498, -501569, + -2928231, 144000, 1545907, -838352, 472506, -271853, + -1935200, 216000, 705600, -194296, 880808, -431769, + -2289165, 216000, 898215, -265223, 876079, -402660, + -2558823, 216000, 1112731, -307337, 897713, -315680, + -2747418, 216000, 1340381, -335932, 916638, -216621, + -2858196, 216000, 1572394, -365297, 923730, -115227, + -1964800, 216000, 794400, 194296, 880806, 431768, + -2278035, 216000, 971386, 280289, 873120, 398872, + -2514778, 216000, 1175069, 322750, 896343, 303976, + -2678983, 216000, 1390819, 344194, 916219, 205104, + -2774605, 216000, 1604007, 366849, 923633, 111013, + -1989600, 144000, 868800, 379236, 382045, 842747, + -2268710, 144000, 1032691, 558613, 364714, 744935, + -2477875, 144000, 1227298, 691468, 406502, 597183, + -2621645, 144000, 1433079, 781918, 451570, 429746, + -2704570, 144000, 1630493, 846995, 471755, 245044, + 2528800, 0, 2183400, -901385, 0, 433018, + 2700000, 0, 2400000, -599998, 0, 799997, + 2762400, -120000, 2400000, -456679, -584548, 670626, + 2569735, -140467, 2173728, -695153, -572370, 434915, + 2434400, 0, 1927200, -948683, 0, 316228, + 2467347, -189274, 1900368, -806605, -470480, 357817, + 2325600, 0, 1681800, -836177, 0, 548460, + 2355053, -247526, 1634064, -703305, -462338, 539998, + 2111200, 0, 1497600, -417663, 0, 908600, + 2132666, -296333, 1428960, -336099, -511011, 791137, + 1700000, 0, 1425000, 0, 0, 999999, + 1700000, -316800, 1339200, -20447, -554584, 831876, + 2911200, -180000, 2400000, -163754, -943222, 288977, + 2667347, -210701, 2150665, -216744, -928832, 300487, + 2545914, -283910, 1836384, -225716, -923283, 310808, + 2425287, -371290, 1520232, -144680, -927429, 344881, + 2183853, -444499, 1265280, -52027, -935870, 348483, + 1700000, -475200, 1134600, -23270, -948426, 316142, + 3088800, -180000, 2400000, 161183, -928415, -334758, + 2783853, -210701, 2123136, 293016, -956011, -13319, + 2639686, -283910, 1760016, 490797, -869914, 48673, + 2509114, -371290, 1384368, 538925, -840157, -60780, + 2244947, -444499, 1069920, 312657, -914026, -258463, + 1700000, -475200, 890400, 37642, -948010, -316003, + 3237600, -120000, 2400000, 354182, -453353, -817936, + 2881466, -140467, 2100072, 714527, -579088, -392560, + 2718253, -189274, 1696032, 875791, -442525, -192752, + 2579347, -247526, 1270536, 854131, -405027, -326210, + 2296135, -296333, 906240, 550028, -485514, -679517, + 1700000, -316800, 685800, 123484, -550453, -825679, + 3300000, 0, 2400000, 384614, 0, -923073, + 2922400, 0, 2090400, 840531, 0, -541764, + 2751200, 0, 1669200, 962006, 0, -273019, + 2608800, 0, 1222800, 916944, 0, -399005, + 2317600, 0, 837600, 608573, 0, -793498, + 1700000, 0, 600000, 158678, 0, -987330, + 3237600, 120000, 2400000, 354182, 453353, -817936, + 2881466, 140467, 2100072, 714527, 579088, -392560, + 2718253, 189274, 1696032, 875791, 442525, -192752, + 2579347, 247526, 1270536, 854131, 405027, -326210, + 2296135, 296333, 906240, 550028, 485514, -679517, + 1700000, 316800, 685800, 123484, 550453, -825679, + 3088800, 180000, 2400000, 161183, 928415, -334758, + 2783853, 210701, 2123136, 293015, 956010, -13319, + 2639687, 283910, 1760016, 490797, 869914, 48673, + 2509114, 371290, 1384368, 538925, 840157, -60780, + 2244947, 444499, 1069920, 312657, 914026, -258463, + 1700000, 475200, 890400, 37642, 948010, -316003, + 2911200, 180000, 2400000, -163754, 943222, 288977, + 2667347, 210701, 2150664, -216744, 928832, 300487, + 2545914, 283910, 1836384, -225716, 923282, 310808, + 2425287, 371290, 1520232, -144680, 927429, 344881, + 2183853, 444499, 1265280, -52027, 935870, 348483, + 1700000, 475200, 1134600, -23270, 948426, 316142, + 2762400, 120000, 2400000, -456678, 584549, 670626, + 2569734, 140467, 2173728, -695153, 572369, 434915, + 2467347, 189274, 1900368, -806605, 470480, 357817, + 2355053, 247526, 1634064, -703305, 462338, 539998, + 2132666, 296333, 1428960, -336099, 511011, 791137, + 1700000, 316800, 1339200, -20447, 554584, 831877, + 2837600, 0, 2436000, 849056, 0, -528304, + 2800000, 0, 2400000, 599997, 0, -800000, + 2841600, -72000, 2400000, 439826, 625530, -644411, + 2888602, -76992, 2437685, 516600, 831320, -205017, + 2836800, 0, 2454000, 472217, 0, 881480, + 2896205, -88896, 2456246, 224528, 423910, 877431, + 2807200, 0, 2454000, -215408, 0, 976522, + 2872388, -103104, 2455966, -168884, -217723, 961285, + 2758400, 0, 2436000, -439383, 0, 898295, + 2825126, -115008, 2437124, -334755, -458291, 823348, + 2940800, -108000, 2400000, 149135, 954466, -258366, + 3010221, -115488, 2441703, 123177, 962458, 241862, + 3037863, -133344, 2461603, 21956, 416878, 908693, + 3027834, -154656, 2460653, -82283, -381857, 920550, + 2984244, -172512, 2439802, -131880, -781597, 609678, + 3059200, -108000, 2400000, -147596, 944613, 293111, + 3155379, -115488, 2446498, -127286, 787953, 602428, + 3206938, -133344, 2467997, -79448, 324229, 942633, + 3213367, -154656, 2466247, 54175, -554736, 830261, + 3174157, -172512, 2442999, 150468, -980604, 125601, + 3158400, -72000, 2400000, -360813, 513155, 778771, + 3276999, -76992, 2450516, -285775, 419575, 861559, + 3348595, -88896, 2473354, -149331, 185220, 971282, + 3368813, -103104, 2470935, 459685, -738552, 493175, + 3333274, -115008, 2445677, 445183, -620266, -645815, + 3200000, 0, 2400000, -410363, 0, 911919, + 3328000, 0, 2452200, -335142, 0, 942166, + 3408000, 0, 2475600, -180328, 0, 983607, + 3434001, 0, 2472900, 980198, 0, -198018, + 3400000, 0, 2446800, 487997, 0, -872840, + 3158400, 72000, 2400000, -360812, -513156, 778771, + 3276999, 76992, 2450516, -285775, -419575, 861559, + 3348595, 88896, 2473354, -149330, -185221, 971282, + 3368814, 103104, 2470935, 459685, 738552, 493175, + 3333274, 115008, 2445677, 445183, 620266, -645815, + 3059200, 108000, 2400000, -147596, -944613, 293111, + 3155379, 115488, 2446498, -127286, -787953, 602428, + 3206938, 133344, 2467997, -79448, -324229, 942633, + 3213367, 154656, 2466248, 54174, 554736, 830261, + 3174157, 172512, 2442999, 150468, 980604, 125601, + 2940800, 108000, 2400000, 149135, -954466, -258366, + 3010221, 115488, 2441703, 123177, -962458, 241862, + 3037863, 133344, 2461603, 21956, -416878, 908693, + 3027834, 154656, 2460653, -82283, 381857, 920550, + 2984243, 172512, 2439802, -131879, 781597, 609677, + 2841600, 72000, 2400000, 439825, -625530, -644411, + 2888602, 76992, 2437685, 516600, -831320, -205017, + 2896205, 88896, 2456246, 224528, -423910, 877431, + 2872387, 103104, 2455966, -168884, 217723, 961285, + 2825126, 115008, 2437124, -334755, 458291, 823348 +}; + +resource(2, "triangles") array { + 0, 1, 2, + 0, 2, 3, + 4, 0, 3, + 4, 3, 5, + 6, 4, 5, + 6, 5, 7, + 8, 6, 7, + 8, 7, 9, + 10, 8, 9, + 10, 9, 11, + 3, 2, 12, + 3, 12, 13, + 5, 3, 13, + 5, 13, 14, + 7, 5, 14, + 7, 14, 15, + 9, 7, 15, + 9, 15, 16, + 11, 9, 16, + 11, 16, 17, + 13, 12, 18, + 13, 18, 19, + 14, 13, 19, + 14, 19, 20, + 15, 14, 20, + 15, 20, 21, + 16, 15, 21, + 16, 21, 22, + 17, 16, 22, + 17, 22, 23, + 19, 18, 24, + 19, 24, 25, + 20, 19, 25, + 20, 25, 26, + 21, 20, 26, + 21, 26, 27, + 22, 21, 27, + 22, 27, 28, + 23, 22, 28, + 23, 28, 29, + 25, 24, 30, + 25, 30, 31, + 26, 25, 31, + 26, 31, 32, + 27, 26, 32, + 27, 32, 33, + 28, 27, 33, + 28, 33, 34, + 29, 28, 34, + 29, 34, 35, + 36, 37, 38, + 36, 38, 39, + 40, 36, 39, + 40, 39, 41, + 42, 40, 41, + 42, 41, 43, + 44, 42, 43, + 44, 43, 45, + 46, 44, 45, + 46, 45, 47, + 39, 38, 48, + 39, 48, 49, + 41, 39, 49, + 41, 49, 50, + 43, 41, 50, + 43, 50, 51, + 45, 43, 51, + 45, 51, 52, + 47, 45, 52, + 47, 52, 53, + 49, 48, 54, + 49, 54, 55, + 50, 49, 55, + 50, 55, 56, + 51, 50, 56, + 51, 56, 57, + 52, 51, 57, + 52, 57, 58, + 53, 52, 58, + 53, 58, 59, + 55, 54, 60, + 55, 60, 61, + 56, 55, 61, + 56, 61, 62, + 57, 56, 62, + 57, 62, 63, + 58, 57, 63, + 58, 63, 64, + 59, 58, 64, + 59, 64, 65, + 61, 60, 1, + 61, 1, 0, + 62, 61, 0, + 62, 0, 4, + 63, 62, 4, + 63, 4, 6, + 64, 63, 6, + 64, 6, 8, + 65, 64, 8, + 65, 8, 10, + 31, 30, 66, + 31, 66, 67, + 32, 31, 67, + 32, 67, 68, + 33, 32, 68, + 33, 68, 69, + 34, 33, 69, + 34, 69, 70, + 35, 34, 70, + 35, 70, 71, + 67, 66, 72, + 67, 72, 73, + 68, 67, 73, + 68, 73, 74, + 69, 68, 74, + 69, 74, 75, + 70, 69, 75, + 70, 75, 76, + 71, 70, 76, + 71, 76, 77, + 73, 72, 78, + 73, 78, 79, + 74, 73, 79, + 74, 79, 80, + 75, 74, 80, + 75, 80, 81, + 76, 75, 81, + 76, 81, 82, + 77, 76, 82, + 77, 82, 83, + 79, 78, 84, + 79, 84, 85, + 80, 79, 85, + 80, 85, 86, + 81, 80, 86, + 81, 86, 87, + 82, 81, 87, + 82, 87, 88, + 83, 82, 88, + 83, 88, 89, + 85, 84, 90, + 85, 90, 91, + 86, 85, 91, + 86, 91, 92, + 87, 86, 92, + 87, 92, 93, + 88, 87, 93, + 88, 93, 94, + 89, 88, 94, + 89, 94, 95, + 91, 90, 96, + 91, 96, 97, + 92, 91, 97, + 92, 97, 98, + 93, 92, 98, + 93, 98, 99, + 94, 93, 99, + 94, 99, 100, + 95, 94, 100, + 95, 100, 101, + 97, 96, 102, + 97, 102, 103, + 98, 97, 103, + 98, 103, 104, + 99, 98, 104, + 99, 104, 105, + 100, 99, 105, + 100, 105, 106, + 101, 100, 106, + 101, 106, 107, + 103, 102, 108, + 103, 108, 109, + 104, 103, 109, + 104, 109, 110, + 105, 104, 110, + 105, 110, 111, + 106, 105, 111, + 106, 111, 112, + 107, 106, 112, + 107, 112, 113, + 109, 108, 114, + 109, 114, 115, + 110, 109, 115, + 110, 115, 116, + 111, 110, 116, + 111, 116, 117, + 112, 111, 117, + 112, 117, 118, + 113, 112, 118, + 113, 118, 119, + 115, 114, 37, + 115, 37, 36, + 116, 115, 36, + 116, 36, 40, + 117, 116, 40, + 117, 40, 42, + 118, 117, 42, + 118, 42, 44, + 119, 118, 44, + 119, 44, 46, + 120, 121, 122, + 120, 122, 123, + 124, 120, 123, + 124, 123, 125, + 126, 124, 125, + 126, 125, 127, + 128, 126, 127, + 128, 127, 129, + 1, 128, 129, + 1, 129, 2, + 123, 122, 130, + 123, 130, 131, + 125, 123, 131, + 125, 131, 132, + 127, 125, 132, + 127, 132, 133, + 129, 127, 133, + 129, 133, 134, + 2, 129, 134, + 2, 134, 12, + 131, 130, 135, + 131, 135, 136, + 132, 131, 136, + 132, 136, 137, + 133, 132, 137, + 133, 137, 138, + 134, 133, 138, + 134, 138, 139, + 12, 134, 139, + 12, 139, 18, + 136, 135, 140, + 136, 140, 141, + 137, 136, 141, + 137, 141, 142, + 138, 137, 142, + 138, 142, 143, + 139, 138, 143, + 139, 143, 144, + 18, 139, 144, + 18, 144, 24, + 141, 140, 145, + 141, 145, 146, + 142, 141, 146, + 142, 146, 147, + 143, 142, 147, + 143, 147, 148, + 144, 143, 148, + 144, 148, 149, + 24, 144, 149, + 24, 149, 30, + 150, 151, 152, + 150, 152, 153, + 154, 150, 153, + 154, 153, 155, + 156, 154, 155, + 156, 155, 157, + 158, 156, 157, + 158, 157, 159, + 37, 158, 159, + 37, 159, 38, + 153, 152, 160, + 153, 160, 161, + 155, 153, 161, + 155, 161, 162, + 157, 155, 162, + 157, 162, 163, + 159, 157, 163, + 159, 163, 164, + 38, 159, 164, + 38, 164, 48, + 161, 160, 165, + 161, 165, 166, + 162, 161, 166, + 162, 166, 167, + 163, 162, 167, + 163, 167, 168, + 164, 163, 168, + 164, 168, 169, + 48, 164, 169, + 48, 169, 54, + 166, 165, 170, + 166, 170, 171, + 167, 166, 171, + 167, 171, 172, + 168, 167, 172, + 168, 172, 173, + 169, 168, 173, + 169, 173, 174, + 54, 169, 174, + 54, 174, 60, + 171, 170, 121, + 171, 121, 120, + 172, 171, 120, + 172, 120, 124, + 173, 172, 124, + 173, 124, 126, + 174, 173, 126, + 174, 126, 128, + 60, 174, 128, + 60, 128, 1, + 146, 145, 175, + 146, 175, 176, + 147, 146, 176, + 147, 176, 177, + 148, 147, 177, + 148, 177, 178, + 149, 148, 178, + 149, 178, 179, + 30, 149, 179, + 30, 179, 66, + 176, 175, 180, + 176, 180, 181, + 177, 176, 181, + 177, 181, 182, + 178, 177, 182, + 178, 182, 183, + 179, 178, 183, + 179, 183, 184, + 66, 179, 184, + 66, 184, 72, + 181, 180, 185, + 181, 185, 186, + 182, 181, 186, + 182, 186, 187, + 183, 182, 187, + 183, 187, 188, + 184, 183, 188, + 184, 188, 189, + 72, 184, 189, + 72, 189, 78, + 186, 185, 190, + 186, 190, 191, + 187, 186, 191, + 187, 191, 192, + 188, 187, 192, + 188, 192, 193, + 189, 188, 193, + 189, 193, 194, + 78, 189, 194, + 78, 194, 84, + 191, 190, 195, + 191, 195, 196, + 192, 191, 196, + 192, 196, 197, + 193, 192, 197, + 193, 197, 198, + 194, 193, 198, + 194, 198, 199, + 84, 194, 199, + 84, 199, 90, + 196, 195, 200, + 196, 200, 201, + 197, 196, 201, + 197, 201, 202, + 198, 197, 202, + 198, 202, 203, + 199, 198, 203, + 199, 203, 204, + 90, 199, 204, + 90, 204, 96, + 201, 200, 205, + 201, 205, 206, + 202, 201, 206, + 202, 206, 207, + 203, 202, 207, + 203, 207, 208, + 204, 203, 208, + 204, 208, 209, + 96, 204, 209, + 96, 209, 102, + 206, 205, 210, + 206, 210, 211, + 207, 206, 211, + 207, 211, 212, + 208, 207, 212, + 208, 212, 213, + 209, 208, 213, + 209, 213, 214, + 102, 209, 214, + 102, 214, 108, + 211, 210, 215, + 211, 215, 216, + 212, 211, 216, + 212, 216, 217, + 213, 212, 217, + 213, 217, 218, + 214, 213, 218, + 214, 218, 219, + 108, 214, 219, + 108, 219, 114, + 216, 215, 151, + 216, 151, 150, + 217, 216, 150, + 217, 150, 154, + 218, 217, 154, + 218, 154, 156, + 219, 218, 156, + 219, 156, 158, + 114, 219, 158, + 114, 158, 37, + 220, 221, 222, + 220, 222, 223, + 224, 220, 223, + 224, 223, 225, + 226, 224, 225, + 226, 225, 227, + 228, 226, 227, + 228, 227, 229, + 121, 228, 229, + 121, 229, 122, + 223, 222, 230, + 223, 230, 231, + 225, 223, 231, + 225, 231, 232, + 227, 225, 232, + 227, 232, 233, + 229, 227, 233, + 229, 233, 234, + 122, 229, 234, + 122, 234, 130, + 231, 230, 235, + 231, 235, 236, + 232, 231, 236, + 232, 236, 237, + 233, 232, 237, + 233, 237, 238, + 234, 233, 238, + 234, 238, 239, + 130, 234, 239, + 130, 239, 135, + 236, 235, 240, + 236, 240, 241, + 237, 236, 241, + 237, 241, 242, + 238, 237, 242, + 238, 242, 243, + 239, 238, 243, + 239, 243, 244, + 135, 239, 244, + 135, 244, 140, + 241, 240, 245, + 241, 245, 246, + 242, 241, 246, + 242, 246, 247, + 243, 242, 247, + 243, 247, 248, + 244, 243, 248, + 244, 248, 249, + 140, 244, 249, + 140, 249, 145, + 250, 251, 252, + 250, 252, 253, + 254, 250, 253, + 254, 253, 255, + 256, 254, 255, + 256, 255, 257, + 258, 256, 257, + 258, 257, 259, + 151, 258, 259, + 151, 259, 152, + 253, 252, 260, + 253, 260, 261, + 255, 253, 261, + 255, 261, 262, + 257, 255, 262, + 257, 262, 263, + 259, 257, 263, + 259, 263, 264, + 152, 259, 264, + 152, 264, 160, + 261, 260, 265, + 261, 265, 266, + 262, 261, 266, + 262, 266, 267, + 263, 262, 267, + 263, 267, 268, + 264, 263, 268, + 264, 268, 269, + 160, 264, 269, + 160, 269, 165, + 266, 265, 270, + 266, 270, 271, + 267, 266, 271, + 267, 271, 272, + 268, 267, 272, + 268, 272, 273, + 269, 268, 273, + 269, 273, 274, + 165, 269, 274, + 165, 274, 170, + 271, 270, 221, + 271, 221, 220, + 272, 271, 220, + 272, 220, 224, + 273, 272, 224, + 273, 224, 226, + 274, 273, 226, + 274, 226, 228, + 170, 274, 228, + 170, 228, 121, + 246, 245, 275, + 246, 275, 276, + 247, 246, 276, + 247, 276, 277, + 248, 247, 277, + 248, 277, 278, + 249, 248, 278, + 249, 278, 279, + 145, 249, 279, + 145, 279, 175, + 276, 275, 280, + 276, 280, 281, + 277, 276, 281, + 277, 281, 282, + 278, 277, 282, + 278, 282, 283, + 279, 278, 283, + 279, 283, 284, + 175, 279, 284, + 175, 284, 180, + 281, 280, 285, + 281, 285, 286, + 282, 281, 286, + 282, 286, 287, + 283, 282, 287, + 283, 287, 288, + 284, 283, 288, + 284, 288, 289, + 180, 284, 289, + 180, 289, 185, + 286, 285, 290, + 286, 290, 291, + 287, 286, 291, + 287, 291, 292, + 288, 287, 292, + 288, 292, 293, + 289, 288, 293, + 289, 293, 294, + 185, 289, 294, + 185, 294, 190, + 291, 290, 295, + 291, 295, 296, + 292, 291, 296, + 292, 296, 297, + 293, 292, 297, + 293, 297, 298, + 294, 293, 298, + 294, 298, 299, + 190, 294, 299, + 190, 299, 195, + 296, 295, 300, + 296, 300, 301, + 297, 296, 301, + 297, 301, 302, + 298, 297, 302, + 298, 302, 303, + 299, 298, 303, + 299, 303, 304, + 195, 299, 304, + 195, 304, 200, + 301, 300, 305, + 301, 305, 306, + 302, 301, 306, + 302, 306, 307, + 303, 302, 307, + 303, 307, 308, + 304, 303, 308, + 304, 308, 309, + 200, 304, 309, + 200, 309, 205, + 306, 305, 310, + 306, 310, 311, + 307, 306, 311, + 307, 311, 312, + 308, 307, 312, + 308, 312, 313, + 309, 308, 313, + 309, 313, 314, + 205, 309, 314, + 205, 314, 210, + 311, 310, 315, + 311, 315, 316, + 312, 311, 316, + 312, 316, 317, + 313, 312, 317, + 313, 317, 318, + 314, 313, 318, + 314, 318, 319, + 210, 314, 319, + 210, 319, 215, + 316, 315, 251, + 316, 251, 250, + 317, 316, 250, + 317, 250, 254, + 318, 317, 254, + 318, 254, 256, + 319, 318, 256, + 319, 256, 258, + 215, 319, 258, + 215, 258, 151, + 320, 321, 322, + 320, 322, 323, + 324, 320, 323, + 324, 323, 325, + 326, 324, 325, + 326, 325, 327, + 328, 326, 327, + 328, 327, 329, + 330, 328, 329, + 330, 329, 330, + 323, 322, 331, + 323, 331, 332, + 325, 323, 332, + 325, 332, 333, + 327, 325, 333, + 327, 333, 334, + 329, 327, 334, + 329, 334, 335, + 330, 329, 335, + 330, 335, 330, + 332, 331, 336, + 332, 336, 337, + 333, 332, 337, + 333, 337, 338, + 334, 333, 338, + 334, 338, 339, + 335, 334, 339, + 335, 339, 340, + 330, 335, 340, + 330, 340, 330, + 337, 336, 341, + 337, 341, 342, + 338, 337, 342, + 338, 342, 343, + 339, 338, 343, + 339, 343, 344, + 340, 339, 344, + 340, 344, 345, + 330, 340, 345, + 330, 345, 330, + 342, 341, 346, + 342, 346, 347, + 343, 342, 347, + 343, 347, 348, + 344, 343, 348, + 344, 348, 349, + 345, 344, 349, + 345, 349, 350, + 330, 345, 350, + 330, 350, 330, + 351, 352, 353, + 351, 353, 354, + 355, 351, 354, + 355, 354, 356, + 357, 355, 356, + 357, 356, 358, + 359, 357, 358, + 359, 358, 360, + 330, 359, 360, + 330, 360, 330, + 354, 353, 361, + 354, 361, 362, + 356, 354, 362, + 356, 362, 363, + 358, 356, 363, + 358, 363, 364, + 360, 358, 364, + 360, 364, 365, + 330, 360, 365, + 330, 365, 330, + 362, 361, 366, + 362, 366, 367, + 363, 362, 367, + 363, 367, 368, + 364, 363, 368, + 364, 368, 369, + 365, 364, 369, + 365, 369, 370, + 330, 365, 370, + 330, 370, 330, + 367, 366, 371, + 367, 371, 372, + 368, 367, 372, + 368, 372, 373, + 369, 368, 373, + 369, 373, 374, + 370, 369, 374, + 370, 374, 375, + 330, 370, 375, + 330, 375, 330, + 372, 371, 321, + 372, 321, 320, + 373, 372, 320, + 373, 320, 324, + 374, 373, 324, + 374, 324, 326, + 375, 374, 326, + 375, 326, 328, + 330, 375, 328, + 330, 328, 330, + 347, 346, 376, + 347, 376, 377, + 348, 347, 377, + 348, 377, 378, + 349, 348, 378, + 349, 378, 379, + 350, 349, 379, + 350, 379, 380, + 330, 350, 380, + 330, 380, 330, + 377, 376, 381, + 377, 381, 382, + 378, 377, 382, + 378, 382, 383, + 379, 378, 383, + 379, 383, 384, + 380, 379, 384, + 380, 384, 385, + 330, 380, 385, + 330, 385, 330, + 382, 381, 386, + 382, 386, 387, + 383, 382, 387, + 383, 387, 388, + 384, 383, 388, + 384, 388, 389, + 385, 384, 389, + 385, 389, 390, + 330, 385, 390, + 330, 390, 330, + 387, 386, 391, + 387, 391, 392, + 388, 387, 392, + 388, 392, 393, + 389, 388, 393, + 389, 393, 394, + 390, 389, 394, + 390, 394, 395, + 330, 390, 395, + 330, 395, 330, + 392, 391, 396, + 392, 396, 397, + 393, 392, 397, + 393, 397, 398, + 394, 393, 398, + 394, 398, 399, + 395, 394, 399, + 395, 399, 400, + 330, 395, 400, + 330, 400, 330, + 397, 396, 401, + 397, 401, 402, + 398, 397, 402, + 398, 402, 403, + 399, 398, 403, + 399, 403, 404, + 400, 399, 404, + 400, 404, 405, + 330, 400, 405, + 330, 405, 330, + 402, 401, 406, + 402, 406, 407, + 403, 402, 407, + 403, 407, 408, + 404, 403, 408, + 404, 408, 409, + 405, 404, 409, + 405, 409, 410, + 330, 405, 410, + 330, 410, 330, + 407, 406, 411, + 407, 411, 412, + 408, 407, 412, + 408, 412, 413, + 409, 408, 413, + 409, 413, 414, + 410, 409, 414, + 410, 414, 415, + 330, 410, 415, + 330, 415, 330, + 412, 411, 416, + 412, 416, 417, + 413, 412, 417, + 413, 417, 418, + 414, 413, 418, + 414, 418, 419, + 415, 414, 419, + 415, 419, 420, + 330, 415, 420, + 330, 420, 330, + 417, 416, 352, + 417, 352, 351, + 418, 417, 351, + 418, 351, 355, + 419, 418, 355, + 419, 355, 357, + 420, 419, 357, + 420, 357, 359, + 330, 420, 359, + 330, 359, 330, + 421, 422, 423, + 421, 423, 424, + 425, 421, 424, + 425, 424, 426, + 427, 425, 426, + 427, 426, 428, + 429, 427, 428, + 429, 428, 430, + 321, 429, 430, + 321, 430, 322, + 424, 423, 431, + 424, 431, 432, + 426, 424, 432, + 426, 432, 433, + 428, 426, 433, + 428, 433, 434, + 430, 428, 434, + 430, 434, 435, + 322, 430, 435, + 322, 435, 331, + 432, 431, 436, + 432, 436, 437, + 433, 432, 437, + 433, 437, 438, + 434, 433, 438, + 434, 438, 439, + 435, 434, 439, + 435, 439, 440, + 331, 435, 440, + 331, 440, 336, + 437, 436, 441, + 437, 441, 442, + 438, 437, 442, + 438, 442, 443, + 439, 438, 443, + 439, 443, 444, + 440, 439, 444, + 440, 444, 445, + 336, 440, 445, + 336, 445, 341, + 442, 441, 446, + 442, 446, 447, + 443, 442, 447, + 443, 447, 448, + 444, 443, 448, + 444, 448, 449, + 445, 444, 449, + 445, 449, 450, + 341, 445, 450, + 341, 450, 346, + 451, 452, 453, + 451, 453, 454, + 455, 451, 454, + 455, 454, 456, + 457, 455, 456, + 457, 456, 458, + 459, 457, 458, + 459, 458, 460, + 352, 459, 460, + 352, 460, 353, + 454, 453, 461, + 454, 461, 462, + 456, 454, 462, + 456, 462, 463, + 458, 456, 463, + 458, 463, 464, + 460, 458, 464, + 460, 464, 465, + 353, 460, 465, + 353, 465, 361, + 462, 461, 466, + 462, 466, 467, + 463, 462, 467, + 463, 467, 468, + 464, 463, 468, + 464, 468, 469, + 465, 464, 469, + 465, 469, 470, + 361, 465, 470, + 361, 470, 366, + 467, 466, 471, + 467, 471, 472, + 468, 467, 472, + 468, 472, 473, + 469, 468, 473, + 469, 473, 474, + 470, 469, 474, + 470, 474, 475, + 366, 470, 475, + 366, 475, 371, + 472, 471, 422, + 472, 422, 421, + 473, 472, 421, + 473, 421, 425, + 474, 473, 425, + 474, 425, 427, + 475, 474, 427, + 475, 427, 429, + 371, 475, 429, + 371, 429, 321, + 447, 446, 476, + 447, 476, 477, + 448, 447, 477, + 448, 477, 478, + 449, 448, 478, + 449, 478, 479, + 450, 449, 479, + 450, 479, 480, + 346, 450, 480, + 346, 480, 376, + 477, 476, 481, + 477, 481, 482, + 478, 477, 482, + 478, 482, 483, + 479, 478, 483, + 479, 483, 484, + 480, 479, 484, + 480, 484, 485, + 376, 480, 485, + 376, 485, 381, + 482, 481, 486, + 482, 486, 487, + 483, 482, 487, + 483, 487, 488, + 484, 483, 488, + 484, 488, 489, + 485, 484, 489, + 485, 489, 490, + 381, 485, 490, + 381, 490, 386, + 487, 486, 491, + 487, 491, 492, + 488, 487, 492, + 488, 492, 493, + 489, 488, 493, + 489, 493, 494, + 490, 489, 494, + 490, 494, 495, + 386, 490, 495, + 386, 495, 391, + 492, 491, 496, + 492, 496, 497, + 493, 492, 497, + 493, 497, 498, + 494, 493, 498, + 494, 498, 499, + 495, 494, 499, + 495, 499, 500, + 391, 495, 500, + 391, 500, 396, + 497, 496, 501, + 497, 501, 502, + 498, 497, 502, + 498, 502, 503, + 499, 498, 503, + 499, 503, 504, + 500, 499, 504, + 500, 504, 505, + 396, 500, 505, + 396, 505, 401, + 502, 501, 506, + 502, 506, 507, + 503, 502, 507, + 503, 507, 508, + 504, 503, 508, + 504, 508, 509, + 505, 504, 509, + 505, 509, 510, + 401, 505, 510, + 401, 510, 406, + 507, 506, 511, + 507, 511, 512, + 508, 507, 512, + 508, 512, 513, + 509, 508, 513, + 509, 513, 514, + 510, 509, 514, + 510, 514, 515, + 406, 510, 515, + 406, 515, 411, + 512, 511, 516, + 512, 516, 517, + 513, 512, 517, + 513, 517, 518, + 514, 513, 518, + 514, 518, 519, + 515, 514, 519, + 515, 519, 520, + 411, 515, 520, + 411, 520, 416, + 517, 516, 452, + 517, 452, 451, + 518, 517, 451, + 518, 451, 455, + 519, 518, 455, + 519, 455, 457, + 520, 519, 457, + 520, 457, 459, + 416, 520, 459, + 416, 459, 352, + 521, 245, 240, + 521, 240, 522, + 523, 521, 522, + 523, 522, 524, + 525, 523, 524, + 525, 524, 526, + 527, 525, 526, + 527, 526, 528, + 529, 527, 528, + 529, 528, 529, + 522, 240, 235, + 522, 235, 530, + 524, 522, 530, + 524, 530, 531, + 526, 524, 531, + 526, 531, 532, + 528, 526, 532, + 528, 532, 533, + 529, 528, 533, + 529, 533, 529, + 530, 235, 230, + 530, 230, 534, + 531, 530, 534, + 531, 534, 535, + 532, 531, 535, + 532, 535, 536, + 533, 532, 536, + 533, 536, 537, + 529, 533, 537, + 529, 537, 529, + 534, 230, 222, + 534, 222, 538, + 535, 534, 538, + 535, 538, 539, + 536, 535, 539, + 536, 539, 540, + 537, 536, 540, + 537, 540, 541, + 529, 537, 541, + 529, 541, 529, + 538, 222, 221, + 538, 221, 542, + 539, 538, 542, + 539, 542, 543, + 540, 539, 543, + 540, 543, 544, + 541, 540, 544, + 541, 544, 545, + 529, 541, 545, + 529, 545, 529, + 542, 221, 270, + 542, 270, 546, + 543, 542, 546, + 543, 546, 547, + 544, 543, 547, + 544, 547, 548, + 545, 544, 548, + 545, 548, 549, + 529, 545, 549, + 529, 549, 529, + 546, 270, 265, + 546, 265, 550, + 547, 546, 550, + 547, 550, 551, + 548, 547, 551, + 548, 551, 552, + 549, 548, 552, + 549, 552, 553, + 529, 549, 553, + 529, 553, 529, + 550, 265, 260, + 550, 260, 554, + 551, 550, 554, + 551, 554, 555, + 552, 551, 555, + 552, 555, 556, + 553, 552, 556, + 553, 556, 557, + 529, 553, 557, + 529, 557, 529, + 554, 260, 252, + 554, 252, 558, + 555, 554, 558, + 555, 558, 559, + 556, 555, 559, + 556, 559, 560, + 557, 556, 560, + 557, 560, 561, + 529, 557, 561, + 529, 561, 529, + 558, 252, 251, + 558, 251, 562, + 559, 558, 562, + 559, 562, 563, + 560, 559, 563, + 560, 563, 564, + 561, 560, 564, + 561, 564, 565, + 529, 561, 565, + 529, 565, 529, + 566, 295, 290, + 566, 290, 567, + 568, 566, 567, + 568, 567, 569, + 570, 568, 569, + 570, 569, 571, + 572, 570, 571, + 572, 571, 573, + 529, 572, 573, + 529, 573, 529, + 567, 290, 285, + 567, 285, 574, + 569, 567, 574, + 569, 574, 575, + 571, 569, 575, + 571, 575, 576, + 573, 571, 576, + 573, 576, 577, + 529, 573, 577, + 529, 577, 529, + 574, 285, 280, + 574, 280, 578, + 575, 574, 578, + 575, 578, 579, + 576, 575, 579, + 576, 579, 580, + 577, 576, 580, + 577, 580, 581, + 529, 577, 581, + 529, 581, 529, + 578, 280, 275, + 578, 275, 582, + 579, 578, 582, + 579, 582, 583, + 580, 579, 583, + 580, 583, 584, + 581, 580, 584, + 581, 584, 585, + 529, 581, 585, + 529, 585, 529, + 582, 275, 245, + 582, 245, 521, + 583, 582, 521, + 583, 521, 523, + 584, 583, 523, + 584, 523, 525, + 585, 584, 525, + 585, 525, 527, + 529, 585, 527, + 529, 527, 529, + 562, 251, 315, + 562, 315, 586, + 563, 562, 586, + 563, 586, 587, + 564, 563, 587, + 564, 587, 588, + 565, 564, 588, + 565, 588, 589, + 529, 565, 589, + 529, 589, 529, + 586, 315, 310, + 586, 310, 590, + 587, 586, 590, + 587, 590, 591, + 588, 587, 591, + 588, 591, 592, + 589, 588, 592, + 589, 592, 593, + 529, 589, 593, + 529, 593, 529, + 590, 310, 305, + 590, 305, 594, + 591, 590, 594, + 591, 594, 595, + 592, 591, 595, + 592, 595, 596, + 593, 592, 596, + 593, 596, 597, + 529, 593, 597, + 529, 597, 529, + 594, 305, 300, + 594, 300, 598, + 595, 594, 598, + 595, 598, 599, + 596, 595, 599, + 596, 599, 600, + 597, 596, 600, + 597, 600, 601, + 529, 597, 601, + 529, 601, 529, + 598, 300, 295, + 598, 295, 566, + 599, 598, 566, + 599, 566, 568, + 600, 599, 568, + 600, 568, 570, + 601, 600, 570, + 601, 570, 572, + 529, 601, 572, + 529, 572, 529, + 602, 603, 604, + 602, 604, 605, + 606, 602, 605, + 606, 605, 607, + 608, 606, 607, + 608, 607, 609, + 610, 608, 609, + 610, 609, 611, + 612, 610, 611, + 612, 611, 613, + 605, 604, 614, + 605, 614, 615, + 607, 605, 615, + 607, 615, 616, + 609, 607, 616, + 609, 616, 617, + 611, 609, 617, + 611, 617, 618, + 613, 611, 618, + 613, 618, 619, + 615, 614, 620, + 615, 620, 621, + 616, 615, 621, + 616, 621, 622, + 617, 616, 622, + 617, 622, 623, + 618, 617, 623, + 618, 623, 624, + 619, 618, 624, + 619, 624, 625, + 621, 620, 626, + 621, 626, 627, + 622, 621, 627, + 622, 627, 628, + 623, 622, 628, + 623, 628, 629, + 624, 623, 629, + 624, 629, 630, + 625, 624, 630, + 625, 630, 631, + 627, 626, 632, + 627, 632, 633, + 628, 627, 633, + 628, 633, 634, + 629, 628, 634, + 629, 634, 635, + 630, 629, 635, + 630, 635, 636, + 631, 630, 636, + 631, 636, 637, + 633, 632, 638, + 633, 638, 639, + 634, 633, 639, + 634, 639, 640, + 635, 634, 640, + 635, 640, 641, + 636, 635, 641, + 636, 641, 642, + 637, 636, 642, + 637, 642, 643, + 639, 638, 644, + 639, 644, 645, + 640, 639, 645, + 640, 645, 646, + 641, 640, 646, + 641, 646, 647, + 642, 641, 647, + 642, 647, 648, + 643, 642, 648, + 643, 648, 649, + 645, 644, 650, + 645, 650, 651, + 646, 645, 651, + 646, 651, 652, + 647, 646, 652, + 647, 652, 653, + 648, 647, 653, + 648, 653, 654, + 649, 648, 654, + 649, 654, 655, + 651, 650, 656, + 651, 656, 657, + 652, 651, 657, + 652, 657, 658, + 653, 652, 658, + 653, 658, 659, + 654, 653, 659, + 654, 659, 660, + 655, 654, 660, + 655, 660, 661, + 657, 656, 603, + 657, 603, 602, + 658, 657, 602, + 658, 602, 606, + 659, 658, 606, + 659, 606, 608, + 660, 659, 608, + 660, 608, 610, + 661, 660, 610, + 661, 610, 612, + 662, 195, 663, + 662, 663, 664, + 665, 662, 664, + 665, 664, 666, + 667, 665, 666, + 667, 666, 668, + 669, 667, 668, + 669, 668, 670, + 603, 669, 670, + 603, 670, 604, + 664, 663, 671, + 664, 671, 672, + 666, 664, 672, + 666, 672, 673, + 668, 666, 673, + 668, 673, 674, + 670, 668, 674, + 670, 674, 675, + 604, 670, 675, + 604, 675, 614, + 672, 671, 676, + 672, 676, 677, + 673, 672, 677, + 673, 677, 678, + 674, 673, 678, + 674, 678, 679, + 675, 674, 679, + 675, 679, 680, + 614, 675, 680, + 614, 680, 620, + 677, 676, 681, + 677, 681, 682, + 678, 677, 682, + 678, 682, 683, + 679, 678, 683, + 679, 683, 684, + 680, 679, 684, + 680, 684, 685, + 620, 680, 685, + 620, 685, 626, + 682, 681, 686, + 682, 686, 687, + 683, 682, 687, + 683, 687, 688, + 684, 683, 688, + 684, 688, 689, + 685, 684, 689, + 685, 689, 690, + 626, 685, 690, + 626, 690, 632, + 687, 686, 691, + 687, 691, 692, + 688, 687, 692, + 688, 692, 693, + 689, 688, 693, + 689, 693, 694, + 690, 689, 694, + 690, 694, 695, + 632, 690, 695, + 632, 695, 638, + 692, 691, 696, + 692, 696, 697, + 693, 692, 697, + 693, 697, 698, + 694, 693, 698, + 694, 698, 699, + 695, 694, 699, + 695, 699, 700, + 638, 695, 700, + 638, 700, 644, + 697, 696, 701, + 697, 701, 702, + 698, 697, 702, + 698, 702, 703, + 699, 698, 703, + 699, 703, 704, + 700, 699, 704, + 700, 704, 705, + 644, 700, 705, + 644, 705, 650, + 702, 701, 706, + 702, 706, 707, + 703, 702, 707, + 703, 707, 708, + 704, 703, 708, + 704, 708, 709, + 705, 704, 709, + 705, 709, 710, + 650, 705, 710, + 650, 710, 656, + 707, 706, 195, + 707, 195, 662, + 708, 707, 662, + 708, 662, 665, + 709, 708, 665, + 709, 665, 667, + 710, 709, 667, + 710, 667, 669, + 656, 710, 669, + 656, 669, 603, + 711, 712, 713, + 711, 713, 714, + 715, 711, 714, + 715, 714, 716, + 717, 715, 716, + 717, 716, 718, + 719, 717, 718, + 719, 718, 720, + 721, 719, 720, + 721, 720, 722, + 714, 713, 723, + 714, 723, 724, + 716, 714, 724, + 716, 724, 725, + 718, 716, 725, + 718, 725, 726, + 720, 718, 726, + 720, 726, 727, + 722, 720, 727, + 722, 727, 728, + 724, 723, 729, + 724, 729, 730, + 725, 724, 730, + 725, 730, 731, + 726, 725, 731, + 726, 731, 732, + 727, 726, 732, + 727, 732, 733, + 728, 727, 733, + 728, 733, 734, + 730, 729, 735, + 730, 735, 736, + 731, 730, 736, + 731, 736, 737, + 732, 731, 737, + 732, 737, 738, + 733, 732, 738, + 733, 738, 739, + 734, 733, 739, + 734, 739, 740, + 736, 735, 741, + 736, 741, 742, + 737, 736, 742, + 737, 742, 743, + 738, 737, 743, + 738, 743, 744, + 739, 738, 744, + 739, 744, 745, + 740, 739, 745, + 740, 745, 746, + 742, 741, 747, + 742, 747, 748, + 743, 742, 748, + 743, 748, 749, + 744, 743, 749, + 744, 749, 750, + 745, 744, 750, + 745, 750, 751, + 746, 745, 751, + 746, 751, 752, + 748, 747, 753, + 748, 753, 754, + 749, 748, 754, + 749, 754, 755, + 750, 749, 755, + 750, 755, 756, + 751, 750, 756, + 751, 756, 757, + 752, 751, 757, + 752, 757, 758, + 754, 753, 759, + 754, 759, 760, + 755, 754, 760, + 755, 760, 761, + 756, 755, 761, + 756, 761, 762, + 757, 756, 762, + 757, 762, 763, + 758, 757, 763, + 758, 763, 764, + 760, 759, 765, + 760, 765, 766, + 761, 760, 766, + 761, 766, 767, + 762, 761, 767, + 762, 767, 768, + 763, 762, 768, + 763, 768, 769, + 764, 763, 769, + 764, 769, 770, + 766, 765, 712, + 766, 712, 711, + 767, 766, 711, + 767, 711, 715, + 768, 767, 715, + 768, 715, 717, + 769, 768, 717, + 769, 717, 719, + 770, 769, 719, + 770, 719, 721, + 771, 772, 773, + 771, 773, 774, + 775, 771, 774, + 775, 774, 776, + 777, 775, 776, + 777, 776, 778, + 779, 777, 778, + 779, 778, 780, + 712, 779, 780, + 712, 780, 713, + 774, 773, 781, + 774, 781, 782, + 776, 774, 782, + 776, 782, 783, + 778, 776, 783, + 778, 783, 784, + 780, 778, 784, + 780, 784, 785, + 713, 780, 785, + 713, 785, 723, + 782, 781, 786, + 782, 786, 787, + 783, 782, 787, + 783, 787, 788, + 784, 783, 788, + 784, 788, 789, + 785, 784, 789, + 785, 789, 790, + 723, 785, 790, + 723, 790, 729, + 787, 786, 791, + 787, 791, 792, + 788, 787, 792, + 788, 792, 793, + 789, 788, 793, + 789, 793, 794, + 790, 789, 794, + 790, 794, 795, + 729, 790, 795, + 729, 795, 735, + 792, 791, 796, + 792, 796, 797, + 793, 792, 797, + 793, 797, 798, + 794, 793, 798, + 794, 798, 799, + 795, 794, 799, + 795, 799, 800, + 735, 795, 800, + 735, 800, 741, + 797, 796, 801, + 797, 801, 802, + 798, 797, 802, + 798, 802, 803, + 799, 798, 803, + 799, 803, 804, + 800, 799, 804, + 800, 804, 805, + 741, 800, 805, + 741, 805, 747, + 802, 801, 806, + 802, 806, 807, + 803, 802, 807, + 803, 807, 808, + 804, 803, 808, + 804, 808, 809, + 805, 804, 809, + 805, 809, 810, + 747, 805, 810, + 747, 810, 753, + 807, 806, 811, + 807, 811, 812, + 808, 807, 812, + 808, 812, 813, + 809, 808, 813, + 809, 813, 814, + 810, 809, 814, + 810, 814, 815, + 753, 810, 815, + 753, 815, 759, + 812, 811, 816, + 812, 816, 817, + 813, 812, 817, + 813, 817, 818, + 814, 813, 818, + 814, 818, 819, + 815, 814, 819, + 815, 819, 820, + 759, 815, 820, + 759, 820, 765, + 817, 816, 772, + 817, 772, 771, + 818, 817, 771, + 818, 771, 775, + 819, 818, 775, + 819, 775, 777, + 820, 819, 777, + 820, 777, 779, + 765, 820, 779, + 765, 779, 712 +}; diff --git a/src/apps/glteapot/ObjectView.cpp b/src/apps/glteapot/ObjectView.cpp index c699dd200f..0999ed724d 100644 --- a/src/apps/glteapot/ObjectView.cpp +++ b/src/apps/glteapot/ObjectView.cpp @@ -18,9 +18,8 @@ #include "ObjectView.h" -#include -#include - +#include +#include #include #include #include @@ -29,8 +28,8 @@ #include "GLObject.h" #include "ResScroll.h" -#define teapotData "teapot.data" -char teapotPath[PATH_MAX]; +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "ObjectView" float displayScale = 1.0; float depthOfView = 30.0; @@ -50,6 +49,9 @@ float red[3] = {1.0, 0.0, 0.0}; float* bgColor = black; +const char *kNoResourceError = B_TRANSLATE("The Teapot 3D model was " + "not found in application resources. " + "Please repair the program installation."); struct light { float *ambient; @@ -166,12 +168,18 @@ ObjectView::ObjectView(BRect rect, const char *name, ulong resizingMode, quittingSem = create_sem(1, "quitting sem"); drawEvent = create_sem(0, "draw event"); - char findDir[PATH_MAX]; - find_directory(B_SYSTEM_DATA_DIRECTORY, -1, true, findDir, PATH_MAX); - sprintf(teapotPath, "%s/%s", findDir, teapotData); - fObjListLock.Lock(); - fObjects.AddItem(new TriangleObject(this, teapotPath)); - fObjListLock.Unlock(); + TriangleObject *Tri = new TriangleObject(this); + if (Tri->InitCheck() == B_OK) { + fObjListLock.Lock(); + fObjects.AddItem(Tri); + fObjListLock.Unlock(); + } else { + BAlert *NoResourceAlert = new BAlert(B_TRANSLATE("Error"), + kNoResourceError, B_TRANSLATE("OK"), NULL, NULL, + B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_STOP_ALERT); + NoResourceAlert->Go(); + delete Tri; + } } @@ -304,12 +312,23 @@ ObjectView::MessageReceived(BMessage* msg) fForceRedraw = true; setEvent(drawEvent); break; - case kMsgAddModel: - fObjListLock.Lock(); - fObjects.AddItem(new TriangleObject(this, teapotPath)); - fObjListLock.Unlock(); + case kMsgAddModel: + { + TriangleObject *Tri = new TriangleObject(this); + if (Tri->InitCheck() == B_OK) { + fObjListLock.Lock(); + fObjects.AddItem(Tri); + fObjListLock.Unlock(); + } else { + BAlert *NoResourceAlert = new BAlert(B_TRANSLATE("Error"), + kNoResourceError, B_TRANSLATE("OK"), NULL, NULL, + B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_STOP_ALERT); + NoResourceAlert->Go(); + delete Tri; + } setEvent(drawEvent); break; + } case kMsgLights: { msg->FindPointer("source", reinterpret_cast(&item));