add (option) Bezier spot delimiters
This commit is contained in:
@@ -1061,6 +1061,8 @@ PREFERENCES_LANGAUTODETECT;Use system language
|
||||
PREFERENCES_LEVAUTDN;Denoising level
|
||||
PREFERENCES_LEVDN;Cell size
|
||||
PREFERENCES_LISS;Auto multi-zone smoothing
|
||||
PREFERENCES_LOCAL;Local adjustements
|
||||
PREFERENCES_LOCALSHOWDELIMSPOT;Show spot delimiters
|
||||
PREFERENCES_MAX;Maxi (Tile)
|
||||
PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
|
||||
PREFERENCES_MED;Medium (Tile/2)
|
||||
@@ -1131,8 +1133,8 @@ PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncomp
|
||||
PREFERENCES_SET;Set
|
||||
PREFERENCES_SHOWBASICEXIF;Show basic Exif info
|
||||
PREFERENCES_SHOWDATETIME;Show date and time
|
||||
PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
|
||||
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
|
||||
PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
|
||||
PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
|
||||
PREFERENCES_SIMPLAUT;Tool mode
|
||||
PREFERENCES_SINGLETAB;Single Editor Tab Mode
|
||||
|
||||
321
rtgui/edit.cc
321
rtgui/edit.cc
@@ -295,6 +295,327 @@ void Circle::drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short
|
||||
}
|
||||
}
|
||||
|
||||
void Arcellipse::drawOuterGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if ((flags & F_VISIBLE) && state != INSENSITIVE) {
|
||||
RGBColor color;
|
||||
|
||||
if (flags & F_AUTO_COLOR) {
|
||||
color = getOuterLineColor();
|
||||
} else {
|
||||
color = outerLineColor;
|
||||
}
|
||||
|
||||
cr->set_source_rgb (color.getR(), color.getG(), color.getB());
|
||||
cr->set_line_width ( getOuterLineWidth() );
|
||||
|
||||
rtengine::Coord center_ = center;
|
||||
double radius_ = radiusInImageSpace ? coordSystem.scaleValueToCanvas (double (radius)) : double (radius);
|
||||
double radius2_ = radiusInImageSpace ? coordSystem.scaleValueToCanvas (double (radius2)) : double (radius2);
|
||||
double scalx_ = scalx; //radius2_ / radius_;
|
||||
|
||||
double scaly_ = scaly;
|
||||
double begang_ = begang;
|
||||
double endang_ = endang;
|
||||
double translax_ = translax;
|
||||
double translay_ = translay;
|
||||
|
||||
if (datum == IMAGE) {
|
||||
coordSystem.imageCoordToScreen (center.x, center.y, center_.x, center_.y);
|
||||
} else if (datum == CLICKED_POINT) {
|
||||
center_ += objectBuffer->getDataProvider()->posScreen;
|
||||
} else if (datum == CURSOR) {
|
||||
center_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
}
|
||||
|
||||
cr->save();
|
||||
cr->move_to (center_.x , center_.y);
|
||||
cr->translate (translax_, translay_);
|
||||
|
||||
cr->scale (scalx_, scaly_);
|
||||
cr->translate (- translax_ , - translay_);
|
||||
|
||||
cr->arc (center_.x + 0.5, center_.y + 0.5, radius_, begang_, endang_);
|
||||
|
||||
cr->restore();
|
||||
cr->stroke();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Arcellipse::drawInnerGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if (flags & F_VISIBLE) {
|
||||
if (state != INSENSITIVE) {
|
||||
RGBColor color;
|
||||
|
||||
if (flags & F_AUTO_COLOR) {
|
||||
color = getInnerLineColor();
|
||||
} else {
|
||||
color = innerLineColor;
|
||||
}
|
||||
|
||||
cr->set_source_rgb (color.getR(), color.getG(), color.getB());
|
||||
}
|
||||
|
||||
cr->set_line_width ( innerLineWidth );
|
||||
|
||||
rtengine::Coord center_ = center;
|
||||
double radius_ = radiusInImageSpace ? coordSystem.scaleValueToCanvas (double (radius)) : double (radius);
|
||||
double radius2_ = radiusInImageSpace ? coordSystem.scaleValueToCanvas (double (radius2)) : double (radius2);
|
||||
|
||||
double scalx_ = scalx; //radius2_ / radius_;
|
||||
|
||||
double scaly_ = scaly;
|
||||
double begang_ = begang;
|
||||
double endang_ = endang;
|
||||
double translax_ = translax;
|
||||
double translay_ = translay;
|
||||
|
||||
if (datum == IMAGE) {
|
||||
coordSystem.imageCoordToScreen (center.x, center.y, center_.x, center_.y);
|
||||
} else if (datum == CLICKED_POINT) {
|
||||
center_ += objectBuffer->getDataProvider()->posScreen;
|
||||
} else if (datum == CURSOR) {
|
||||
center_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
}
|
||||
|
||||
if (filled && state != INSENSITIVE) {
|
||||
cr->save();
|
||||
cr->move_to (center_.x , center_.y);
|
||||
|
||||
cr->translate (translax_, translay_);
|
||||
|
||||
cr->scale (scalx_, scaly_);
|
||||
cr->translate (- translax_ , - translay_);
|
||||
|
||||
cr->arc (center_.x + 0.5, center_.y + 0.5, radius_, begang_, endang_);
|
||||
|
||||
cr->restore();
|
||||
|
||||
if (innerLineWidth > 0.) {
|
||||
cr->fill_preserve();
|
||||
cr->stroke();
|
||||
} else {
|
||||
cr->fill();
|
||||
}
|
||||
} else if (innerLineWidth > 0.) {
|
||||
cr->save();
|
||||
cr->move_to (center_.x , center_.y);
|
||||
|
||||
cr->translate (translax_ , translay_);
|
||||
|
||||
cr->scale (scalx_, scaly_);
|
||||
cr->translate (- translax_ , - translay_);
|
||||
|
||||
cr->arc (center_.x + 0.5, center_.y + 0.5, radius_, begang_, endang_);
|
||||
|
||||
cr->restore();
|
||||
|
||||
if (state == INSENSITIVE) {
|
||||
std::valarray<double> ds (1);
|
||||
ds[0] = 4;
|
||||
cr->set_source_rgba (1.0, 1.0, 1.0, 0.618);
|
||||
cr->stroke_preserve();
|
||||
cr->set_source_rgba (0.0, 0.0, 0.0, 0.618);
|
||||
cr->set_dash (ds, 0);
|
||||
cr->stroke();
|
||||
ds.resize (0);
|
||||
cr->set_dash (ds, 0);
|
||||
} else {
|
||||
cr->stroke();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Arcellipse::drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if (flags & F_HOVERABLE) {
|
||||
cr->set_line_width ( getMouseOverLineWidth() );
|
||||
rtengine::Coord center_ = center;
|
||||
double radius_ = radiusInImageSpace ? coordSystem.scaleValueToCanvas (double (radius)) : double (radius);
|
||||
double radius2_ = radiusInImageSpace ? coordSystem.scaleValueToCanvas (double (radius2)) : double (radius2);
|
||||
|
||||
double scalx_ = scalx ; //radius2_ / radius_;
|
||||
double scaly_ = scaly;
|
||||
double begang_ = begang;
|
||||
double endang_ = endang;
|
||||
double translax_ = translax;
|
||||
double translay_ = translay;
|
||||
|
||||
if (datum == IMAGE) {
|
||||
coordSystem.imageCoordToCropCanvas (center.x, center.y, center_.x, center_.y);
|
||||
} else if (datum == CLICKED_POINT) {
|
||||
center_ += objectBuffer->getDataProvider()->posScreen;
|
||||
} else if (datum == CURSOR) {
|
||||
center_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
}
|
||||
|
||||
cr->save();
|
||||
cr->move_to (center_.x , center_.y);
|
||||
|
||||
cr->translate (translax_ , translay_);
|
||||
|
||||
cr->scale (scalx_, scaly_);
|
||||
cr->translate (- translax_ , - translay_);
|
||||
cr->arc (center_.x + 0.5, center_.y + 0.5, radius_, begang_, endang_);
|
||||
|
||||
cr->restore();
|
||||
|
||||
if (filled) {
|
||||
if (innerLineWidth > 0.) {
|
||||
cr->fill_preserve();
|
||||
cr->stroke();
|
||||
} else {
|
||||
cr->fill();
|
||||
}
|
||||
} else {
|
||||
cr->stroke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Beziers::drawOuterGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if ((flags & F_VISIBLE) && state != INSENSITIVE) {
|
||||
RGBColor color;
|
||||
|
||||
if (flags & F_AUTO_COLOR) {
|
||||
color = getOuterLineColor();
|
||||
} else {
|
||||
color = outerLineColor;
|
||||
}
|
||||
|
||||
cr->set_source_rgb (color.getR(), color.getG(), color.getB());
|
||||
cr->set_line_width ( getOuterLineWidth() );
|
||||
|
||||
rtengine::Coord begin_ = begin;
|
||||
rtengine::Coord inter_ = inter;
|
||||
rtengine::Coord end_ = end;
|
||||
|
||||
if (datum == IMAGE) {
|
||||
coordSystem.imageCoordToScreen (begin.x, begin.y, begin_.x, begin_.y);
|
||||
coordSystem.imageCoordToScreen (inter.x, inter.y, inter_.x, inter_.y);
|
||||
coordSystem.imageCoordToScreen (end.x, end.y, end_.x, end_.y);
|
||||
} else if (datum == CLICKED_POINT) {
|
||||
begin_ += objectBuffer->getDataProvider()->posScreen;
|
||||
inter_ += objectBuffer->getDataProvider()->posScreen;
|
||||
end_ += objectBuffer->getDataProvider()->posScreen;
|
||||
} else if (datum == CURSOR) {
|
||||
begin_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
inter_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
end_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
}
|
||||
|
||||
cr->save();
|
||||
cr->move_to (begin_.x + 0.5, begin_.y + 0.5);
|
||||
cr->curve_to (begin_.x + 0.5, begin_.y + 0.5, inter_.x + 0.5, inter_.y + 0.5, end_.x + 0.5, end_.y + 0.5);
|
||||
cr->restore();
|
||||
cr->stroke();
|
||||
}
|
||||
}
|
||||
|
||||
void Beziers::drawInnerGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if ((flags & F_VISIBLE) && innerLineWidth > 0.) {
|
||||
if (state != INSENSITIVE) {
|
||||
RGBColor color;
|
||||
|
||||
if (flags & F_AUTO_COLOR) {
|
||||
color = getInnerLineColor();
|
||||
} else {
|
||||
color = innerLineColor;
|
||||
}
|
||||
|
||||
cr->set_source_rgb (color.getR(), color.getG(), color.getB());
|
||||
}
|
||||
|
||||
cr->set_line_width (innerLineWidth);
|
||||
|
||||
rtengine::Coord begin_ = begin;
|
||||
rtengine::Coord inter_ = inter;
|
||||
rtengine::Coord end_ = end;
|
||||
|
||||
if (datum == IMAGE) {
|
||||
coordSystem.imageCoordToScreen (begin.x, begin.y, begin_.x, begin_.y);
|
||||
coordSystem.imageCoordToScreen (inter.x, inter.y, inter_.x, inter_.y);
|
||||
coordSystem.imageCoordToScreen (end.x, end.y, end_.x, end_.y);
|
||||
} else if (datum == CLICKED_POINT) {
|
||||
begin_ += objectBuffer->getDataProvider()->posScreen;
|
||||
inter_ += objectBuffer->getDataProvider()->posScreen;
|
||||
end_ += objectBuffer->getDataProvider()->posScreen;
|
||||
} else if (datum == CURSOR) {
|
||||
begin_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
inter_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
end_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
}
|
||||
|
||||
cr->save();
|
||||
|
||||
cr->move_to (begin_.x + 0.5, begin_.y + 0.5);
|
||||
cr->curve_to (begin_.x + 0.5, begin_.y + 0.5, inter_.x + 0.5, inter_.y + 0.5, end_.x + 0.5, end_.y + 0.5);
|
||||
cr->restore();
|
||||
|
||||
if (state == INSENSITIVE) {
|
||||
std::valarray<double> ds (1);
|
||||
ds[0] = 4;
|
||||
cr->set_source_rgba (1.0, 1.0, 1.0, 0.618);
|
||||
cr->stroke_preserve();
|
||||
cr->set_source_rgba (0.0, 0.0, 0.0, 0.618);
|
||||
cr->set_dash (ds, 0);
|
||||
cr->stroke();
|
||||
ds.resize (0);
|
||||
cr->set_dash (ds, 0);
|
||||
} else {
|
||||
cr->stroke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Beziers::drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if (flags & F_HOVERABLE) {
|
||||
cr->set_line_width ( getMouseOverLineWidth() );
|
||||
rtengine::Coord begin_ = begin;
|
||||
rtengine::Coord inter_ = inter;
|
||||
rtengine::Coord end_ = end;
|
||||
|
||||
if (datum == IMAGE) {
|
||||
coordSystem.imageCoordToCropCanvas (begin.x, begin.y, begin_.x, begin_.y);
|
||||
coordSystem.imageCoordToCropCanvas (inter.x, inter.y, inter_.x, inter_.y);
|
||||
coordSystem.imageCoordToCropCanvas (end.x, end.y, end_.x, end_.y);
|
||||
} else if (datum == CLICKED_POINT) {
|
||||
begin_ += objectBuffer->getDataProvider()->posScreen;
|
||||
inter_ += objectBuffer->getDataProvider()->posScreen;
|
||||
end_ += objectBuffer->getDataProvider()->posScreen;
|
||||
} else if (datum == CURSOR) {
|
||||
begin_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
inter_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
end_ += objectBuffer->getDataProvider()->posScreen + objectBuffer->getDataProvider()->deltaScreen;
|
||||
}
|
||||
|
||||
// setting the color to the objet's ID
|
||||
if (objectBuffer->getObjectMode() == OM_255) {
|
||||
cr->set_source_rgba (0., 0., 0., ((id + 1) & 0xFF) / 255.);
|
||||
} else {
|
||||
cr->set_source_rgba (0., 0., 0., (id + 1) / 65535.);
|
||||
}
|
||||
|
||||
cr->save();
|
||||
|
||||
cr->move_to (begin_.x + 0.5, begin_.y + 0.5);
|
||||
cr->curve_to (begin_.x + 0.5, begin_.y + 0.5, inter_.x + 0.5, inter_.y + 0.5, end_.x + 0.5, end_.y + 0.5);
|
||||
cr->restore();
|
||||
|
||||
cr->stroke();
|
||||
}
|
||||
}
|
||||
|
||||
void Line::drawOuterGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
|
||||
{
|
||||
if ((flags & F_VISIBLE) && state != INSENSITIVE) {
|
||||
|
||||
294
rtgui/edit.h
294
rtgui/edit.h
@@ -171,8 +171,8 @@ protected:
|
||||
// instead of pointing to the EditSubscriber directly
|
||||
EditDataProvider* dataProvider;
|
||||
|
||||
void createBuffer(int width, int height);
|
||||
void resize(int newWidth, int newHeight);
|
||||
void createBuffer (int width, int height);
|
||||
void resize (int newWidth, int newHeight);
|
||||
void flush();
|
||||
EditSubscriber *getEditSubscriber ();
|
||||
|
||||
@@ -189,7 +189,7 @@ public:
|
||||
// return true if the buffer has been allocated
|
||||
bool bufferCreated();
|
||||
|
||||
int getObjectID(const rtengine::Coord& location);
|
||||
int getObjectID (const rtengine::Coord& location);
|
||||
};
|
||||
|
||||
|
||||
@@ -353,6 +353,50 @@ public:
|
||||
void drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
};
|
||||
|
||||
class Arcellipse : public Geometry
|
||||
{
|
||||
public:
|
||||
rtengine::Coord center;
|
||||
// rtengine::Coord scalx;
|
||||
// rtengine::Coord scaly;
|
||||
|
||||
double radius;
|
||||
double radius2;
|
||||
double translax;
|
||||
double translay;
|
||||
bool filled;
|
||||
bool radiusInImageSpace; /// If true, the radius depend on the image scale; if false, it is a fixed 'screen' size
|
||||
double scalx;
|
||||
double scaly;
|
||||
double begang;
|
||||
double endang;
|
||||
|
||||
Arcellipse ();
|
||||
Arcellipse (rtengine::Coord& center, double radius, double radius2, double translax, double translay, double scalx, double scaly, double begang, double endang, bool filled = false, bool radiusInImageSpace = false);
|
||||
Arcellipse (int centerX, int centerY, double radius, double radius2, double translax, double translay, double scalx, double scaly, double begang, double endang, bool filled = false, bool radiusInImageSpace = false);
|
||||
|
||||
void drawOuterGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawInnerGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
};
|
||||
|
||||
class Beziers : public Geometry
|
||||
{
|
||||
public:
|
||||
rtengine::Coord begin;
|
||||
rtengine::Coord inter;
|
||||
rtengine::Coord end;
|
||||
|
||||
Beziers ();
|
||||
Beziers (rtengine::Coord& begin, rtengine::Coord& inter, rtengine::Coord& end);
|
||||
Beziers (float beginX, float beginY, float interX, float interY, float endX, float endY);
|
||||
|
||||
void drawOuterGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawInnerGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
};
|
||||
|
||||
|
||||
class Line : public Geometry
|
||||
{
|
||||
public:
|
||||
@@ -390,10 +434,10 @@ public:
|
||||
|
||||
Rectangle ();
|
||||
|
||||
void setXYWH(int left, int top, int width, int height);
|
||||
void setXYXY(int left, int top, int right, int bottom);
|
||||
void setXYWH(rtengine::Coord topLeft, rtengine::Coord widthHeight);
|
||||
void setXYXY(rtengine::Coord topLeft, rtengine::Coord bottomRight);
|
||||
void setXYWH (int left, int top, int width, int height);
|
||||
void setXYXY (int left, int top, int right, int bottom);
|
||||
void setXYWH (rtengine::Coord topLeft, rtengine::Coord widthHeight);
|
||||
void setXYXY (rtengine::Coord topLeft, rtengine::Coord bottomRight);
|
||||
void drawOuterGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawInnerGeometry (Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
@@ -409,13 +453,13 @@ private:
|
||||
Cairo::RefPtr<Cairo::ImageSurface> draggedImg;
|
||||
Cairo::RefPtr<Cairo::ImageSurface> insensitiveImg;
|
||||
|
||||
static void setPaths(Options &opt);
|
||||
static void setPaths (Options &opt);
|
||||
static void updateImages();
|
||||
void changeImage(Glib::ustring &newImage);
|
||||
static Glib::ustring findIconAbsolutePath(const Glib::ustring &iconFName);
|
||||
void changeImage (Glib::ustring &newImage);
|
||||
static Glib::ustring findIconAbsolutePath (const Glib::ustring &iconFName);
|
||||
void drawImage (const Cairo::RefPtr<Cairo::ImageSurface> &img, Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drawMOImage (const Cairo::RefPtr<Cairo::ImageSurface> &img, Cairo::RefPtr<Cairo::Context> &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
|
||||
void drivenPointToRectangle(const rtengine::Coord &pos, rtengine::Coord &topLeft, rtengine::Coord &bottomRight, int W, int H);
|
||||
void drivenPointToRectangle (const rtengine::Coord &pos, rtengine::Coord &topLeft, rtengine::Coord &bottomRight, int W, int H);
|
||||
|
||||
public:
|
||||
DrivenPoint drivenPoint;
|
||||
@@ -468,9 +512,9 @@ public:
|
||||
explicit EditSubscriber (EditType editType);
|
||||
virtual ~EditSubscriber () {}
|
||||
|
||||
void setEditProvider(EditDataProvider *provider);
|
||||
void setEditProvider (EditDataProvider *provider);
|
||||
EditDataProvider* getEditProvider ();
|
||||
void setEditID(EditUniqueID ID, BufferType buffType);
|
||||
void setEditID (EditUniqueID ID, BufferType buffType);
|
||||
bool isCurrentSubscriber();
|
||||
virtual void subscribe();
|
||||
virtual void unsubscribe();
|
||||
@@ -587,94 +631,112 @@ public:
|
||||
EditDataProvider();
|
||||
virtual ~EditDataProvider() {}
|
||||
|
||||
virtual void subscribe(EditSubscriber *subscriber);
|
||||
virtual void subscribe (EditSubscriber *subscriber);
|
||||
virtual void unsubscribe(); /// Occurs when the subscriber has been switched off first
|
||||
virtual void switchOffEditMode (); /// Occurs when the user want to stop the editing mode
|
||||
virtual CursorShape getCursor(int objectID);
|
||||
virtual CursorShape getCursor (int objectID);
|
||||
int getPipetteRectSize ();
|
||||
EditSubscriber* getCurrSubscriber();
|
||||
virtual void getImageSize (int &w, int&h) = 0;
|
||||
};
|
||||
|
||||
inline EditDataProvider* ObjectMOBuffer::getDataProvider () {
|
||||
inline EditDataProvider* ObjectMOBuffer::getDataProvider ()
|
||||
{
|
||||
return dataProvider;
|
||||
}
|
||||
|
||||
inline ObjectMode ObjectMOBuffer::getObjectMode () {
|
||||
inline ObjectMode ObjectMOBuffer::getObjectMode ()
|
||||
{
|
||||
return objectMode;
|
||||
}
|
||||
|
||||
inline Cairo::RefPtr<Cairo::ImageSurface>& ObjectMOBuffer::getObjectMap () {
|
||||
inline Cairo::RefPtr<Cairo::ImageSurface>& ObjectMOBuffer::getObjectMap ()
|
||||
{
|
||||
return objectMap;
|
||||
}
|
||||
|
||||
inline void RGBColor::setColor (double r, double g, double b) {
|
||||
inline void RGBColor::setColor (double r, double g, double b)
|
||||
{
|
||||
this->r = r;
|
||||
this->g = g;
|
||||
this->b = b;
|
||||
}
|
||||
|
||||
inline void RGBColor::setColor (char r, char g, char b) {
|
||||
inline void RGBColor::setColor (char r, char g, char b)
|
||||
{
|
||||
this->r = double (r) / 255.;
|
||||
this->g = double (g) / 255.;
|
||||
this->b = double (b) / 255.;
|
||||
}
|
||||
|
||||
inline double RGBColor::getR () {
|
||||
inline double RGBColor::getR ()
|
||||
{
|
||||
return r;
|
||||
}
|
||||
|
||||
inline double RGBColor::getG () {
|
||||
inline double RGBColor::getG ()
|
||||
{
|
||||
return g;
|
||||
}
|
||||
|
||||
inline double RGBColor::getB () {
|
||||
inline double RGBColor::getB ()
|
||||
{
|
||||
return b;
|
||||
}
|
||||
|
||||
inline void RGBAColor::setColor (double r, double g, double b, double a) {
|
||||
inline void RGBAColor::setColor (double r, double g, double b, double a)
|
||||
{
|
||||
RGBColor::setColor (r, g, b);
|
||||
this->a = a;
|
||||
}
|
||||
|
||||
inline void RGBAColor::setColor (char r, char g, char b, char a) {
|
||||
inline void RGBAColor::setColor (char r, char g, char b, char a)
|
||||
{
|
||||
RGBColor::setColor (r, g, b);
|
||||
this->a = double (a) / 255.;
|
||||
}
|
||||
|
||||
inline double RGBAColor::getA () {
|
||||
inline double RGBAColor::getA ()
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
inline void Geometry::setInnerLineColor (double r, double g, double b) {
|
||||
inline void Geometry::setInnerLineColor (double r, double g, double b)
|
||||
{
|
||||
innerLineColor.setColor (r, g, b);
|
||||
flags &= ~F_AUTO_COLOR;
|
||||
}
|
||||
|
||||
inline void Geometry::setInnerLineColor (char r, char g, char b) {
|
||||
inline void Geometry::setInnerLineColor (char r, char g, char b)
|
||||
{
|
||||
innerLineColor.setColor (r, g, b);
|
||||
flags &= ~F_AUTO_COLOR;
|
||||
}
|
||||
|
||||
inline void Geometry::setOuterLineColor (double r, double g, double b) {
|
||||
inline void Geometry::setOuterLineColor (double r, double g, double b)
|
||||
{
|
||||
outerLineColor.setColor (r, g, b);
|
||||
flags &= ~F_AUTO_COLOR;
|
||||
}
|
||||
|
||||
inline double Geometry::getOuterLineWidth () {
|
||||
inline double Geometry::getOuterLineWidth ()
|
||||
{
|
||||
return double (innerLineWidth) + 2.;
|
||||
}
|
||||
|
||||
inline void Geometry::setOuterLineColor (char r, char g, char b) {
|
||||
inline void Geometry::setOuterLineColor (char r, char g, char b)
|
||||
{
|
||||
outerLineColor.setColor (r, g, b);
|
||||
flags &= ~F_AUTO_COLOR;
|
||||
}
|
||||
|
||||
inline double Geometry::getMouseOverLineWidth () {
|
||||
inline double Geometry::getMouseOverLineWidth ()
|
||||
{
|
||||
return getOuterLineWidth () + 2.;
|
||||
}
|
||||
|
||||
inline void Geometry::setAutoColor (bool aColor) {
|
||||
inline void Geometry::setAutoColor (bool aColor)
|
||||
{
|
||||
if (aColor) {
|
||||
flags |= F_AUTO_COLOR;
|
||||
} else {
|
||||
@@ -682,11 +744,13 @@ inline void Geometry::setAutoColor (bool aColor) {
|
||||
}
|
||||
}
|
||||
|
||||
inline bool Geometry::isVisible () {
|
||||
inline bool Geometry::isVisible ()
|
||||
{
|
||||
return flags & F_VISIBLE;
|
||||
}
|
||||
|
||||
inline void Geometry::setVisible (bool visible) {
|
||||
inline void Geometry::setVisible (bool visible)
|
||||
{
|
||||
if (visible) {
|
||||
flags |= F_VISIBLE;
|
||||
} else {
|
||||
@@ -694,11 +758,13 @@ inline void Geometry::setVisible (bool visible) {
|
||||
}
|
||||
}
|
||||
|
||||
inline bool Geometry::isHoverable () {
|
||||
inline bool Geometry::isHoverable ()
|
||||
{
|
||||
return flags & F_HOVERABLE;
|
||||
}
|
||||
|
||||
inline void Geometry::setHoverable (bool hoverable) {
|
||||
inline void Geometry::setHoverable (bool hoverable)
|
||||
{
|
||||
if (hoverable) {
|
||||
flags |= F_HOVERABLE;
|
||||
} else {
|
||||
@@ -706,152 +772,220 @@ inline void Geometry::setHoverable (bool hoverable) {
|
||||
}
|
||||
}
|
||||
|
||||
inline void Geometry::setActive (bool active) {
|
||||
inline void Geometry::setActive (bool active)
|
||||
{
|
||||
if (active) {
|
||||
flags |= (F_VISIBLE | F_HOVERABLE);
|
||||
} else {
|
||||
flags &= ~(F_VISIBLE | F_HOVERABLE);
|
||||
flags &= ~ (F_VISIBLE | F_HOVERABLE);
|
||||
}
|
||||
}
|
||||
|
||||
inline EditDataProvider* EditSubscriber::getEditProvider () {
|
||||
inline EditDataProvider* EditSubscriber::getEditProvider ()
|
||||
{
|
||||
return provider;
|
||||
}
|
||||
|
||||
inline CursorShape EditSubscriber::getCursor (const int objectID) {
|
||||
inline CursorShape EditSubscriber::getCursor (const int objectID)
|
||||
{
|
||||
return CSOpenHand;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::mouseOver (const int modifierKey) {
|
||||
inline bool EditSubscriber::mouseOver (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::button1Pressed (const int modifierKey) {
|
||||
inline bool EditSubscriber::button1Pressed (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::button1Released () {
|
||||
inline bool EditSubscriber::button1Released ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::button2Pressed (const int modifierKey) {
|
||||
inline bool EditSubscriber::button2Pressed (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::button2Released () {
|
||||
inline bool EditSubscriber::button2Released ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::button3Pressed (const int modifierKey) {
|
||||
inline bool EditSubscriber::button3Pressed (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::button3Released () {
|
||||
inline bool EditSubscriber::button3Released ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::drag1 (const int modifierKey) {
|
||||
inline bool EditSubscriber::drag1 (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::drag2 (const int modifierKey) {
|
||||
inline bool EditSubscriber::drag2 (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::drag3 (const int modifierKey) {
|
||||
inline bool EditSubscriber::drag3 (const int modifierKey)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::pick1 (const bool picked) {
|
||||
inline bool EditSubscriber::pick1 (const bool picked)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::pick2 (const bool picked) {
|
||||
inline bool EditSubscriber::pick2 (const bool picked)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool EditSubscriber::pick3 (const bool picked) {
|
||||
inline bool EditSubscriber::pick3 (const bool picked)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
inline const std::vector<Geometry*>& EditSubscriber::getVisibleGeometry () {
|
||||
inline const std::vector<Geometry*>& EditSubscriber::getVisibleGeometry ()
|
||||
{
|
||||
return visibleGeometry;
|
||||
}
|
||||
|
||||
inline const std::vector<Geometry*>& EditSubscriber::getMouseOverGeometry () {
|
||||
inline const std::vector<Geometry*>& EditSubscriber::getMouseOverGeometry ()
|
||||
{
|
||||
return mouseOverGeometry;
|
||||
}
|
||||
|
||||
inline int EditDataProvider::getPipetteRectSize () {
|
||||
inline int EditDataProvider::getPipetteRectSize ()
|
||||
{
|
||||
return 8; // TODO: make a GUI
|
||||
}
|
||||
|
||||
inline Geometry::Geometry () :
|
||||
innerLineColor (char (255), char (255), char (255)), outerLineColor (
|
||||
char (0), char (0), char (0)), flags (
|
||||
F_VISIBLE | F_HOVERABLE | F_AUTO_COLOR), innerLineWidth (1.5f), datum (
|
||||
IMAGE), state (NORMAL) {
|
||||
innerLineColor (char (255), char (255), char (255)), outerLineColor (
|
||||
char (0), char (0), char (0)), flags (
|
||||
F_VISIBLE | F_HOVERABLE | F_AUTO_COLOR), innerLineWidth (1.5f), datum (
|
||||
IMAGE), state (NORMAL)
|
||||
{
|
||||
}
|
||||
|
||||
inline Circle::Circle () :
|
||||
center (100, 100), radius (10), filled (false), radiusInImageSpace (
|
||||
false) {
|
||||
center (100, 100), radius (10), filled (false), radiusInImageSpace (
|
||||
false)
|
||||
{
|
||||
}
|
||||
|
||||
inline Arcellipse::Arcellipse () :
|
||||
center (100, 100), radius (10), radius2 (10), translax (0), translay (0), filled (false), radiusInImageSpace (
|
||||
false)
|
||||
{
|
||||
}
|
||||
|
||||
inline Rectangle::Rectangle () :
|
||||
topLeft (0, 0), bottomRight (10, 10), filled (false) {
|
||||
topLeft (0, 0), bottomRight (10, 10), filled (false)
|
||||
{
|
||||
}
|
||||
|
||||
inline Polyline::Polyline () :
|
||||
filled (false) {
|
||||
filled (false)
|
||||
{
|
||||
}
|
||||
|
||||
inline Line::Line () :
|
||||
begin (10, 10), end (100, 100) {
|
||||
begin (10, 10), end (100, 100)
|
||||
{
|
||||
}
|
||||
inline Beziers::Beziers () :
|
||||
begin (10, 10), inter (50, 50), end (100, 100)
|
||||
{
|
||||
}
|
||||
|
||||
inline RGBAColor::RGBAColor () :
|
||||
RGBColor (0., 0., 0.), a (0.) {
|
||||
RGBColor (0., 0., 0.), a (0.)
|
||||
{
|
||||
}
|
||||
|
||||
inline RGBColor::RGBColor () :
|
||||
r (0.), g (0.), b (0.) {
|
||||
r (0.), g (0.), b (0.)
|
||||
{
|
||||
}
|
||||
|
||||
inline RGBColor::RGBColor (double r, double g, double b) :
|
||||
r (r), g (g), b (b) {
|
||||
r (r), g (g), b (b)
|
||||
{
|
||||
}
|
||||
|
||||
inline RGBColor::RGBColor (char r, char g, char b) :
|
||||
r (double (r) / 255.), g (double (g) / 255.), b (double (b) / 255.) {
|
||||
r (double (r) / 255.), g (double (g) / 255.), b (double (b) / 255.)
|
||||
{
|
||||
}
|
||||
|
||||
inline RGBAColor::RGBAColor (double r, double g, double b, double a) :
|
||||
RGBColor (r, g, b), a (a) {
|
||||
RGBColor (r, g, b), a (a)
|
||||
{
|
||||
}
|
||||
|
||||
inline RGBAColor::RGBAColor (char r, char g, char b, char a) :
|
||||
RGBColor (r, g, b), a (double (a) / 255.) {
|
||||
RGBColor (r, g, b), a (double (a) / 255.)
|
||||
{
|
||||
}
|
||||
|
||||
inline Circle::Circle (rtengine::Coord& center, int radius, bool filled,
|
||||
bool radiusInImageSpace) :
|
||||
center (center), radius (radius), filled (filled), radiusInImageSpace (
|
||||
radiusInImageSpace) {
|
||||
bool radiusInImageSpace) :
|
||||
center (center), radius (radius), filled (filled), radiusInImageSpace (
|
||||
radiusInImageSpace)
|
||||
{
|
||||
}
|
||||
|
||||
inline Circle::Circle (int centerX, int centerY, int radius, bool filled,
|
||||
bool radiusInImageSpace) :
|
||||
center (centerX, centerY), radius (radius), filled (filled), radiusInImageSpace (
|
||||
radiusInImageSpace) {
|
||||
bool radiusInImageSpace) :
|
||||
center (centerX, centerY), radius (radius), filled (filled), radiusInImageSpace (
|
||||
radiusInImageSpace)
|
||||
{
|
||||
}
|
||||
|
||||
inline Arcellipse::Arcellipse (rtengine::Coord& center, double radius, double radius2, double translax, double translay, double scalx, double scaly, double begang, double endang, bool filled,
|
||||
bool radiusInImageSpace) :
|
||||
center (center), radius (radius), radius2 (radius2), translax (translax), translay (translay), scalx (scalx), scaly (scaly), begang (begang), endang (endang), filled (filled), radiusInImageSpace (
|
||||
radiusInImageSpace)
|
||||
{
|
||||
}
|
||||
|
||||
inline Arcellipse::Arcellipse (int centerX, int centerY, double radius, double radius2, double translax, double translay, double scalx, double scaly, double begang, double endang, bool filled,
|
||||
bool radiusInImageSpace) :
|
||||
center (centerX, centerY), radius (radius), radius2 (radius2), translax (translax), translay (translay), scalx (scalx), scaly (scaly), begang (begang), endang (endang), filled (filled), radiusInImageSpace (
|
||||
radiusInImageSpace)
|
||||
{
|
||||
}
|
||||
|
||||
inline Beziers::Beziers (rtengine::Coord& begin, rtengine::Coord& inter, rtengine::Coord& end) :
|
||||
begin (begin), inter (inter), end (end)
|
||||
{
|
||||
}
|
||||
|
||||
inline Beziers::Beziers (float beginX, float beginY, float interX, float interY, float endX, float endY) :
|
||||
begin (beginX, beginY), inter (interX, interY), end (endX, endY)
|
||||
{
|
||||
}
|
||||
|
||||
inline Line::Line (rtengine::Coord& begin, rtengine::Coord& end) :
|
||||
begin (begin), end (end) {
|
||||
begin (begin), end (end)
|
||||
{
|
||||
}
|
||||
|
||||
inline Line::Line (int beginX, int beginY, int endX, int endY) :
|
||||
begin (beginX, beginY), end (endX, endY) {
|
||||
begin (beginX, beginY), end (endX, endY)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -651,6 +651,12 @@ Locallab::Locallab ():
|
||||
// Instantiating the Editing geometry; positions will be initialized later
|
||||
Line *hLine, *vLine, *locYLine[2], *locXLine[2];
|
||||
Circle *centerCircle;
|
||||
// Arcellipse *oneellipse;
|
||||
|
||||
Beziers *onebeziers[3];
|
||||
Beziers *twobeziers[3];
|
||||
Beziers *thrbeziers[3];
|
||||
Beziers *foubeziers[3];
|
||||
|
||||
// Visible geometry
|
||||
locXLine[0] = new Line();
|
||||
@@ -671,12 +677,81 @@ Locallab::Locallab ():
|
||||
centerCircle->radius = circrad->getValue(); //19;
|
||||
centerCircle->filled = false;
|
||||
|
||||
if (options.showdelimspot) {
|
||||
onebeziers[0] = new Beziers();
|
||||
onebeziers[0]->datum = Geometry::IMAGE;
|
||||
onebeziers[0]->innerLineWidth = 1;
|
||||
|
||||
onebeziers[1] = new Beziers();
|
||||
onebeziers[1]->datum = Geometry::IMAGE;
|
||||
onebeziers[1]->innerLineWidth = 1;
|
||||
|
||||
onebeziers[2] = new Beziers();
|
||||
onebeziers[2]->datum = Geometry::IMAGE;
|
||||
onebeziers[2]->innerLineWidth = 1;
|
||||
|
||||
twobeziers[0] = new Beziers();
|
||||
twobeziers[0]->datum = Geometry::IMAGE;
|
||||
twobeziers[0]->innerLineWidth = 1;
|
||||
|
||||
twobeziers[1] = new Beziers();
|
||||
twobeziers[1]->datum = Geometry::IMAGE;
|
||||
twobeziers[1]->innerLineWidth = 1;
|
||||
|
||||
twobeziers[2] = new Beziers();
|
||||
twobeziers[2]->datum = Geometry::IMAGE;
|
||||
twobeziers[2]->innerLineWidth = 1;
|
||||
|
||||
thrbeziers[0] = new Beziers();
|
||||
thrbeziers[0]->datum = Geometry::IMAGE;
|
||||
thrbeziers[0]->innerLineWidth = 1;
|
||||
|
||||
thrbeziers[1] = new Beziers();
|
||||
thrbeziers[1]->datum = Geometry::IMAGE;
|
||||
thrbeziers[1]->innerLineWidth = 1;
|
||||
|
||||
thrbeziers[2] = new Beziers();
|
||||
thrbeziers[2]->datum = Geometry::IMAGE;
|
||||
thrbeziers[2]->innerLineWidth = 1;
|
||||
|
||||
foubeziers[0] = new Beziers();
|
||||
foubeziers[0]->datum = Geometry::IMAGE;
|
||||
foubeziers[0]->innerLineWidth = 1;
|
||||
|
||||
foubeziers[1] = new Beziers();
|
||||
foubeziers[1]->datum = Geometry::IMAGE;
|
||||
foubeziers[1]->innerLineWidth = 1;
|
||||
|
||||
foubeziers[2] = new Beziers();
|
||||
foubeziers[2]->datum = Geometry::IMAGE;
|
||||
foubeziers[2]->innerLineWidth = 1;
|
||||
}
|
||||
|
||||
// oneellipse->radiusInImageSpace = true;
|
||||
// oneellipse->radius = locX->getValue();
|
||||
// oneellipse->filled = false;
|
||||
|
||||
EditSubscriber::visibleGeometry.push_back ( locXLine[0] );
|
||||
EditSubscriber::visibleGeometry.push_back ( locXLine[1] );
|
||||
EditSubscriber::visibleGeometry.push_back ( locYLine[0] );
|
||||
EditSubscriber::visibleGeometry.push_back ( locYLine[1] );
|
||||
EditSubscriber::visibleGeometry.push_back ( centerCircle );
|
||||
|
||||
if (options.showdelimspot) {
|
||||
EditSubscriber::visibleGeometry.push_back ( onebeziers[0] );
|
||||
EditSubscriber::visibleGeometry.push_back ( onebeziers[1] );
|
||||
EditSubscriber::visibleGeometry.push_back ( onebeziers[2] );
|
||||
EditSubscriber::visibleGeometry.push_back ( twobeziers[0] );
|
||||
EditSubscriber::visibleGeometry.push_back ( twobeziers[1] );
|
||||
EditSubscriber::visibleGeometry.push_back ( twobeziers[2] );
|
||||
EditSubscriber::visibleGeometry.push_back ( thrbeziers[0] );
|
||||
EditSubscriber::visibleGeometry.push_back ( thrbeziers[1] );
|
||||
EditSubscriber::visibleGeometry.push_back ( thrbeziers[2] );
|
||||
EditSubscriber::visibleGeometry.push_back ( foubeziers[0] );
|
||||
EditSubscriber::visibleGeometry.push_back ( foubeziers[1] );
|
||||
EditSubscriber::visibleGeometry.push_back ( foubeziers[2] );
|
||||
}
|
||||
|
||||
// MouseOver geometry
|
||||
locXLine[0] = new Line();
|
||||
locXLine[0]->innerLineWidth = 2;
|
||||
@@ -696,6 +771,60 @@ Locallab::Locallab ():
|
||||
centerCircle->radius = circrad->getValue();//19;
|
||||
centerCircle->filled = true;
|
||||
|
||||
if (options.showdelimspot) {
|
||||
onebeziers[0] = new Beziers();
|
||||
onebeziers[0]->datum = Geometry::IMAGE;
|
||||
onebeziers[0]->innerLineWidth = 1;
|
||||
|
||||
onebeziers[1] = new Beziers();
|
||||
onebeziers[1]->datum = Geometry::IMAGE;
|
||||
onebeziers[1]->innerLineWidth = 1;
|
||||
|
||||
onebeziers[2] = new Beziers();
|
||||
onebeziers[2]->datum = Geometry::IMAGE;
|
||||
onebeziers[2]->innerLineWidth = 1;
|
||||
|
||||
twobeziers[0] = new Beziers();
|
||||
twobeziers[0]->datum = Geometry::IMAGE;
|
||||
twobeziers[0]->innerLineWidth = 1;
|
||||
|
||||
twobeziers[1] = new Beziers();
|
||||
twobeziers[1]->datum = Geometry::IMAGE;
|
||||
twobeziers[1]->innerLineWidth = 1;
|
||||
|
||||
twobeziers[2] = new Beziers();
|
||||
twobeziers[2]->datum = Geometry::IMAGE;
|
||||
twobeziers[2]->innerLineWidth = 1;
|
||||
|
||||
thrbeziers[0] = new Beziers();
|
||||
thrbeziers[0]->datum = Geometry::IMAGE;
|
||||
thrbeziers[0]->innerLineWidth = 1;
|
||||
|
||||
thrbeziers[1] = new Beziers();
|
||||
thrbeziers[1]->datum = Geometry::IMAGE;
|
||||
thrbeziers[1]->innerLineWidth = 1;
|
||||
|
||||
thrbeziers[2] = new Beziers();
|
||||
thrbeziers[2]->datum = Geometry::IMAGE;
|
||||
thrbeziers[2]->innerLineWidth = 1;
|
||||
|
||||
foubeziers[0] = new Beziers();
|
||||
foubeziers[0]->datum = Geometry::IMAGE;
|
||||
foubeziers[0]->innerLineWidth = 1;
|
||||
|
||||
foubeziers[1] = new Beziers();
|
||||
foubeziers[1]->datum = Geometry::IMAGE;
|
||||
foubeziers[1]->innerLineWidth = 1;
|
||||
|
||||
foubeziers[2] = new Beziers();
|
||||
foubeziers[2]->datum = Geometry::IMAGE;
|
||||
foubeziers[2]->innerLineWidth = 1;
|
||||
}
|
||||
|
||||
// oneellipse->radiusInImageSpace = true;
|
||||
// oneellipse->radius = 10;//locX->getValue();
|
||||
// oneellipse->filled = false;
|
||||
|
||||
EditSubscriber::mouseOverGeometry.push_back ( locXLine[0] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( locXLine[1] );
|
||||
|
||||
@@ -704,6 +833,21 @@ Locallab::Locallab ():
|
||||
|
||||
EditSubscriber::mouseOverGeometry.push_back ( centerCircle );
|
||||
|
||||
if (options.showdelimspot) {
|
||||
EditSubscriber::mouseOverGeometry.push_back ( onebeziers[0] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( onebeziers[1] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( onebeziers[2] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( twobeziers[0] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( twobeziers[1] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( twobeziers[2] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( thrbeziers[0] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( thrbeziers[1] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( thrbeziers[2] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( foubeziers[0] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( foubeziers[1] );
|
||||
EditSubscriber::mouseOverGeometry.push_back ( foubeziers[2] );
|
||||
}
|
||||
|
||||
show_all();
|
||||
}
|
||||
|
||||
@@ -1733,7 +1877,7 @@ void Locallab::updateGeometry (const int centerX_, const int centerY_, const int
|
||||
double decayX = (locX_) * (double (imW)) / 2000.;
|
||||
double decayXL = (locXL_) * (double (imW)) / 2000.;
|
||||
rtengine::Coord origin (imW / 2 + centerX_ * imW / 2000.f, imH / 2 + centerY_ * imH / 2000.f);
|
||||
// printf("deX=%f dexL=%f deY=%f deyT=%f\n", decayX, decayXL, decayY, decayYT);
|
||||
// printf("deX=%f dexL=%f deY=%f deyT=%f locX=%i locY=%i\n", decayX, decayXL, decayY, decayYT, locX_, locY_);
|
||||
|
||||
if (Smethod->get_active_row_number() == 1 || Smethod->get_active_row_number() == 3) {
|
||||
decayYT = decayY;
|
||||
@@ -1742,6 +1886,8 @@ void Locallab::updateGeometry (const int centerX_, const int centerY_, const int
|
||||
|
||||
Line *currLine;
|
||||
Circle *currCircle;
|
||||
// Arcellipse *currArcellipse;
|
||||
Beziers *currBeziers;
|
||||
double decay;
|
||||
const auto updateLine = [&] (Geometry * geometry, const float radius, const float begin, const float end) {
|
||||
const auto line = static_cast<Line*> (geometry);
|
||||
@@ -1763,31 +1909,134 @@ void Locallab::updateGeometry (const int centerX_, const int centerY_, const int
|
||||
const auto circle = static_cast<Circle*> (geometry);
|
||||
circle->center = origin;
|
||||
circle->radius = circrad_;
|
||||
|
||||
};
|
||||
|
||||
const auto updateBeziers = [&] (Geometry * geometry, const double dX_, const double dI_, const double dY_, const float begi, const float inte, const float en) {
|
||||
const auto beziers = static_cast<Beziers*> (geometry);
|
||||
beziers->begin = PolarCoord (dX_, begi);
|
||||
beziers->begin += origin;//0
|
||||
beziers->inter = PolarCoord (dI_, inte);
|
||||
beziers->inter += origin;//0
|
||||
beziers->end = PolarCoord (dY_, en);
|
||||
beziers->end += origin;
|
||||
// printf("dX=%f dI=%f dY=%f begx=%i begy=%i intx=%i inty=%i endx=%i endy=%i\n", dX_, dI_, dY_, beziers->begin.x, beziers->begin.y, beziers->inter.x, beziers->inter.y, beziers->end.x, beziers->end.y);
|
||||
};
|
||||
|
||||
/*
|
||||
const auto updateArcellipse = [&] (Geometry * geometry, const double dX_, const double dY_, const float kbegang, const float kendang) {
|
||||
const auto arcellipse = static_cast<Arcellipse*> (geometry);
|
||||
arcellipse->center = origin;
|
||||
arcellipse->radius = dY_;
|
||||
arcellipse->radius2 = dX_;
|
||||
arcellipse->translax = (double) imW /2.; //dX_ - dY_;
|
||||
arcellipse->translay = (double) imH /2.;
|
||||
arcellipse->scalx = dX_ / dY_; // double(locX_) / double (locY_); //arcellipse->radius2 / arcellipse->radius ; // dX_ / dY_;
|
||||
arcellipse->scaly = 1.; //dX_ / dY_; //locY_/locX_;
|
||||
arcellipse->begang = kbegang * M_PI;
|
||||
arcellipse->endang = kendang * M_PI;
|
||||
|
||||
|
||||
};
|
||||
*/
|
||||
double dimline = 100.;
|
||||
|
||||
if (options.showdelimspot) {
|
||||
dimline = 500.;
|
||||
}
|
||||
|
||||
|
||||
decay = decayX;
|
||||
updateLineWithDecay (visibleGeometry.at (0), 100., 90., 0.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (0), 100., 90., 0.);
|
||||
updateLineWithDecay (visibleGeometry.at (0), dimline, 90., 0.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (0), dimline, 90., 0.);
|
||||
|
||||
decay = decayXL;
|
||||
|
||||
updateLineWithDecay (visibleGeometry.at (1), 100., 90., 180.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (1), 100., 90., 180.);
|
||||
updateLineWithDecay (visibleGeometry.at (1), dimline, 90., 180.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (1), dimline, 90., 180.);
|
||||
|
||||
decay = decayYT;
|
||||
updateLineWithDecay (visibleGeometry.at (2), 100., 180., 270.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (2), 100., 180., 270.);
|
||||
updateLineWithDecay (visibleGeometry.at (2), dimline, 180., 270.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (2), dimline, 180., 270.);
|
||||
|
||||
decay = decayY;
|
||||
|
||||
updateLineWithDecay (visibleGeometry.at (3), 100., 180, 90.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (3), 100., 180., 90.);
|
||||
updateLineWithDecay (visibleGeometry.at (3), dimline, 180, 90.);
|
||||
updateLineWithDecay (mouseOverGeometry.at (3), dimline, 180., 90.);
|
||||
|
||||
|
||||
updateCircle (visibleGeometry.at (4));
|
||||
updateCircle (mouseOverGeometry.at (4));
|
||||
|
||||
//double decay10 = ((decayX * decayY)/ sqrt(0.03107 * SQR(decayX) + SQR(decayY)))/0.9848;
|
||||
//double decay5 = ((decayX * decayY)/ sqrt(0.007655 * SQR(decayX) + SQR(decayY)))/0.9659;
|
||||
if (options.showdelimspot) {
|
||||
//this decayww evaluate approximation of a point in the ellipse for an angle alpha
|
||||
double decay15 = 1.07854 * ((decayX * decayY) / sqrt (0.07179 * SQR (decayX) + SQR (decayY))); //0.07179 = SQR(sin(15)/cos(15)) 1.07854 = 1 / cos(15)
|
||||
double decay30 = 1.15473 * ((decayX * decayY) / sqrt (0.33335 * SQR (decayX) + SQR (decayY)));
|
||||
double decay60 = 2. * ((decayX * decayY) / sqrt (3.0 * SQR (decayX) + SQR (decayY)));
|
||||
double decay75 = 3.86398 * ((decayX * decayY) / sqrt (13.929 * SQR (decayX) + SQR (decayY)));
|
||||
|
||||
double decay15L = 1.07854 * ((decayXL * decayY) / sqrt (0.07179 * SQR (decayXL) + SQR (decayY)));
|
||||
double decay30L = 1.15473 * ((decayXL * decayY) / sqrt (0.33335 * SQR (decayXL) + SQR (decayY)));
|
||||
double decay60L = 2. * ((decayXL * decayY) / sqrt (3.0 * SQR (decayXL) + SQR (decayY)));
|
||||
double decay75L = 3.86398 * ((decayXL * decayY) / sqrt (13.929 * SQR (decayXL) + SQR (decayY)));
|
||||
|
||||
double decay15LT = 1.07854 * ((decayXL * decayYT) / sqrt (0.07179 * SQR (decayXL) + SQR (decayYT)));
|
||||
double decay30LT = 1.15473 * ((decayXL * decayYT) / sqrt (0.33335 * SQR (decayXL) + SQR (decayYT)));
|
||||
double decay60LT = 2. * ((decayXL * decayYT) / sqrt (3.0 * SQR (decayXL) + SQR (decayYT)));
|
||||
double decay75LT = 3.86398 * ((decayXL * decayYT) / sqrt (13.929 * SQR (decayXL) + SQR (decayYT)));
|
||||
|
||||
double decay15T = 1.07854 * ((decayX * decayYT) / sqrt (0.07179 * SQR (decayX) + SQR (decayYT)));
|
||||
double decay30T = 1.15473 * ((decayX * decayYT) / sqrt (0.33335 * SQR (decayX) + SQR (decayYT)));
|
||||
double decay60T = 2. * ((decayX * decayYT) / sqrt (3.0 * SQR (decayX) + SQR (decayYT)));
|
||||
double decay75T = 3.86398 * ((decayX * decayYT) / sqrt (13.929 * SQR (decayX) + SQR (decayYT)));
|
||||
|
||||
double decay45 = (1.414 * decayX * decayY) / sqrt (SQR (decayX) + SQR (decayY));
|
||||
double decay45L = (1.414 * decayXL * decayY) / sqrt (SQR (decayXL) + SQR (decayY));
|
||||
double decay45LT = (1.414 * decayXL * decayYT) / sqrt (SQR (decayXL) + SQR (decayYT));
|
||||
double decay45T = (1.414 * decayX * decayYT) / sqrt (SQR (decayX) + SQR (decayYT));
|
||||
|
||||
//printf("decayX=%f decayY=%f decay10=%f decay45=%f oriX=%i origY=%i\n", decayX, decayY, decay10, decay45, origin.x, origin.y);
|
||||
updateBeziers (visibleGeometry.at (5), decayX, decay15 , decay30, 0., 15., 30.);
|
||||
updateBeziers (mouseOverGeometry.at (5), decayX, decay15 , decay30, 0., 15., 30.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (6), decay30, decay45 , decay60, 30., 45., 60.);
|
||||
updateBeziers (mouseOverGeometry.at (6), decay30, decay45 , decay60, 30., 45., 60.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (7), decay60, decay75 , decayY, 60., 75., 90.);
|
||||
updateBeziers (mouseOverGeometry.at (7), decay60, decay75 , decayY, 60., 75., 90.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (8), decayY, decay75L , decay60L, 90., 105., 120.);
|
||||
updateBeziers (mouseOverGeometry.at (8), decayY, decay75L , decay60L, 90., 105., 120.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (9), decay60L, decay45L , decay30L, 120., 135., 150.);
|
||||
updateBeziers (mouseOverGeometry.at (9), decay60L, decay45L , decay30L, 120., 135., 150.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (10), decay30L, decay15L , decayXL, 150., 165., 180.);
|
||||
updateBeziers (mouseOverGeometry.at (10), decay30L, decay15L , decayXL, 150., 165., 180.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (11), decayXL, decay15LT , decay30LT, 180., 195., 210.);
|
||||
updateBeziers (mouseOverGeometry.at (11), decayXL, decay15LT , decay30LT, 180., 195., 210.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (12), decay30LT, decay45LT , decay60LT, 210., 225., 240.);
|
||||
updateBeziers (mouseOverGeometry.at (12), decay30LT, decay45LT , decay60LT, 210., 225., 240.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (13), decay60LT, decay75LT , decayYT, 240., 255., 270.);
|
||||
updateBeziers (mouseOverGeometry.at (13), decay60LT, decay75LT , decayYT, 240., 255., 270.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (14), decayYT, decay75T , decay60T, 270., 285., 300.);
|
||||
updateBeziers (mouseOverGeometry.at (14), decayYT, decay75T , decay60T, 270., 285., 300.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (15), decay60T, decay45T , decay30T, 300., 315., 330.);
|
||||
updateBeziers (mouseOverGeometry.at (15), decay60T, decay45T , decay30T, 300., 315., 330.);
|
||||
|
||||
updateBeziers (visibleGeometry.at (16), decay30T, decay15T , decayX, 330., 345., 360.);
|
||||
updateBeziers (mouseOverGeometry.at (16), decay30T, decay15T , decayX, 330., 345., 360.);
|
||||
|
||||
}
|
||||
|
||||
// updateArcellipse (visibleGeometry.at (5), decayX, decayY, 0., 0.5);
|
||||
// updateArcellipse (mouseOverGeometry.at (5), decayX, decayY, 0., 0.5);
|
||||
|
||||
}
|
||||
|
||||
@@ -2963,13 +3212,16 @@ bool Locallab::mouseOver (int modifierKey)
|
||||
if (lastObject == 2 || lastObject == 3) {
|
||||
EditSubscriber::visibleGeometry.at (2)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at (3)->state = Geometry::NORMAL;
|
||||
|
||||
} else if (lastObject == 0 || lastObject == 1) {
|
||||
EditSubscriber::visibleGeometry.at (0)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at (1)->state = Geometry::NORMAL;
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
EditSubscriber::visibleGeometry.at (lastObject)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at (4)->state = Geometry::NORMAL;
|
||||
// EditSubscriber::visibleGeometry.at (lastObject)->state = Geometry::NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2977,13 +3229,16 @@ bool Locallab::mouseOver (int modifierKey)
|
||||
if (editProvider->object == 2 || editProvider->object == 3) {
|
||||
EditSubscriber::visibleGeometry.at (2)->state = Geometry::PRELIGHT;
|
||||
EditSubscriber::visibleGeometry.at (3)->state = Geometry::PRELIGHT;
|
||||
|
||||
} else if (editProvider->object == 0 || editProvider->object == 1) {
|
||||
EditSubscriber::visibleGeometry.at (0)->state = Geometry::PRELIGHT;
|
||||
EditSubscriber::visibleGeometry.at (1)->state = Geometry::PRELIGHT;
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
EditSubscriber::visibleGeometry.at (editProvider->object)->state = Geometry::PRELIGHT;
|
||||
EditSubscriber::visibleGeometry.at (4)->state = Geometry::PRELIGHT;
|
||||
// EditSubscriber::visibleGeometry.at (editProvider->object)->state = Geometry::PRELIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3039,6 +3294,7 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
if (lastObject == 2) {
|
||||
//draggedlocYOffset = -draggedlocYOffset;
|
||||
draggedlocYOffset -= (locYT->getValue() / 2000. * verti);
|
||||
|
||||
}
|
||||
} else if (lastObject == 3) {
|
||||
// Dragging a line to change the angle
|
||||
@@ -3062,6 +3318,7 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
if (lastObject == 3) {
|
||||
draggedlocYOffset = -draggedlocYOffset;
|
||||
draggedlocYOffset -= (locY->getValue() / 2000. * verti);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3095,6 +3352,7 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
if (Smethod->get_active_row_number() == 0 || Smethod->get_active_row_number() == 2) {
|
||||
if (lastObject == 0) {
|
||||
// Dragging a line to change the angle
|
||||
|
||||
PolarCoord draggedPoint;
|
||||
rtengine::Coord currPos;
|
||||
currPos = provider->posImage;
|
||||
@@ -3110,12 +3368,13 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
|
||||
// draggedPoint.setFromCartesian(centerPos, currPos);
|
||||
// compute the projected value of the dragged point
|
||||
printf ("rad=%f ang=%f\n", draggedPoint.radius, draggedPoint.angle - degree->getValue());
|
||||
//printf ("rad=%f ang=%f\n", draggedPoint.radius, draggedPoint.angle - degree->getValue());
|
||||
draggedlocXOffset = draggedPoint.radius * sin ((draggedPoint.angle - degree->getValue() + 90.) / 180.*M_PI);
|
||||
// if (lastObject==1)
|
||||
// draggedlocXOffset = -draggedlocXOffset;//-
|
||||
draggedlocXOffset -= (locX->getValue() / 2000. * horiz);
|
||||
} else if (lastObject == 1) {
|
||||
|
||||
// Dragging a line to change the angle
|
||||
PolarCoord draggedPoint;
|
||||
rtengine::Coord currPos;
|
||||
@@ -3128,7 +3387,7 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
draggedPoint = currPos - centerPos;
|
||||
|
||||
// draggedPoint.setFromCartesian(centerPos, currPos);
|
||||
printf ("rad=%f ang=%f\n", draggedPoint.radius, draggedPoint.angle - degree->getValue());
|
||||
// printf ("rad=%f ang=%f\n", draggedPoint.radius, draggedPoint.angle - degree->getValue());
|
||||
draggedlocXOffset = draggedPoint.radius * sin ((draggedPoint.angle - degree->getValue() + 90.) / 180.*M_PI);
|
||||
|
||||
if (lastObject == 1) {
|
||||
@@ -3152,7 +3411,7 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
draggedPoint = currPos - centerPos;
|
||||
|
||||
// draggedPoint.setFromCartesian(centerPos, currPos);
|
||||
printf ("rad=%f ang=%f\n", draggedPoint.radius, draggedPoint.angle - degree->getValue());
|
||||
//printf ("rad=%f ang=%f\n", draggedPoint.radius, draggedPoint.angle - degree->getValue());
|
||||
draggedlocXOffset = draggedPoint.radius * sin ((draggedPoint.angle - degree->getValue() + 90.) / 180.*M_PI);
|
||||
|
||||
if (lastObject == 1) {
|
||||
@@ -3220,8 +3479,10 @@ bool Locallab::button1Pressed (int modifierKey)
|
||||
if (lastObject == 0 || lastObject == 1) {
|
||||
EditSubscriber::visibleGeometry.at (0)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at (1)->state = Geometry::NORMAL;
|
||||
|
||||
} else {
|
||||
EditSubscriber::visibleGeometry.at (lastObject)->state = Geometry::NORMAL;
|
||||
EditSubscriber::visibleGeometry.at (4)->state = Geometry::NORMAL;
|
||||
// EditSubscriber::visibleGeometry.at (lastObject)->state = Geometry::NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3385,7 +3646,7 @@ bool Locallab::drag1 (int modifierKey)
|
||||
|
||||
if (Smethod->get_active_row_number() == 0 || Smethod->get_active_row_number() == 2) {
|
||||
//else if (lastObject==0) {
|
||||
if (lastObject == 0) {
|
||||
if (lastObject == 0) {// >=4
|
||||
// Dragging the upper or lower locY bar
|
||||
PolarCoord draggedPoint;
|
||||
rtengine::Coord currPos;
|
||||
@@ -3401,7 +3662,7 @@ bool Locallab::drag1 (int modifierKey)
|
||||
// draggedPoint.setFromCartesian(centerPos, currPos);
|
||||
double currDraggedStrOffset = draggedPoint.radius * sin ((draggedPoint.angle - degree->getValue() + 90.) / 180.*M_PI);
|
||||
|
||||
if (lastObject == 0)
|
||||
if (lastObject == 0) //>=4
|
||||
// Dragging the upper locY bar
|
||||
{
|
||||
currDraggedStrOffset -= draggedlocXOffset;
|
||||
|
||||
@@ -441,6 +441,7 @@ void Options::setDefaults ()
|
||||
UseIconNoText = true;
|
||||
whiteBalanceSpotSize = 8;
|
||||
showFilmStripToolBar = false;
|
||||
showdelimspot = false;
|
||||
menuGroupRank = true;
|
||||
menuGroupLabel = true;
|
||||
menuGroupFileOperations = true;
|
||||
@@ -1474,6 +1475,10 @@ int Options::readFromFile (Glib::ustring fname)
|
||||
showFilmStripToolBar = keyFile.get_boolean ("GUI", "ShowFilmStripToolBar");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "Showdelimspot")) {
|
||||
showdelimspot = keyFile.get_boolean ("GUI", "Showdelimspot");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "FileBrowserToolbarSingleRow")) {
|
||||
FileBrowserToolbarSingleRow = keyFile.get_boolean ("GUI", "FileBrowserToolbarSingleRow");
|
||||
}
|
||||
@@ -2101,6 +2106,7 @@ int Options::saveToFile (Glib::ustring fname)
|
||||
keyFile.set_integer ("GUI", "NavigatorRGBUnit", (int)navRGBUnit);
|
||||
keyFile.set_integer ("GUI", "NavigatorHSVUnit", (int)navHSVUnit);
|
||||
keyFile.set_boolean ("GUI", "ShowFilmStripToolBar", showFilmStripToolBar);
|
||||
keyFile.set_boolean ("GUI", "Showdelimspot", showdelimspot);
|
||||
keyFile.set_boolean ("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow);
|
||||
keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar);
|
||||
keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText);
|
||||
|
||||
@@ -226,6 +226,7 @@ public:
|
||||
int curvebboxpos; // 0=above, 1=right, 2=below, 3=left
|
||||
|
||||
bool showFilmStripToolBar;
|
||||
bool showdelimspot;
|
||||
|
||||
// Performance options
|
||||
Glib::ustring clutsDir;
|
||||
|
||||
@@ -993,11 +993,28 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
workflowGrid->attach_next_to (*ckbHideTPVScrollbar, *hb4label, Gtk::POS_RIGHT, 1, 1);
|
||||
workflowGrid->attach_next_to (*ckbUseIconNoText, *ckbHideTPVScrollbar, Gtk::POS_RIGHT, 1, 1);
|
||||
|
||||
|
||||
fworklflow->add (*workflowGrid);
|
||||
mvbsd->attach_next_to (*fworklflow, Gtk::POS_TOP, 2, 1);
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
Gtk::Frame* flocal = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_LOCAL")) );
|
||||
setExpandAlignProperties (flocal, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||
Gtk::Grid* localGrid = Gtk::manage ( new Gtk::Grid() );
|
||||
localGrid->set_column_spacing (4);
|
||||
localGrid->set_row_spacing (4);
|
||||
setExpandAlignProperties (localGrid, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||
|
||||
ckbShowdelimspot = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_LOCALSHOWDELIMSPOT")) );
|
||||
setExpandAlignProperties (ckbShowdelimspot, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START);
|
||||
localGrid->attach_next_to (*ckbShowdelimspot, Gtk::POS_LEFT, 3, 1);
|
||||
|
||||
flocal->add (*localGrid);
|
||||
mvbsd->attach_next_to (*flocal, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
Gtk::Frame* flang = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_DEFAULTLANG")) );
|
||||
setExpandAlignProperties (flang, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||
Gtk::Grid* langGrid = Gtk::manage ( new Gtk::Grid() );
|
||||
@@ -1029,7 +1046,8 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
langGrid->attach_next_to (*languages, *langlab, Gtk::POS_RIGHT, 1, 1);
|
||||
langGrid->attach_next_to (*langw, *languages, Gtk::POS_RIGHT, 1, 1);
|
||||
flang->add (*langGrid);
|
||||
mvbsd->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
|
||||
// mvbsd->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
|
||||
mvbsd->attach_next_to (*flang, *flocal, Gtk::POS_BOTTOM, 2, 1);
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
@@ -1781,6 +1799,7 @@ void Preferences::storePreferences ()
|
||||
moptions.histogramPosition = ckbHistogramPositionLeft->get_active() ? 1 : 2;
|
||||
moptions.FileBrowserToolbarSingleRow = ckbFileBrowserToolbarSingleRow->get_active();
|
||||
moptions.showFilmStripToolBar = ckbShowFilmStripToolBar->get_active();
|
||||
moptions.showdelimspot = ckbShowdelimspot->get_active();
|
||||
moptions.hideTPVScrollbar = ckbHideTPVScrollbar->get_active();
|
||||
moptions.overwriteOutputFile = chOverwriteOutputFile->get_active ();
|
||||
moptions.UseIconNoText = ckbUseIconNoText->get_active();
|
||||
@@ -1988,6 +2007,7 @@ void Preferences::fillPreferences ()
|
||||
// ckbHistogramWorking->set_active(moptions.histogramWorking==1);
|
||||
ckbFileBrowserToolbarSingleRow->set_active (moptions.FileBrowserToolbarSingleRow);
|
||||
ckbShowFilmStripToolBar->set_active (moptions.showFilmStripToolBar);
|
||||
ckbShowdelimspot->set_active (moptions.showdelimspot);
|
||||
ckbHideTPVScrollbar->set_active (moptions.hideTPVScrollbar);
|
||||
ckbUseIconNoText->set_active (moptions.UseIconNoText);
|
||||
|
||||
|
||||
@@ -200,6 +200,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
|
||||
Gtk::CheckButton* ckbHistogramWorking;
|
||||
Gtk::CheckButton* ckbFileBrowserToolbarSingleRow;
|
||||
Gtk::CheckButton* ckbShowFilmStripToolBar;
|
||||
Gtk::CheckButton* ckbShowdelimspot;
|
||||
Gtk::CheckButton* ckbHideTPVScrollbar;
|
||||
Gtk::CheckButton* ckbUseIconNoText;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user