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 &section, 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 &section, const std::string &name, const Point &center,
           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 &section, 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 &section, 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

Reply via email to