git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17648 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2006-05-30 11:42:52 +00:00
parent a12827f24d
commit 16466e8a73
4 changed files with 605 additions and 528 deletions

View File

@ -3,6 +3,7 @@ SubDir HAIKU_TOP src apps magnify ;
SetSubDirSupportedPlatformsBeOSCompatible ;
Application Magnify :
main.cpp
Magnify.cpp
: be tracker game
: Magnify.rdef ;
: Magnify.rdef
;

File diff suppressed because it is too large Load Diff

258
src/apps/magnify/Magnify.h Normal file
View File

@ -0,0 +1,258 @@
/*
* Copyright 2002-2006, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Copyright 1999, Be Incorporated. All Rights Reserved.
* This file may be used under the terms of the Be Sample Code License.
*/
#ifndef MAGNIFY_H
#define MAGNIFY_H
#include <Application.h>
#include <Box.h>
#include <FilePanel.h>
#include <MenuBar.h>
#include <View.h>
#include <Window.h>
class TMagnify;
class TWindow;
class TOSMagnify : public BView {
public:
TOSMagnify(BRect, TMagnify* parent, color_space space);
virtual ~TOSMagnify();
void InitObject();
virtual void FrameResized(float width, float height);
void SetSpace(color_space space);
void Resize(int32 width, int32 height);
bool CreateImage(BPoint, bool force=false);
bool CopyScreenRect(BRect);
void DrawGrid(int32 width, int32 height,
BRect dest, int32 pixelSize);
void DrawSelection();
rgb_color ColorAtSelection();
BBitmap* Bitmap() { return fBitmap; }
private:
color_space fColorSpace;
char* fOldBits;
long fBytesPerPixel;
TMagnify* fParent;
BBitmap* fBitmap;
BBitmap* fPixel;
BView* fPixelView;
};
class TMagnify : public BView {
public:
TMagnify(BRect, TWindow*);
virtual ~TMagnify();
void InitBuffers(int32 hPixelCount, int32 vPixelCount,
int32 pixelSize, bool showGrid);
virtual void AttachedToWindow();
virtual void Draw(BRect);
virtual void KeyDown(const char *bytes, int32 numBytes);
virtual void FrameResized(float, float);
virtual void MouseDown(BPoint where);
virtual void ScreenChanged(BRect bounds, color_space cs);
virtual void WindowActivated(bool);
void SetSelection(bool state);
void MoveSelection(int32 x, int32 y);
void MoveSelectionTo(int32 x, int32 y);
void ShowSelection();
short Selection();
bool SelectionIsShowing();
void SelectionLoc(float* x, float* y);
void SetSelectionLoc(float, float);
rgb_color SelectionColor();
void CrossHair1Loc(float* x, float* y);
void CrossHair2Loc(float* x, float* y);
BPoint CrossHair1Loc();
BPoint CrossHair2Loc();
void NudgeMouse(float x, float y);
void Update(bool force);
bool NeedToUpdate();
void SetUpdate(bool);
void CopyImage();
long ThreadID() { return fThread; }
void MakeActive(bool);
bool Active() { return fActive; }
void AddCrossHair();
void RemoveCrossHair();
void SetCrossHairsShowing(bool ch1=false, bool ch2=false);
void CrossHairsShowing(bool*, bool*);
void PixelCount(int32* width, int32* height);
int32 PixelSize();
bool ShowGrid();
void StartSave();
void SaveImage(entry_ref* ref, char* name, bool selectionOnly=false);
void SaveBits(BFile* file, const BBitmap *bitmap, char* name) const;
void EndSave();
private:
static long MagnifyTask(void *);
bool fNeedToUpdate;
long fThread; // magnify thread id
bool fActive; // magnifying toggle
BBitmap* fImageBuf; // os buffer
TOSMagnify* fImageView; // os view
BPoint fLastLoc;
short fSelection;
bool fShowSelection;
BPoint fSelectionLoc;
bool fShowCrossHair1;
BPoint fCrossHair1;
bool fShowCrossHair2;
BPoint fCrossHair2;
TWindow* fParent;
bool fImageFrozenOnSave;
};
class TMenu : public BMenu {
public:
TMenu(TWindow* mainWindow, const char *title = NULL,
menu_layout layout = B_ITEMS_IN_COLUMN);
virtual ~TMenu();
virtual void AttachedToWindow();
private:
TWindow* fMainWindow;
};
class TInfoView : public BBox {
public:
TInfoView(BRect frame);
virtual ~TInfoView();
virtual void AttachedToWindow();
virtual void Draw(BRect updateRect);
virtual void FrameResized(float width, float height);
void AddMenu();
void SetMagView(TMagnify* magView);
private:
float fFontHeight;
TMagnify* fMagView;
BMenuField* fPopUp;
TMenu* fMenu;
int32 fHPixelCount;
int32 fVPixelCount;
int32 fPixelSize;
rgb_color fSelectionColor;
BPoint fCH1Loc;
BPoint fCH2Loc;
char fInfoStr[64];
char fRGBStr[64];
char fCH1Str[64];
char fCH2Str[64];
};
class TWindow : public BWindow {
public:
TWindow(int32 pixelCount = -1);
virtual ~TWindow();
virtual void MessageReceived(BMessage* message);
virtual bool QuitRequested();
void GetPrefs(int32 pixelCount = -1);
void SetPrefs();
virtual void FrameResized(float width, float height);
virtual void ScreenChanged(BRect screenSize, color_space depth);
virtual void Minimize(bool);
virtual void Zoom(BPoint position, float width, float height);
void CalcViewablePixels();
void GetPreferredSize(float* width, float* height);
void ResizeWindow(int32 rowCount, int32 columnCount);
void ResizeWindow(bool direction);
void SetGrid(bool);
bool ShowGrid();
void ShowInfo(bool);
bool InfoIsShowing();
void UpdateInfo();
void AddCrossHair();
void RemoveCrossHair();
void CrossHairsShowing(bool* ch1, bool* ch2);
void PixelCount(int32* h, int32 *v);
void SetPixelSize(int32);
void SetPixelSize(bool);
int32 PixelSize();
void ShowHelp();
bool IsActive();
private:
float fInfoHeight;
bool fShowInfo;
float fFontHeight;
bool fShowGrid;
int32 fHPixelCount;
int32 fVPixelCount;
int32 fPixelSize;
TMagnify* fFatBits;
TInfoView* fInfo;
BFilePanel* fSavePanel;
};
class TApp : public BApplication {
public:
TApp(int32 pixelCount = -1);
virtual void MessageReceived(BMessage* message);
virtual void ReadyToRun();
virtual void AboutRequested();
};
#endif // MAGNIFY_H

