YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftware
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
int single_point(double x, double y) override; int start_line() override; int complete_line() override; int start_poly() override; int complete_poly() override; int start_ring() override; int complete_ring() override; int add_point(double x, double y) override; int start_collection(int n_objects) override; int empty_shape() override;
};
class Gcalc_operation_reducer : public Gcalc_dyn_list
{ public: enum modes
{ /* Numeric values important here - careful with changing */
default_mode= 0,
prefer_big_with_holes= 1,
polygon_selfintersections_allowed= 2, /* allowed in the result */
line_selfintersections_allowed= 4/* allowed in the result */
};
Gcalc_operation_reducer(size_t blk_size=8192);
Gcalc_operation_reducer(const Gcalc_operation_reducer &gor); void init(Gcalc_function *fn, modes mode= default_mode);
Gcalc_operation_reducer(Gcalc_function *fn, modes mode= default_mode,
size_t blk_size=8192);
GCALC_DECL_TERMINATED_STATE(killed) int count_slice(Gcalc_scan_iterator *si); int count_all(Gcalc_heap *hp); int get_result(Gcalc_result_receiver *storage); void reset();
#ifndef GCALC_DBUG_OFF int n_res_points; #endif/*GCALC_DBUG_OFF*/ class res_point : public Gcalc_dyn_list::Item
{ public: int intersection_point; union
{ const Gcalc_heap::Info *pi;
res_point *first_poly_node;
}; union
{
res_point *outer_poly;
uint32 poly_position;
};
res_point *up;
res_point *down;
res_point *glue;
Gcalc_function::shape_type type;
Gcalc_dyn_list::Item **prev_hook; #ifndef GCALC_DBUG_OFF int point_n; #endif/*GCALC_DBUG_OFF*/ void set(const Gcalc_scan_iterator *si);
res_point *get_next() { return (res_point *)next; }
};
class active_thread : public Gcalc_dyn_list::Item
{ public:
res_point *rp;
res_point *thread_start;
class poly_instance : public Gcalc_dyn_list::Item
{ public:
uint32 *after_poly_position;
poly_instance *get_next() { return (poly_instance *)next; }
};
class line : public Gcalc_dyn_list::Item
{ public:
active_thread *t; int incoming; const Gcalc_scan_iterator::point *p;
line *get_next() { return (line *)next; }
};
class poly_border : public Gcalc_dyn_list::Item
{ public:
active_thread *t; int incoming; int prev_state; const Gcalc_scan_iterator::point *p;
poly_border *get_next() { return (poly_border *)next; }
};
line *m_lines;
Gcalc_dyn_list::Item **m_lines_hook;
poly_border *m_poly_borders;
Gcalc_dyn_list::Item **m_poly_borders_hook;
line *new_line() { return (line *) new_item(); }
poly_border *new_poly_border() { return (poly_border *) new_item(); } int add_line(int incoming, active_thread *t, const Gcalc_scan_iterator::point *p); int add_poly_border(int incoming, active_thread *t, int prev_state, const Gcalc_scan_iterator::point *p);
protected:
Gcalc_function *m_fn;
Gcalc_dyn_list::Item **m_res_hook;
res_point *m_result; int m_mode;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.