Revision: 65104
http://sourceforge.net/p/brlcad/code/65104
Author: ejno
Date: 2015-05-29 20:54:18 +0000 (Fri, 29 May 2015)
Log Message:
-----------
move color export code into FastgenWriter
Modified Paths:
--------------
brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp
Modified: brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp
===================================================================
--- brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp 2015-05-29
20:44:37 UTC (rev 65103)
+++ brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp 2015-05-29
20:54:18 UTC (rev 65104)
@@ -77,13 +77,12 @@
~FastgenWriter();
void write_comment(const std::string &value);
+ void write_section_color(std::size_t section_id, const unsigned char
*color);
std::pair<std::size_t, std::size_t> take_next_section_id();
private:
- friend class Section;
-
static const std::size_t MAX_GROUP_ID = 49;
static const std::size_t MAX_SECTION_ID = 999;
@@ -240,18 +239,30 @@
}
+void
+FastgenWriter::write_section_color(std::size_t section_id,
+ const unsigned char *color)
+{
+ m_colors_ostream << section_id << ' '
+ << section_id << ' '
+ << static_cast<unsigned>(color[0]) << ' '
+ << static_cast<unsigned>(color[1]) << ' '
+ << static_cast<unsigned>(color[2]) << '\n';
+}
+
+
class Point
{
public:
Point()
{
- VSETALL(m_point, 0.0);
+ VSETALL(*this, 0.0);
}
Point(const fastf_t *values)
{
- VMOVE(m_point, values);
+ VMOVE(*this, values);
}
@@ -481,7 +492,6 @@
{}
-inline
Section::~Section()
{
for (std::vector<Geometry *>::iterator it = m_geometry.begin();
@@ -521,13 +531,8 @@
FastgenWriter::Record(writer) << "SECTION" << id.first << id.second <<
(m_volume_mode ? 2 : 1);
- if (color) {
- writer.m_colors_ostream << id.second << ' '
- << id.second << ' '
- << static_cast<unsigned>(color[0]) << ' '
- << static_cast<unsigned>(color[1]) << ' '
- << static_cast<unsigned>(color[2]) << '\n';
- }
+ if (color)
+ writer.write_section_color(id.second, color);
m_grid_manager.write(writer);
std::size_t component_id = m_grid_manager.get_max_id() + 1;
@@ -546,11 +551,9 @@
Line(Section §ion, const std::string &name, const Point &point_a,
const Point &point_b, fastf_t thickness, fastf_t radius);
-
protected:
virtual void write_to_section(FastgenWriter &writer, std::size_t &id)
const;
-
private:
std::size_t m_grid1, m_grid2;
const fastf_t m_thickness, m_radius;
@@ -603,11 +606,9 @@
Sphere(Section §ion, const std::string &name, const Point ¢er,
fastf_t thickness, fastf_t radius);
-
protected:
virtual void write_to_section(FastgenWriter &writer, std::size_t &id)
const;
-
private:
const std::size_t m_grid1;
const fastf_t m_thickness, m_radius;
@@ -643,11 +644,9 @@
const Point &point_b, fastf_t radius_outer1, fastf_t radius_outer2,
fastf_t radius_inner1, fastf_t radius_inner2);
-
protected:
virtual void write_to_section(FastgenWriter &writer, std::size_t &id)
const;
-
private:
std::size_t m_grid1, m_grid2;
const fastf_t m_ro1, m_ro2, m_ri1, m_ri2;
@@ -684,8 +683,7 @@
FastgenWriter::Record(writer) << "CCONE2" << id << 0 << m_grid1 << m_grid2
<< ""
<< "" << "" << m_ro1 *
FastgenWriter::INCHES_PER_MM << ++id;
FastgenWriter::Record(writer) << id << m_ro2 *
FastgenWriter::INCHES_PER_MM <<
- m_ri1 *
- FastgenWriter::INCHES_PER_MM << m_ri2 *
FastgenWriter::INCHES_PER_MM;
+ m_ri1 * FastgenWriter::INCHES_PER_MM << m_ri2
* FastgenWriter::INCHES_PER_MM;
}
@@ -696,11 +694,9 @@
const Point &point_b, const Point &point_c, fastf_t thickness,
bool grid_centered);
-
protected:
virtual void write_to_section(FastgenWriter &writer, std::size_t &id)
const;
-
private:
std::size_t m_grid1, m_grid2, m_grid3;
const fastf_t m_thickness;
@@ -750,11 +746,9 @@
Hexahedron(Section §ion, const std::string &name,
const fastf_t points[8][3]);
-
protected:
virtual void write_to_section(FastgenWriter &writer, std::size_t &id)
const;
-
private:
std::vector<std::size_t> m_grids;
};
@@ -794,13 +788,10 @@
HIDDEN void
-write_bot(FastgenWriter &writer, const std::string &name,
- const rt_bot_internal &bot, const unsigned char *color = NULL)
+write_bot(Section §ion, const rt_bot_internal &bot)
{
RT_BOT_CK_MAGIC(&bot);
- Section section(name, bot.mode == RT_BOT_SOLID);
-
for (std::size_t i = 0; i < bot.num_faces; ++i) {
fastf_t thickness = 1.0;
bool grid_centered = false;
@@ -822,8 +813,6 @@
section.add(new Section::Triangle(section, "", v1, v2, v3, thickness,
grid_centered));
}
-
- section.write(writer, color);
}
@@ -1034,6 +1023,7 @@
point_t v2;
VADD2(v2, cline.v, cline.h);
+
Section section(name, true);
section.add(new Section::Line(section, name, cline.v, v2,
cline.thickness,
cline.radius));
@@ -1079,6 +1069,7 @@
point_t v2;
VADD2(v2, tgc.v, tgc.h);
+
Section section(new_name, true);
section.add(new Section::Cone(section, name, tgc.v, v2, ro1, ro2,
ri1, ri2));
section.write(data.m_writer);
@@ -1098,7 +1089,10 @@
case ID_BOT: {
const rt_bot_internal &bot = *static_cast<rt_bot_internal
*>(internal.idb_ptr);
RT_BOT_CK_MAGIC(&bot);
- write_bot(data.m_writer, name, bot);
+
+ Section section(name, bot.mode == RT_BOT_SOLID);
+ write_bot(section, bot);
+ section.write(data.m_writer);
break;
}
@@ -1141,7 +1135,9 @@
char_color[0] = static_cast<unsigned char>(color[0] * 255.0 + 0.5);
char_color[1] = static_cast<unsigned char>(color[1] * 255.0 + 0.5);
char_color[2] = static_cast<unsigned char>(color[2] * 255.0 + 0.5);
- write_bot(data.m_writer, name, *bot, char_color);
+ Section section(name, bot->mode == RT_BOT_SOLID);
+ write_bot(section, *bot);
+ section.write(data.m_writer, char_color);
} catch (const std::runtime_error &e) {
bu_log("FAILURE: write_bot() failed on object '%s': %s\n",
name.c_str(),
e.what());
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits