Frameworks/libpurple.framework/Versions/0.6.2/Headers/yahoo_doodle.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1739 Frameworks/libpurple.framework/Versions/0.6.0/Headers/yahoo_doodle.h@8b0daad9656c
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file yahoo_doodle.h The Yahoo! protocol plugin Doodle IMVironment object
Evan@653
     3
 *
Evan@653
     4
 * purple
Evan@653
     5
 *
Evan@653
     6
 * Purple is the legal property of its developers, whose names are too numerous
Evan@653
     7
 * to list here.  Please refer to the COPYRIGHT file distributed with this
Evan@653
     8
 * source distribution.
Evan@653
     9
 *
Evan@653
    10
 * This program is free software; you can redistribute it and/or modify
Evan@653
    11
 * it under the terms of the GNU General Public License as published by
Evan@653
    12
 * the Free Software Foundation; either version 2 of the License, or
Evan@653
    13
 * (at your option) any later version.
Evan@653
    14
 *
Evan@653
    15
 * This program is distributed in the hope that it will be useful,
Evan@653
    16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Evan@653
    18
 * GNU General Public License for more details.
Evan@653
    19
 *
Evan@653
    20
 * You should have received a copy of the GNU General Public License
Evan@653
    21
 * along with this program; if not, write to the Free Software
Evan@653
    22
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
Evan@653
    23
 */
Evan@653
    24
Evan@653
    25
#ifndef _YAHOO_DOODLE_H_
Evan@653
    26
#define _YAHOO_DOODLE_H_
Evan@653
    27
Evan@653
    28
/******************************************************************************
Evan@653
    29
 * Includes
Evan@653
    30
 *****************************************************************************/
Evan@653
    31
#include "whiteboard.h"
Evan@653
    32
#include "cmds.h"
Evan@653
    33
Evan@653
    34
#define DOODLE_IMV_KEY "doodle;106"
Evan@653
    35
Evan@653
    36
/******************************************************************************
Evan@653
    37
 * Defines
Evan@653
    38
 *****************************************************************************/
Evan@653
    39
/* Doodle communication commands */
Evan@653
    40
/* TODO: Should be an enum. */
Evan@653
    41
#define DOODLE_CMD_REQUEST	0
Evan@653
    42
#define DOODLE_CMD_CLEAR	1
Evan@653
    43
#define DOODLE_CMD_DRAW		2
Evan@653
    44
#define DOODLE_CMD_EXTRA	3
Evan@653
    45
#define DOODLE_CMD_READY	4
Evan@653
    46
#define DOODLE_CMD_CONFIRM	5
Evan@653
    47
/* Doodle communication command for shutting down (also 0) */
Evan@653
    48
#define DOODLE_CMD_SHUTDOWN 0
Evan@653
    49
Evan@653
    50
#define DOODLE_EXTRA_NONE      "\"1\""
Evan@653
    51
#define DOODLE_EXTRA_TICTACTOE "\"3\""
Evan@653
    52
#define DOODLE_EXTRA_DOTS      "\"2\""
Evan@653
    53
Evan@653
    54
/* Doodle session states */
Evan@653
    55
/* TODO: Should be an enum. */
Evan@653
    56
#define DOODLE_STATE_REQUESTING  0
Evan@653
    57
#define DOODLE_STATE_REQUESTED   1
Evan@653
    58
#define DOODLE_STATE_ESTABLISHED 2
Evan@653
    59
#define DOODLE_STATE_CANCELED    3
Evan@653
    60
Evan@653
    61
/* Doodle canvas dimensions */
Evan@653
    62
#define DOODLE_CANVAS_WIDTH  368
Evan@653
    63
#define DOODLE_CANVAS_HEIGHT 256
Evan@653
    64
Evan@653
    65
/* Doodle color codes (most likely RGB) */
Evan@653
    66
/* TODO: Should be an enum and sorted by color name. */
Evan@653
    67
#define	DOODLE_COLOR_RED    13369344
Evan@653
    68
#define	DOODLE_COLOR_ORANGE 16737792
Evan@653
    69
#define	DOODLE_COLOR_YELLOW 15658496
Evan@653
    70
#define	DOODLE_COLOR_GREEN     52224
Evan@653
    71
#define	DOODLE_COLOR_CYAN      52428
Evan@653
    72
#define	DOODLE_COLOR_BLUE        204
Evan@653
    73
