blob: 76d32cd4a7fb3898f3aeeb2443bb85afbdcbe558 [file] [log] [blame]
PulkoMandya3e9cfe2023-04-10 10:01:36 +02001//////////////////////////////////////////////////////////////////////////
2// BeDC.h //
3// The header file to use with BeDC //
4// //
5// Written By: Magnus Landahl //
6// E-Mail: magnus.landahl@swipnet.se //
7// //
8// Copyright © Magnus Landahl - Stockholm 2000 //
9//////////////////////////////////////////////////////////////////////////
10
11#ifndef _BE_DC_H_
12#define _BE_DC_H_
13
14//Messages types
15#define DC_MESSAGE 0
16#define DC_SUCCESS DC_MESSAGE + 1
17#define DC_ERROR DC_MESSAGE + 2
18#define DC_SEPARATOR DC_MESSAGE + 3
19#define DC_CLEAR DC_MESSAGE + 4
20//---------------
21
22//Color defines
23#define DEF_COLOR 0
24#define DC_WHITE DEF_COLOR + 1
25#define DC_BLACK DEF_COLOR + 2
26#define DC_BLUE DEF_COLOR + 3
27#define DC_RED DEF_COLOR + 4
28#define DC_YELLOW DEF_COLOR + 5
29#define DC_GREEN DEF_COLOR + 6
30//---------------
31
32#define BEDC_MESSAGE 'bedc'
33
34#define BEDC_MAIN_TYPE 0
35#define BEDC_BMESSAGE BEDC_MAIN_TYPE + 1
36#define BEDC_PLAIN_MESSAGE BEDC_MAIN_TYPE + 2
37#define BEDC_VER "1.0"
38
39#include <TypeConstants.h>
40#include <SupportDefs.h>
41#include <Messenger.h>
42#include <Message.h>
43#include <String.h>
44#include <string.h>
45#include <stdio.h>
46#include <Point.h>
47#include <Rect.h>
48
49class BeDC
50{
51 ////////////////////////////////////////////////
52 // Public Procedures
53
54 public:
55 BeDC(const char *c_name = "Application", int8 color = DEF_COLOR){
56 name = strdup(c_name);
57 s_color = color;
58 }
59
60 ~BeDC(){
61 delete name;
62 }
63
64 //Send a message
PulkoMandyc25f5422023-04-10 15:22:01 +020065 void SendMessage(const char *text, int8 type = DC_MESSAGE){
PulkoMandya3e9cfe2023-04-10 10:01:36 +020066 BMessage message(BEDC_MESSAGE);
67 message.AddString( "bedc_name", name);
68 message.AddInt8( "bedc_type", type);
69 message.AddString( "bedc_text", text);
70 message.AddInt8( "bedc_color", s_color);
71 message.AddString( "bedc_ver", BEDC_VER);
72 message.AddInt8( "bedc_main_type", BEDC_PLAIN_MESSAGE);
73 SendMessageToApp(&message);
74 }
75 //---------------
76
77 //Send a format string - parameters
78 void SendFormat(const char *text, ...){
79 char buffer[1024];
80 va_list args;
81
82 va_start(args, text);
83 vsprintf(buffer, text, args);
84 va_end(args);
85 SendMessage(buffer, DC_MESSAGE);
86 }
87
88 void SendFormatT(const char *text, int8 type, ...){
89 char buffer[1024];
90 va_list args;
91
92 va_start(args, type);
93 vsprintf(buffer, text, args);
94 va_end(args);
95 SendMessage(buffer, type);
96 }
97 //---------------
98
99 //Dump a BMessage
100 void DumpBMessage(BMessage *Message, const char *desc = "", int8 type = DC_MESSAGE){
101 Message->AddInt32( "bedc_what", Message->what);
102 Message->AddInt8( "bedc_main_type", BEDC_BMESSAGE);
103
104 Message->AddInt8( "bedc_type", type);
105 Message->AddString( "bedc_name", name);
106 Message->AddString( "bedc_desc", desc);
107 Message->AddInt8( "bedc_color",s_color);
108 Message->AddString( "bedc_ver", BEDC_VER);
109
110 Message->what = BEDC_MESSAGE;
111 SendMessageToApp(Message);
112 }
113 //---------------
114
115 //Send a separator (Add a separator)
116 void AddSeparator(){
117 SendMessage("Separator", DC_SEPARATOR);
118 }
119 //---------------
120
121 //Send a clear message (Clear the window that is online)
122 void Clear(){
123 SendMessage("Clear", DC_CLEAR);
124 }
125 //---------------
126
127 //Send an Int32
128 void SendInt( int32 integer, const char *desc = NULL, int8 type = DC_MESSAGE){
129 str.SetTo("");
130 if (desc != NULL) str << desc; else
131 str << "Integer: ";
132 str << integer;
133 SendMessage((char *)str.String(),type);
134 }
135 //---------------
136
137 //Send an Int64
138 void SendInt( int64 integer, const char *desc = NULL, int8 type = DC_MESSAGE){
139 str.SetTo("");
140 if (desc != NULL) str << desc; else
141 str << "Integer: ";
142 str << integer;
143 SendMessage((char *)str.String(),type);
144 }
145 //---------------
146
147 //Send a BPoint
148 void SendPoint( BPoint point, const char *desc = NULL, int8 type = DC_MESSAGE){
149 str.SetTo("");
150 if (desc != NULL) str << desc; else
151 str << "Point: ";
152 str << "X = " << point.x << " Y = " << point.y;
153 SendMessage((char *)str.String(),type);
154 }
155 //---------------
156
157 //Send a BRect
158 void SendRect( BRect rect, const char *desc = NULL, int8 type = DC_MESSAGE){
159 str.SetTo("");
160 if (desc != NULL) str << desc; else
161 str << "Rectangle: ";
162 str << "Left = " << rect.left << " Top = " << rect.top
163 << " Right = " << rect.right << " Bottom = " << rect.bottom;
164 SendMessage((char *)str.String(),type);
165 }
166 //---------------
167
168 ////////////////////////////////////////////
169 // Private Data
170 private:
171 char *name;
172 int8 s_color;
173 BString str;
174
175 void SendMessageToApp(BMessage *Msg){
176 BMessenger messenger("application/x-vnd.ml-BeDCApp");
177 if (messenger.IsValid()) messenger.SendMessage(Msg);
178 }
179};
180
181#endif