- Add option to stick Magnify to a certain coordinate.
- Keep updating on this area - Fixes #2831 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28272 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -49,6 +49,7 @@ const int32 msg_toggle_ruler = 'rulr';
|
|||||||
const int32 msg_copy_image = 'copy';
|
const int32 msg_copy_image = 'copy';
|
||||||
const int32 msg_track_color = 'trak';
|
const int32 msg_track_color = 'trak';
|
||||||
const int32 msg_freeze = 'frez';
|
const int32 msg_freeze = 'frez';
|
||||||
|
const int32 msg_stick = 'stic';
|
||||||
const int32 msg_dump = 'dump';
|
const int32 msg_dump = 'dump';
|
||||||
const int32 msg_add_cross_hair = 'acrs';
|
const int32 msg_add_cross_hair = 'acrs';
|
||||||
const int32 msg_remove_cross_hair = 'rcrs';
|
const int32 msg_remove_cross_hair = 'rcrs';
|
||||||
@@ -165,6 +166,8 @@ BuildInfoMenu(BMenu *menu)
|
|||||||
|
|
||||||
menuItem = new BMenuItem("Freeze/Unfreeze image", new BMessage(msg_freeze),'F');
|
menuItem = new BMenuItem("Freeze/Unfreeze image", new BMessage(msg_freeze),'F');
|
||||||
menu->AddItem(menuItem);
|
menu->AddItem(menuItem);
|
||||||
|
menuItem = new BMenuItem("Stick Coordinates", new BMessage(msg_stick), 'I');
|
||||||
|
menu->AddItem(menuItem);
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
|
|
||||||
menuItem = new BMenuItem("Make Square", new BMessage(msg_make_square),'/');
|
menuItem = new BMenuItem("Make Square", new BMessage(msg_make_square),'/');
|
||||||
@@ -258,6 +261,7 @@ TWindow::TWindow(int32 pixelCount)
|
|||||||
AddShortcut('H', B_SHIFT_KEY, new BMessage(msg_remove_cross_hair));
|
AddShortcut('H', B_SHIFT_KEY, new BMessage(msg_remove_cross_hair));
|
||||||
AddShortcut('G', B_COMMAND_KEY, new BMessage(msg_toggle_grid));
|
AddShortcut('G', B_COMMAND_KEY, new BMessage(msg_toggle_grid));
|
||||||
AddShortcut('F', B_COMMAND_KEY, new BMessage(msg_freeze));
|
AddShortcut('F', B_COMMAND_KEY, new BMessage(msg_freeze));
|
||||||
|
AddShortcut('I', B_COMMAND_KEY, new BMessage(msg_stick));
|
||||||
AddShortcut('-', B_COMMAND_KEY, new BMessage(msg_shrink));
|
AddShortcut('-', B_COMMAND_KEY, new BMessage(msg_shrink));
|
||||||
AddShortcut('=', B_COMMAND_KEY, new BMessage(msg_grow));
|
AddShortcut('=', B_COMMAND_KEY, new BMessage(msg_grow));
|
||||||
AddShortcut('/', B_COMMAND_KEY, new BMessage(msg_make_square));
|
AddShortcut('/', B_COMMAND_KEY, new BMessage(msg_make_square));
|
||||||
@@ -339,6 +343,10 @@ TWindow::MessageReceived(BMessage* m)
|
|||||||
fFatBits->MakeActive(!fFatBits->Active());
|
fFatBits->MakeActive(!fFatBits->Active());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case msg_stick:
|
||||||
|
fFatBits->MakeSticked(!fFatBits->Sticked());
|
||||||
|
break;
|
||||||
|
|
||||||
case msg_save: {
|
case msg_save: {
|
||||||
// freeze the image here, unfreeze after dump or cancel
|
// freeze the image here, unfreeze after dump or cancel
|
||||||
fFatBits->StartSave();
|
fFatBits->StartSave();
|
||||||
@@ -1068,7 +1076,8 @@ TMagnify::TMagnify(BRect r, TWindow* parent)
|
|||||||
fCrossHair1(-1, -1),
|
fCrossHair1(-1, -1),
|
||||||
fShowCrossHair2(false),
|
fShowCrossHair2(false),
|
||||||
fCrossHair2(-1, -1),
|
fCrossHair2(-1, -1),
|
||||||
fParent(parent)
|
fParent(parent),
|
||||||
|
fStickCoordinates(false)
|
||||||
{
|
{
|
||||||
SetViewColor(B_TRANSPARENT_32_BIT);
|
SetViewColor(B_TRANSPARENT_32_BIT);
|
||||||
}
|
}
|
||||||
@@ -1482,9 +1491,12 @@ TMagnify::Update(bool force)
|
|||||||
ulong button;
|
ulong button;
|
||||||
static long counter = 0;
|
static long counter = 0;
|
||||||
|
|
||||||
GetMouse(&loc, &button);
|
if (!fStickCoordinates) {
|
||||||
|
GetMouse(&loc, &button);
|
||||||
|
ConvertToScreen(&loc);
|
||||||
|
} else
|
||||||
|
loc = fLastLoc;
|
||||||
|
|
||||||
ConvertToScreen(&loc);
|
|
||||||
if (force || fLastLoc != loc || counter++ % 35 == 0) {
|
if (force || fLastLoc != loc || counter++ % 35 == 0) {
|
||||||
if (fImageView->CreateImage(loc, force))
|
if (fImageView->CreateImage(loc, force))
|
||||||
Invalidate();
|
Invalidate();
|
||||||
@@ -1609,6 +1621,13 @@ TMagnify::MakeActive(bool s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TMagnify::MakeSticked(bool s)
|
||||||
|
{
|
||||||
|
fStickCoordinates = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TMagnify::PixelCount(int32* width, int32* height)
|
TMagnify::PixelCount(int32* width, int32* height)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -100,6 +100,9 @@ class TMagnify : public BView {
|
|||||||
void MakeActive(bool);
|
void MakeActive(bool);
|
||||||
bool Active() { return fActive; }
|
bool Active() { return fActive; }
|
||||||
|
|
||||||
|
void MakeSticked(bool);
|
||||||
|
bool Sticked() const { return fStickCoordinates; }
|
||||||
|
|
||||||
void AddCrossHair();
|
void AddCrossHair();
|
||||||
void RemoveCrossHair();
|
void RemoveCrossHair();
|
||||||
void SetCrossHairsShowing(bool ch1=false, bool ch2=false);
|
void SetCrossHairsShowing(bool ch1=false, bool ch2=false);
|
||||||
@@ -138,6 +141,7 @@ class TMagnify : public BView {
|
|||||||
TWindow* fParent;
|
TWindow* fParent;
|
||||||
|
|
||||||
bool fImageFrozenOnSave;
|
bool fImageFrozenOnSave;
|
||||||
|
bool fStickCoordinates;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TMenu : public BMenu {
|
class TMenu : public BMenu {
|
||||||
|
|||||||
Reference in New Issue
Block a user