8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz/*
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz * Inkscape::ControlManager - Coordinates creation and styling of nodes, handles, etc.
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz *
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz * Author:
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz * Jon A. Cruz <jon@joncruz.org>
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz *
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz * Copyright 2012 Authors
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz *
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz * Released under GNU GPL, read the file 'COPYING' for more information
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz */
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz#ifndef SEEN_INKSCAPE_CONTROL_MANAGER_H
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz#define SEEN_INKSCAPE_CONTROL_MANAGER_H
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz#include <memory>
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz#include <sigc++/sigc++.h>
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruz#include "ui/control-types.h"
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruzstruct SPCanvasGroup;
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruzstruct SPCanvasItem;
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruzstruct SPCtrlLine;
8e805e9cc405a128b9f8b317c9fc84d739f1ec49tavmjong-freestruct SPCtrlCurve;
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruznamespace Geom
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruz{
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruz
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruzclass Point;
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruz
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruz} // namespace Geom
b17d0745d113a4e1b0caa99a929e8373367ae48eJon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruznamespace Inkscape {
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruzenum CtrlLineType {
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz CTLINE_PRIMARY,
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz CTLINE_SECONDARY,
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz CTLINE_TERTIARY,
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz};
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruzclass ControlManagerImpl;
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruzclass ControlManager
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz{
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruzpublic:
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz static ControlManager &getManager();
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz ~ControlManager();
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz sigc::connection connectCtrlSizeChanged(const sigc::slot<void> &slot);
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz SPCanvasItem *createControl(SPCanvasGroup *parent, ControlType type);
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz SPCtrlLine *createControlLine(SPCanvasGroup *parent, CtrlLineType type = CTLINE_PRIMARY);
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz SPCtrlLine *createControlLine(SPCanvasGroup *parent, Geom::Point const &p1, Geom::Point const &p2, CtrlLineType type = CTLINE_PRIMARY);
07390c2aae073d28c5fa1a9ae5c4b3191d1399bfJon A. Cruz
8e805e9cc405a128b9f8b317c9fc84d739f1ec49tavmjong-free SPCtrlCurve *createControlCurve(SPCanvasGroup *parent, Geom::Point const &p0, Geom::Point const &p1, Geom::Point const &p2, Geom::Point const &p3, CtrlLineType type = CTLINE_PRIMARY);
8e805e9cc405a128b9f8b317c9fc84d739f1ec49tavmjong-free
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz void track(SPCanvasItem *item);
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz void updateItem(SPCanvasItem *item);
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz bool setControlType(SPCanvasItem *item, ControlType type);
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz
cb18d33283b8806a9fb5a854fac079dce564fc2fMartin Owens bool setControlResize(SPCanvasItem *item, int ctrlResize);
cb18d33283b8806a9fb5a854fac079dce564fc2fMartin Owens
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz bool isActive(SPCanvasItem *item) const;
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz void setActive(SPCanvasItem *item, bool active);
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz bool isPrelight(SPCanvasItem *item) const;
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz void setPrelight(SPCanvasItem *item, bool prelight);
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz bool isSelected(SPCanvasItem *item) const;
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz void setSelected(SPCanvasItem *item, bool selected);
52bbce559a1594256804e3f1ad4703a5ff7db138Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruzprivate:
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz ControlManager();
f1f9ad8176ddd6913180a1fb76e7ce1558e6a82eMarc Jeanmougin#if __cplusplus <= 199711L
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz std::auto_ptr<ControlManagerImpl> _impl;
f1f9ad8176ddd6913180a1fb76e7ce1558e6a82eMarc Jeanmougin#else
f1f9ad8176ddd6913180a1fb76e7ce1558e6a82eMarc Jeanmougin std::unique_ptr<ControlManagerImpl> _impl;
f1f9ad8176ddd6913180a1fb76e7ce1558e6a82eMarc Jeanmougin#endif
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz friend class ControlManagerImpl;
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz};
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz} // namespace Inkscape
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz#endif // SEEN_INKSCAPE_CONTROL_MANAGER_H
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz/*
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz Local Variables:
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz mode:c++
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz c-file-style:"stroustrup"
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz indent-tabs-mode:nil
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz fill-column:99
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz End:
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz*/
8ab2991a47c99fe39f45014a19f10be449839948Jon A. Cruz// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :