open_toontown_panda3d/pandaapp/src/stitchbase/stitchImageCommandOutput.cxx

107 lines
3.0 KiB
C++

// Filename: stitchImageCommandOutput.cxx
// Created by: drose (29Nov99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved
//
// All use of this software is subject to the terms of the Panda 3d
// Software license. You should have received a copy of this license
// along with this source code; you will also find a current copy of
// the license at http://etc.cmu.edu/panda3d/docs/license/ .
//
// To contact the maintainers of this program write to
// panda3d-general@lists.sourceforge.net .
//
////////////////////////////////////////////////////////////////////
#include "stitchImageCommandOutput.h"
#include "stitchImage.h"
#include "stitchLens.h"
#include "stitcher.h"
#include "stitchCommand.h"
#include "pnmImage.h"
#include "compose_matrix.h"
StitchImageCommandOutput::
StitchImageCommandOutput() {
}
void StitchImageCommandOutput::
add_input_image(StitchImage *image) {
_input_images.push_back(image);
}
void StitchImageCommandOutput::
add_output_image(StitchImage *image) {
_output_images.push_back(image);
}
void StitchImageCommandOutput::
add_stitcher(Stitcher *stitcher) {
_stitchers.push_back(stitcher);
}
void StitchImageCommandOutput::
execute() {
StitchCommand root;
Stitchers::const_iterator si;
for (si = _stitchers.begin(); si != _stitchers.end(); ++si) {
Stitcher *stitcher = (*si);
Stitcher::LoosePoints::const_iterator pi;
for (pi = stitcher->_loose_points.begin();
pi != stitcher->_loose_points.end();
++pi) {
StitchCommand *cmd = new StitchCommand(&root, StitchCommand::C_point3d);
cmd->set_name((*pi)->_name);
cmd->set_point3d((*pi)->_space);
}
}
Images::const_iterator ii;
for (ii = _input_images.begin(); ii != _input_images.end(); ++ii) {
StitchImage *input = (*ii);
StitchCommand *image_cmd = new StitchCommand(&root, StitchCommand::C_input_image);
fill_image_cmd(image_cmd, input);
}
for (ii = _output_images.begin(); ii != _output_images.end(); ++ii) {
StitchImage *output = (*ii);
StitchCommand *image_cmd = new StitchCommand(&root, StitchCommand::C_output_image);
fill_image_cmd(image_cmd, output);
}
cout << root << "\n";
}
void StitchImageCommandOutput::
fill_image_cmd(StitchCommand *image_cmd, StitchImage *image) {
if (image->has_name()) {
image_cmd->set_name(image->get_name());
}
StitchCommand *cmd;
cmd = new StitchCommand(image_cmd, StitchCommand::C_filename);
cmd->set_str(image->get_filename());
cmd = new StitchCommand(image_cmd, StitchCommand::C_image_size);
cmd->set_point2d(image->get_size_pixels());
cmd = new StitchCommand(image_cmd, StitchCommand::C_film_size);
cmd->set_length_pair(image->get_size_mm());
image->_lens->make_lens_command(image_cmd);
LVecBase3d scale, hpr, trans;
if (decompose_matrix(image->_transform, scale, hpr, trans)) {
cmd = new StitchCommand(image_cmd, StitchCommand::C_hpr);
cmd->set_point3d(hpr);
//**** Do something with translate here.
}
}