Skip to content

Commit cfc6114

Browse files
authored
Merge pull request #62 from cdyk/more-rev-types
More rev types
2 parents 6c24ed0 + 3462218 commit cfc6114

File tree

1 file changed

+40
-27
lines changed

1 file changed

+40
-27
lines changed

src/ExportRev.cpp

+40-27
Original file line numberDiff line numberDiff line change
@@ -70,35 +70,40 @@ namespace {
7070
{
7171
// Skip primitives with unknown formatting
7272
switch (geometry->kind) {
73-
case Geometry::Kind::Pyramid:
74-
reportUnsupportedPrimitive(ctx, 1);
75-
return; break;
76-
case Geometry::Kind::RectangularTorus:
77-
reportUnsupportedPrimitive(ctx, 3);
78-
return; break;
79-
case Geometry::Kind::EllipticalDish:
80-
reportUnsupportedPrimitive(ctx, 5);
81-
return; break;
8273
case Geometry::Kind::Sphere:
8374
reportUnsupportedPrimitive(ctx, 9);
8475
return; break;
85-
case Geometry::Kind::Line:
86-
reportUnsupportedPrimitive(ctx, 10);
87-
return; break;
76+
case Geometry::Kind::Pyramid:
77+
case Geometry::Kind::RectangularTorus:
78+
case Geometry::Kind::EllipticalDish:
8879
case Geometry::Kind::Box:
8980
case Geometry::Kind::CircularTorus:
9081
case Geometry::Kind::SphericalDish:
9182
case Geometry::Kind::Snout:
9283
case Geometry::Kind::Cylinder:
84+
case Geometry::Kind::Line:
9385
case Geometry::Kind::FacetGroup:
9486
// supported
9587
break;
9688
default:
9789
assert(false);
9890
}
9991

100-
// write
101-
writeChunkHeader(ctx, "PRIM");
92+
// write header with geometry type
93+
switch (geometry->type) {
94+
case Geometry::Type::Primitive:
95+
writeChunkHeader(ctx, "PRIM");
96+
break;
97+
case Geometry::Type::Obstruction:
98+
writeChunkHeader(ctx, "OBST");
99+
break;
100+
case Geometry::Type::Insulation:
101+
writeChunkHeader(ctx, "INSU");
102+
break;
103+
default:
104+
assert(false && "Invalid enum");
105+
break;
106+
}
102107

103108
uint32_t kind = 0;
104109
switch (geometry->kind) {
@@ -129,26 +134,33 @@ namespace {
129134
}
130135

131136
switch (geometry->kind) {
132-
case Geometry::Kind::Pyramid: fflush(ctx->out);
133-
fflush(ctx->out);
134-
assert(false && "Unhandled primitive type 1");
137+
case Geometry::Kind::Pyramid:
138+
writeVec4f(ctx,
139+
geometry->pyramid.bottom[0], geometry->pyramid.bottom[1],
140+
geometry->pyramid.top[0], geometry->pyramid.top[1]);
141+
writeVec3f(ctx,
142+
geometry->pyramid.offset[0], geometry->pyramid.offset[1], geometry->pyramid.height);
135143
break;
136144
case Geometry::Kind::Box:
137145
writeVec3f(ctx, geometry->box.lengths);
138146
break;
139-
case Geometry::Kind::RectangularTorus: fflush(ctx->out);
140-
fflush(ctx->out);
141-
assert(false && "Unhandled primitive type 3");
147+
case Geometry::Kind::RectangularTorus:
148+
writeVec4f(ctx,
149+
geometry->rectangularTorus.inner_radius,
150+
geometry->rectangularTorus.outer_radius,
151+
geometry->rectangularTorus.height,
152+
geometry->rectangularTorus.angle);
142153
break;
143154
case Geometry::Kind::CircularTorus:
144155
writeVec3f(ctx,
145156
geometry->circularTorus.offset,
146157
geometry->circularTorus.radius,
147158
geometry->circularTorus.angle);
148159
break;
149-
case Geometry::Kind::EllipticalDish: fflush(ctx->out);
150-
fflush(ctx->out);
151-
assert(false && "Unhandled primitive type 5");
160+
case Geometry::Kind::EllipticalDish:
161+
writeVec2f(ctx,
162+
geometry->ellipticalDish.baseRadius,
163+
geometry->ellipticalDish.height);
152164
break;
153165
case Geometry::Kind::SphericalDish:
154166
writeVec2f(ctx,
@@ -178,8 +190,9 @@ namespace {
178190
assert(false && "Unhandled primitive type 9");
179191
break;
180192
case Geometry::Kind::Line:
181-
fflush(ctx->out);
182-
assert(false && "Unhandled primitive type 10");
193+
writeVec2f(ctx,
194+
geometry->line.a,
195+
geometry->line.b);
183196
break;
184197
case Geometry::Kind::FacetGroup: {
185198
const auto& facetGroup = geometry->facetGroup;
@@ -283,11 +296,11 @@ bool exportRev(Store* store, Logger logger, const char* path)
283296
return false;
284297
}
285298
#endif
286-
logger(2, "exportRev: Writing %s...", path);
299+
logger(0, "exportRev: Writing %s...", path);
287300
for (Node* file = store->getFirstRoot(); file; file = file->next) {
288301
writeFile(&ctx, file);
289302
}
290-
logger(2, "exportRev: Writing %s... done", path);
303+
logger(0, "exportRev: Writing %s... done", path);
291304
fclose(ctx.out);
292305
return true;
293306
}

0 commit comments

Comments
 (0)