| |
| // BeDC.h // |
| // The header file to use with BeDC // |
| // // |
| // Written By: Magnus Landahl // |
| // E-Mail: magnus.landahl@swipnet.se // |
| // // |
| // Copyright © Magnus Landahl - Stockholm 2000 // |
| ////////////////////////////////////////////////////////////////////////// |
| |
| #ifndef _BE_DC_H_ |
| #define _BE_DC_H_ |
| |
| //Messages types |
| #define DC_MESSAGE 0 |
| #define DC_SUCCESS DC_MESSAGE + 1 |
| #define DC_ERROR DC_MESSAGE + 2 |
| #define DC_SEPARATOR DC_MESSAGE + 3 |
| #define DC_CLEAR DC_MESSAGE + 4 |
| //--------------- |
| |
| //Color defines |
| #define DEF_COLOR 0 |
| #define DC_WHITE DEF_COLOR + 1 |
| #define DC_BLACK DEF_COLOR + 2 |
| #define DC_BLUE DEF_COLOR + 3 |
| #define DC_RED DEF_COLOR + 4 |
| #define DC_YELLOW DEF_COLOR + 5 |
| #define DC_GREEN DEF_COLOR + 6 |
| //--------------- |
| |
| #define BEDC_MESSAGE 'bedc' |
| |
| #define BEDC_MAIN_TYPE 0 |
| #define BEDC_BMESSAGE BEDC_MAIN_TYPE + 1 |
| #define BEDC_PLAIN_MESSAGE BEDC_MAIN_TYPE + 2 |
| #define BEDC_VER "1.0" |
| |
| #include <TypeConstants.h> |
| #include <SupportDefs.h> |
| #include <Messenger.h> |
| #include <Message.h> |
| #include <String.h> |
| #include <string.h> |
| #include <stdio.h> |
| #include <Point.h> |
| #include <Rect.h> |
| |
| class BeDC |
| { |
| //////////////////////////////////////////////// |
| // Public Procedures |
| |
| public: |
| BeDC(const char *c_name = "Application", int8 color = DEF_COLOR){ |
| name = strdup(c_name); |
| s_color = color; |
| } |
| |
| ~BeDC(){ |
| delete name; |
| } |
| |
| //Send a message |
| void SendMessage(const char *text, int8 type = DC_MESSAGE){ |
| BMessage message(BEDC_MESSAGE); |
| message.AddString( "bedc_name", name); |
| message.AddInt8( "bedc_type", type); |
| message.AddString( "bedc_text", text); |
| message.AddInt8( "bedc_color", s_color); |
| message.AddString( "bedc_ver", BEDC_VER); |
| message.AddInt8( "bedc_main_type", BEDC_PLAIN_MESSAGE); |
| SendMessageToApp(&message); |
| } |
| //--------------- |
| |
| //Send a format string - parameters |
| void SendFormat(const char *text, ...) __attribute__((format(printf, 2, 3))) { |
| BString str; |
| |
| va_list args; |
| va_start(args, text); |
| str.SetToFormatVarArgs(text, args); |
| va_end(args); |
| |
| SendMessage(str.String(), DC_MESSAGE); |
| } |
| |
| void SendFormatV(const char *text, va_list args) __attribute__((format(printf, 2, 0))) { |
| BString str; |
| va_list copyOfArgs; |
| va_copy(copyOfArgs, args); |
| str.SetToFormatVarArgs(text, args); |
| va_end(copyOfArgs); |
| SendMessage(str.String(), DC_MESSAGE); |
| } |
| |
| void SendFormatT(const char *text, int8 type, ...) __attribute__((format(printf, 2, 4))) { |
| char buffer[1024]; |
| va_list args; |
| |
| va_start(args, type); |
| vsprintf(buffer, text, args); |
| va_end(args); |
| SendMessage(buffer, type); |
| } |
| //--------------- |
| |
| //Dump a BMessage |
| void DumpBMessage(BMessage *Message, const char *desc = "", int8 type = DC_MESSAGE){ |
| Message->AddInt32( "bedc_what", Message->what); |
| Message->AddInt8( "bedc_main_type", BEDC_BMESSAGE); |
| |
| Message->AddInt8( "bedc_type", type); |
| Message->AddString( "bedc_name", name); |
| Message->AddString( "bedc_desc", desc); |
| Message->AddInt8( "bedc_color",s_color); |
| Message->AddString( "bedc_ver", BEDC_VER); |
| |
| Message->what = BEDC_MESSAGE; |
| SendMessageToApp(Message); |
| } |
| //--------------- |
| |
| //Send a separator (Add a separator) |
| void AddSeparator(){ |
| SendMessage("Separator", DC_SEPARATOR); |
| } |
| //--------------- |
| |
| //Send a clear message (Clear the window that is online) |
| void Clear(){ |
| SendMessage("Clear", DC_CLEAR); |
| } |
| //--------------- |
| |
| //Send an Int32 |
| void SendInt( int32 integer, const char *desc = NULL, int8 type = DC_MESSAGE){ |
| str.SetTo(""); |
| if (desc != NULL) str << desc; else |
| str << "Integer: "; |
| str << integer; |
| SendMessage((char *)str.String(),type); |
| } |
| //--------------- |
| |
| //Send an Int64 |
| void SendInt( int64 integer, const char *desc = NULL, int8 type = DC_MESSAGE){ |
| str.SetTo(""); |
| if (desc != NULL) str << desc; else |
| str << "Integer: "; |
| str << integer; |
| SendMessage((char *)str.String(),type); |
| } |
| //--------------- |
| |
| //Send a BPoint |
| void SendPoint( BPoint point, const char *desc = NULL, int8 type = DC_MESSAGE){ |
| str.SetTo(""); |
| if (desc != NULL) str << desc; else |
| str << "Point: "; |
| str << "X = " << point.x << " Y = " << point.y; |
| SendMessage((char *)str.String(),type); |
| } |
| //--------------- |
| |
| //Send a BRect |
| void SendRect( BRect rect, const char *desc = NULL, int8 type = DC_MESSAGE){ |
| str.SetTo(""); |
| if (desc != NULL) str << desc; else |
| str << "Rectangle: "; |
| str << "Left = " << rect.left << " Top = " << rect.top |
| << " Right = " << rect.right << " Bottom = " << rect.bottom; |
| SendMessage((char *)str.String(),type); |
| } |
| //--------------- |
| |
| //////////////////////////////////////////// |
| // Private Data |
| private: |
| char *name; |
| int8 s_color; |
| BString str; |
| |
| void SendMessageToApp(BMessage *Msg){ |
| BMessenger messenger("application/x-vnd.ml-BeDCApp"); |
| if (messenger.IsValid()) messenger.SendMessage(Msg); |
| } |
| }; |
| |
| #endif |