Annotation of OpenXM_contrib/gnuplot/beos/GPView.cpp, Revision 1.1.1.1
1.1 ohara 1: /*[
2: * Copyright 1986 - 1993, 1998 Thomas Williams, Colin Kelley
3: *
4: * Permission to use, copy, and distribute this software and its
5: * documentation for any purpose with or without fee is hereby granted,
6: * provided that the above copyright notice appear in all copies and
7: * that both that copyright notice and this permission notice appear
8: * in supporting documentation.
9: *
10: * Permission to modify the software is granted, but not the right to
11: * distribute the complete modified source code. Modifications are to
12: * be distributed as patches to the released version. Permission to
13: * distribute binaries produced by compiling modified sources is granted,
14: * provided you
15: * 1. distribute the corresponding source modifications from the
16: * released version in the form of a patch file along with the binaries,
17: * 2. add special version identification to distinguish your version
18: * in addition to the base release version number,
19: * 3. provide your name and address as the primary contact for the
20: * support of your modified version, and
21: * 4. retain our contact information in regard to use of the base
22: * software.
23: * Permission to distribute the released version of the source code along
24: * with corresponding source modifications in the form of a patch file is
25: * granted with same provisions 2 through 4 for binary distributions.
26: *
27: * This software is provided "as is" without express or implied warranty
28: * to the extent permitted by applicable law.
29: ]*/
30:
31: #include <stdio.h>
32: #include <stdlib.h>
33: #include <string.h>
34:
35: #include "GPBitmap.h"
36: #include "GPView.h"
37: #include "constants.h"
38: #include <Region.h>
39: #include <ScrollBar.h>
40:
41:
42: /*******************************************************************/
43: // GPView
44:
45: GPView::GPView(BRect rect, ulong resizeMode,
46: ulong flags, GPBitmap *bitmap)
47: : BView(rect,"BitmapEditor",resizeMode,flags|B_SUBPIXEL_PRECISE|B_FRAME_EVENTS)
48: {
49: m_bitmap = (bitmap) ? bitmap : new GPBitmap(rect.Width(), rect.Height());
50: SetScale(1);
51: };
52:
53: void GPView::GetMaxSize(float *width, float *height)
54: {
55: BRect r = m_bitmap->Bounds();
56: *width = floor((r.right+1)*m_scale - 0.5);
57: *height = floor((r.bottom+1)*m_scale - 0.5);
58: };
59:
60: void GPView::MessageReceived(BMessage *msg)
61: {
62: switch (msg->what) {
63: case bmsgBitmapDirty:
64: {
65: // m_bitmap->Lock();
66: // m_bitmap->display();
67: // m_bitmap->Unlock();
68: // printf("view (dirty) displaying %d commands\n",m_bitmap->ncommands);
69: Draw(Bounds());
70: break;
71: };
72: case bmsgBitmapResize:
73: {
74: BRect r;
75: msg->FindRect("rect",&r);
76: m_bitmap->ResizeTo(r.Width(),r.Height(),0);
77: break;
78: };
79: case bmsgNewCmd:
80: {
81: char *cmd = NULL;
82: int32 i, num;
83: num = msg->FindInt32("numcmds");
84: m_bitmap->addCommands(msg,num);
85: // printf("view (new cmds) displaying %d commands\n",m_bitmap->ncommands);
86: Draw(Bounds());
87: break;
88: }
89: case bmsgClrCmd:
90: {
91: m_bitmap->clearCommands();
92: break;
93: }
94: default:
95: BView::MessageReceived(msg);
96: };
97: };
98:
99: GPView::~GPView()
100: {
101: };
102:
103: void GPView::SetScale(float scale)
104: {
105: m_scale = scale;
106: // FixupScrollbars();
107: Invalidate();
108: };
109:
110: float GPView::Scale()
111: {
112: return m_scale;
113: };
114:
115: void GPView::FrameResized(float width, float height)
116: {
117: uint32 buttons;
118: BPoint cursor;
119: printf("resising\n");
120: // ResizeTo(width, height);
121: // GetMouse(&cursor, &buttons);
122: m_bitmap->Lock();
123: m_bitmap->ResizeTo(width, height,1);
124: BBitmap *b = m_bitmap->RealBitmap();
125: DrawBitmap(b,b->Bounds(),Bounds());
126: Sync();
127: m_bitmap->Unlock();
128: // Draw(Bounds());
129: // FixupScrollbars();
130: };
131:
132: void GPView::AttachedToWindow()
133: {
134: // FixupScrollbars();
135: SetViewColor(B_TRANSPARENT_32_BIT);
136: };
137:
138: void GPView::MouseDown(BPoint point)
139: {
140: printf("Mouse Down\n");
141: };
142:
143: void GPView::MouseUp(BPoint point)
144: {
145: printf("Mouse Up\n");
146: Draw(Bounds());
147: };
148:
149: void GPView::Draw(BRect updateRect)
150: {
151: m_bitmap->Lock();
152: m_bitmap->display(Bounds().Width(),Bounds().Height());
153: BBitmap *b = m_bitmap->RealBitmap();
154: DrawBitmap(b,b->Bounds(),Bounds());
155: Sync();
156: m_bitmap->Unlock();
157: };
158:
159: void GPView::FixupScrollbars()
160: {
161: };
162:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>