X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-guide.h;h=78c795f837f245d53bf3e7c61b19988e7f79791d;hb=96c274534e3b260291098b7da1875695fe5b30a7;hp=a3b87648396ccb48431372bff0e1a9e2e00450f2;hpb=f4f507228b30d55fd7e39386ba513f3a0a54bd5d;p=inkscape.git diff --git a/src/sp-guide.h b/src/sp-guide.h index a3b876483..78c795f83 100644 --- a/src/sp-guide.h +++ b/src/sp-guide.h @@ -7,6 +7,7 @@ * A guideline * * Copyright (C) Lauris Kaplinski 2000 + * Copyright (C) Johan Engelen 2007 * */ @@ -25,26 +26,37 @@ /* Represents the constraint on p that dot(g.direction, p) == g.position. */ struct SPGuide : public SPObject { - NR::Point normal; - gdouble position; + NR::Point normal_to_line; + Geom::Point point_on_line; + guint32 color; guint32 hicolor; GSList *views; std::vector attached_items; + + inline bool is_horizontal() const { return (normal_to_line[Geom::X] == 0.); }; + inline bool is_vertical() const { return (normal_to_line[Geom::Y] == 0.); }; + inline double angle() const { return std::atan2( - normal_to_line[Geom::X], normal_to_line[Geom::Y] ); }; }; struct SPGuideClass { - SPObjectClass parent_class; + SPObjectClass parent_class; }; GType sp_guide_get_type(); +SPGuide *sp_guide_create(SPDesktop *desktop, Geom::Point const &pt1, Geom::Point const &pt2); +void sp_guide_pt_pairs_to_guides(SPDesktop *dt, std::list > &pts); +void sp_guide_create_guides_around_page(SPDesktop *dt); + void sp_guide_show(SPGuide *guide, SPCanvasGroup *group, GCallback handler); void sp_guide_hide(SPGuide *guide, SPCanvas *canvas); void sp_guide_sensitize(SPGuide *guide, SPCanvas *canvas, gboolean sensitive); -double sp_guide_position_from_pt(SPGuide const *guide, NR::Point const &pt); -void sp_guide_moveto(SPGuide const &guide, gdouble const position, bool const commit); +Geom::Point sp_guide_position_from_pt(SPGuide const *guide, NR::Point const &pt); +double sp_guide_distance_from_pt(SPGuide const *guide, Geom::Point const &pt); +void sp_guide_moveto(SPGuide const &guide, Geom::Point const point_on_line, bool const commit); +void sp_guide_set_normal(SPGuide const &guide, Geom::Point const normal_to_line, bool const commit); void sp_guide_remove(SPGuide *guide); char *sp_guide_description(SPGuide const *guide);