View File

@ -1,269 +0,0 @@
/*
Copyright 1999, Be Incorporated. All Rights Reserved.
This file may be used under the terms of the Be Sample Code License.
*/
#include <Application.h>
#include <Box.h>
#include <FilePanel.h>
#include <MenuBar.h>
#include <View.h>
#include <Window.h>
const int32 msg_save = 'save';
const rgb_color kViewGray = { 216, 216, 216, 255};
const rgb_color kGridGray = {130, 130, 130, 255 };
const rgb_color kWhite = { 255, 255, 255, 255};
const rgb_color kBlack = { 0, 0, 0, 255};
const rgb_color kDarkGray = { 96, 96, 96, 255};
const rgb_color kRedColor = { 255, 10, 50, 255 };
const rgb_color kGreenColor = { 10, 255, 50, 255 };
const rgb_color kBlueColor = { 10, 50, 255, 255 };
//******************************************************************************
class TMagnify;
class TOSMagnify : public BView {
public:
TOSMagnify(BRect, TMagnify* parent, color_space space);
~TOSMagnify();
void InitObject();
void FrameResized(float width, float height);
void SetSpace(color_space space);
void Resize(int32 width, int32 height);
bool CreateImage(BPoint, bool force=false);
bool CopyScreenRect(BRect);
void DrawGrid(int32 width, int32 height,
BRect dest, int32 pixelSize);
void DrawSelection();
rgb_color ColorAtSelection();
BBitmap* Bitmap() { return fBitmap; }
private:
color_space fColorSpace;
char* fOldBits;
long fBytesPerPixel;
TMagnify* fParent;
BBitmap* fBitmap;
BBitmap* fPixel;
BView* fPixelView;
};
//******************************************************************************
class TWindow;
class TMagnify : public BView {
public:
TMagnify(BRect, TWindow*);
~TMagnify();
void AttachedToWindow();
void InitBuffers(int32 hPixelCount, int32 vPixelCount,
int32 pixelSize, bool showGrid);
void Draw(BRect);
void KeyDown(const char *bytes, int32 numBytes);
void FrameResized(float, float);
void MouseDown(BPoint where);
void ScreenChanged(BRect bounds, color_space cs);
void SetSelection(bool state);
void MoveSelection(int32 x, int32 y);
void MoveSelectionTo(int32 x, int32 y);
void ShowSelection();
short Selection();
bool SelectionIsShowing();
void SelectionLoc(float* x, float* y);
void SetSelectionLoc(float, float);
rgb_color SelectionColor();
void CrossHair1Loc(float* x, float* y);
void CrossHair2Loc(float* x, float* y);
BPoint CrossHair1Loc();
BPoint CrossHair2Loc();
void NudgeMouse(float x, float y);
void WindowActivated(bool);
static long MagnifyTask(void *);
void Update(bool force);
bool NeedToUpdate();
void SetUpdate(bool);
void CopyImage();
long ThreadID() { return fThread; }
void MakeActive(bool);
bool Active() { return fActive; }
void AddCrossHair();
void RemoveCrossHair();
void SetCrossHairsShowing(bool ch1=false, bool ch2=false);
void CrossHairsShowing(bool*, bool*);
void PixelCount(int32* width, int32* height);
int32 PixelSize();
bool ShowGrid();
void StartSave();
void SaveImage(entry_ref* ref, char* name, bool selectionOnly=false);
void SaveBits(BFile* file, const BBitmap *bitmap, char* name) const;
void EndSave();
private:
bool fNeedToUpdate;
long fThread; // magnify thread id
bool fActive; // magnifying toggle
BBitmap* fImageBuf; // os buffer
TOSMagnify* fImageView; // os view
BPoint fLastLoc;
short fSelection;
bool fShowSelection;
BPoint fSelectionLoc;
bool fShowCrossHair1;
BPoint fCrossHair1;
bool fShowCrossHair2;
BPoint fCrossHair2;
TWindow* fParent;
bool fImageFrozenOnSave;
};
//******************************************************************************
class TWindow;
class TMenu : public BMenu {
public:
TMenu(TWindow* mainWindow, const char *title=NULL,
menu_layout layout = B_ITEMS_IN_COLUMN);
~TMenu();
void AttachedToWindow();
private:
TWindow* fMainWindow;
};
class TInfoView : public BBox {
public:
TInfoView(BRect frame);
~TInfoView();
void AttachedToWindow();
void Draw(BRect updateRect);
void FrameResized(float width, float height);
void AddMenu();
void SetMagView(TMagnify* magView);
private:
float fFontHeight;
TMagnify* fMagView;
BMenuField* fPopUp;
TMenu* fMenu;
int32 fHPixelCount;
int32 fVPixelCount;
int32 fPixelSize;
rgb_color fSelectionColor;
BPoint fCH1Loc;
BPoint fCH2Loc;
char fInfoStr[64];
char fRGBStr[64];
char fCH1Str[64];
char fCH2Str[64];
};
//******************************************************************************
class TWindow : public BWindow {
public:
TWindow(int32 pixelCount=-1);
~TWindow();
void MessageReceived(BMessage*);
bool QuitRequested();
void GetPrefs(int32 pixelCount=-1);
void SetPrefs();
void FrameResized(float w, float h);
void ScreenChanged(BRect screen_size, color_space depth);
void Minimize(bool);
void Zoom(BPoint rec_position, float rec_width, float rec_height);
void CalcViewablePixels();
void GetPreferredSize(float* width, float* height);
void ResizeWindow(int32 rowCount, int32 columnCount);
void ResizeWindow(bool direction);
void SetGrid(bool);
bool ShowGrid();
void ShowInfo(bool);
bool InfoIsShowing();
void UpdateInfo();
void AddCrossHair();
void RemoveCrossHair();
void CrossHairsShowing(bool* ch1, bool* ch2);
void PixelCount(int32* h, int32 *v);
void SetPixelSize(int32);
void SetPixelSize(bool);
int32 PixelSize();
void ShowHelp();
bool IsActive();
private:
float fInfoHeight;
bool fShowInfo;
float fFontHeight;
bool fShowGrid;
int32 fHPixelCount;
int32 fVPixelCount;
int32 fPixelSize;
TMagnify* fFatBits;
TInfoView* fInfo;
BFilePanel* fSavePanel;
};
//******************************************************************************
class TApp : public BApplication {
public:
TApp(int32 pixelCount=-1);
void MessageReceived(BMessage*);
void ReadyToRun();
void AboutRequested();
};