173 lines
3.9 KiB
C++
173 lines
3.9 KiB
C++
// Filename: stitchCommand.h
|
|
// Created by: drose (08Nov99)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PANDA 3D SOFTWARE
|
|
// Copyright (c) 2001, 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://www.panda3d.org/license.txt .
|
|
//
|
|
// To contact the maintainers of this program write to
|
|
// panda3d@yahoogroups.com .
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef STITCHCOMMAND_H
|
|
#define STITCHCOMMAND_H
|
|
|
|
#include "pandaappbase.h"
|
|
#include "stitchScreen.h"
|
|
|
|
#include "luse.h"
|
|
#include "pointerTo.h"
|
|
#include "pvector.h"
|
|
|
|
class StitchLens;
|
|
class StitchImage;
|
|
class StitchScreen;
|
|
class StitchImageOutputter;
|
|
class StitchFile;
|
|
class Stitcher;
|
|
|
|
class StitchCommand {
|
|
public:
|
|
enum Command {
|
|
C_global,
|
|
C_define,
|
|
C_lens,
|
|
C_input_image,
|
|
C_output_image,
|
|
C_eyepoint,
|
|
C_perspective,
|
|
C_fisheye,
|
|
C_cylindrical,
|
|
C_psphere,
|
|
C_focal_length,
|
|
C_fov,
|
|
C_singularity_tolerance,
|
|
C_resolution,
|
|
C_filename,
|
|
C_fade,
|
|
C_point2d,
|
|
C_point3d,
|
|
C_show_points,
|
|
C_image_size,
|
|
C_film_size,
|
|
C_film_offset,
|
|
C_grid,
|
|
C_untextured_color,
|
|
C_hpr,
|
|
C_pos,
|
|
C_radius,
|
|
C_angle,
|
|
C_height,
|
|
C_layers,
|
|
C_stitch,
|
|
C_screen,
|
|
C_using,
|
|
C_user_command,
|
|
};
|
|
|
|
StitchCommand(StitchCommand *parent = NULL,
|
|
Command command = C_global);
|
|
~StitchCommand();
|
|
|
|
void clear();
|
|
|
|
void set_name(const string &name);
|
|
void set_length(double number);
|
|
void set_resolution(double number);
|
|
void set_number(double number);
|
|
void set_point2d(const LVecBase2d &point);
|
|
void set_point3d(const LVecBase3d &point);
|
|
void set_length_pair(const LVecBase2d &point);
|
|
void set_color(const Colord &color);
|
|
void set_str(const string &str);
|
|
bool add_using(const string &name);
|
|
void add_nested(StitchCommand *nested);
|
|
|
|
string get_name() const;
|
|
double get_number() const;
|
|
LVecBase2d get_point2d() const;
|
|
LVecBase3d get_point3d() const;
|
|
LVector3d get_vector3d() const;
|
|
Colord get_color() const;
|
|
string get_str() const;
|
|
|
|
bool has_name() const;
|
|
bool has_number() const;
|
|
bool has_point2d() const;
|
|
bool has_point3d() const;
|
|
bool has_color() const;
|
|
bool has_str() const;
|
|
|
|
StitchCommand *find_definition(const string &name);
|
|
|
|
void process(StitchImageOutputter &outputter, Stitcher *stitcher,
|
|
StitchFile &file);
|
|
|
|
void write(ostream &out, int indent) const;
|
|
|
|
|
|
private:
|
|
StitchLens *find_using_lens();
|
|
StitchLens *find_lens();
|
|
StitchLens *make_lens();
|
|
|
|
StitchCommand *find_using_command(Command command);
|
|
StitchCommand *find_command(Command command);
|
|
string find_parameter(Command command, const string &dflt);
|
|
double find_parameter(Command command, double dflt);
|
|
LVecBase2d find_parameter(Command command, const LVecBase2d &dflt);
|
|
|
|
StitchImage *create_image();
|
|
void set_eyepoint(StitchImageOutputter &outputter);
|
|
PT(StitchScreen) create_screen();
|
|
|
|
|
|
StitchCommand *_parent;
|
|
Command _command;
|
|
|
|
enum Parameters {
|
|
P_name = 0x001,
|
|
P_length = 0x002,
|
|
P_resolution = 0x004,
|
|
P_number = 0x008,
|
|
P_point2d = 0x010,
|
|
P_point3d = 0x020,
|
|
P_length_pair = 0x040,
|
|
P_color = 0x080,
|
|
P_str = 0x100,
|
|
P_using = 0x200,
|
|
P_nested = 0x400
|
|
};
|
|
|
|
int _params;
|
|
|
|
string _name;
|
|
double _number;
|
|
double _n[4];
|
|
string _str;
|
|
|
|
// This will only get filled in by make_lens().
|
|
StitchLens *_lens;
|
|
|
|
typedef pvector<StitchCommand *> Commands;
|
|
Commands _using;
|
|
Commands _nested;
|
|
};
|
|
|
|
inline ostream &operator << (ostream &out, const StitchCommand &c) {
|
|
c.write(out, 0);
|
|
return out;
|
|
}
|
|
|
|
ostream &operator << (ostream &out, StitchCommand::Command c);
|
|
|
|
|
|
#endif
|