#define	DOODLE_COLOR_VIOLET  5381277
Evan@653
    74
#define	DOODLE_COLOR_PURPLE 13369548
Evan@653
    75
#define	DOODLE_COLOR_TAN    12093547
Evan@653
    76
#define	DOODLE_COLOR_BROWN   5256485
Evan@653
    77
#define	DOODLE_COLOR_BLACK         0
Evan@653
    78
#define	DOODLE_COLOR_GREY   11184810
Evan@653
    79
#define	DOODLE_COLOR_WHITE  16777215
Evan@653
    80
Evan@653
    81
#define PALETTE_NUM_OF_COLORS 12
Evan@653
    82
Evan@653
    83
/* Doodle brush sizes (most likely variable) */
Evan@653
    84
#define DOODLE_BRUSH_SMALL   2
Evan@653
    85
#define DOODLE_BRUSH_MEDIUM  5
Evan@653
    86
#define DOODLE_BRUSH_LARGE  10
Evan@653
    87
Evan@653
    88
#define DOODLE_MAX_BRUSH_MOTIONS 100
Evan@653
    89
Evan@653
    90
/******************************************************************************
Evan@653
    91
 * Datatypes
Evan@653
    92
 *****************************************************************************/
Evan@653
    93
typedef struct _doodle_session
Evan@653
    94
{
Evan@653
    95
	int brush_size;  /* Size of drawing brush */
Evan@653
    96
	int brush_color; /* Color of drawing brush */
Evan@653
    97
	gchar *imv_key;
Evan@653
    98
} doodle_session;
Evan@653
    99
Evan@653
   100
/******************************************************************************
Evan@653
   101
 * API
Evan@653
   102
 *****************************************************************************/
Evan@653
   103
Evan@653
   104
PurpleCmdRet yahoo_doodle_purple_cmd_start(PurpleConversation *conv, const char *cmd, char **args,
Evan@653
   105
									   char **error, void *data);
Evan@653
   106
Evan@653
   107
void yahoo_doodle_process(PurpleConnection *gc, const char *me, const char *from,
Evan@653
   108
						  const char *command, const char *message, const char *imv_key);
Evan@653
   109
void yahoo_doodle_initiate(PurpleConnection *gc, const char *to);
Evan@653
   110
Evan@653
   111
void yahoo_doodle_command_got_shutdown(PurpleConnection *gc, const char *from);
Evan@653
   112
Evan@653
   113
void yahoo_doodle_command_send_request(PurpleConnection *gc, const char *to, const char *imv_key);
Evan@653
   114
void yahoo_doodle_command_send_ready(PurpleConnection *gc, const char *to, const char *imv_key);
Evan@653
   115
void yahoo_doodle_command_send_draw(PurpleConnection *gc, const char *to, const char *message, const char *imv_key);
Evan@653
   116
void yahoo_doodle_command_send_clear(PurpleConnection *gc, const char *to, const char *imv_key);
Evan@653
   117
void yahoo_doodle_command_send_extra(PurpleConnection *gc, const char *to, const char *message, const char *imv_key);
Evan@653
   118
void yahoo_doodle_command_send_confirm(PurpleConnection *gc, const char *to, const char *imv_key);
Evan@653
   119
void yahoo_doodle_command_send_shutdown(PurpleConnection *gc, const char *to);
Evan@653
   120
Evan@653
   121
void yahoo_doodle_start(PurpleWhiteboard *wb);
Evan@653
   122
void yahoo_doodle_end(PurpleWhiteboard *wb);
Evan@653
   123
void yahoo_doodle_get_dimensions(const PurpleWhiteboard *wb, int *width, int *height);
Evan@653
   124
void yahoo_doodle_send_draw_list(PurpleWhiteboard *wb, GList *draw_list);
Evan@653
   125
void yahoo_doodle_clear(PurpleWhiteboard *wb);
Evan@653
   126
Evan@653
   127
void yahoo_doodle_draw_stroke(PurpleWhiteboard *wb, GList *draw_list);
Evan@653
   128
void yahoo_doodle_get_brush(const PurpleWhiteboard *wb, int *size, int *color);
Evan@653
   129
void yahoo_doodle_set_brush(PurpleWhiteboard *wb, int size, int color);
Evan@653
   130
Evan@653
   131
#endif /* _YAHOO_DOODLE_H_ */