plugin-setup.h
上传用户:hongyu5696
上传日期:2018-01-22
资源大小:391k
文件大小:8k
源码类别:

PlugIns编程

开发平台:

Unix_Linux

  1. #include "plugin.h"
  2. #include "../config.h"
  3. #include <X11/Xlib.h>
  4. #include <X11/Intrinsic.h>
  5. #include <X11/StringDefs.h>
  6. #include <ctype.h>
  7. #include <stdio.h>
  8. #include <unistd.h>
  9. #include <strings.h>
  10. #ifdef GTK_ENABLED
  11. #include <gdk/gdkx.h>
  12. #include <gtk/gtk.h>
  13. #include <glib.h>
  14. #endif
  15. #ifdef GTK1_ENABLED
  16. #include <gdk/gdk.h>
  17. extern GMutex *gdk_threads_mutex;
  18. #endif
  19. #ifdef DPMSExtension
  20. #include <X11/Xlib.h>
  21. #ifndef DPMS_SERVER
  22. #include <X11/X.h>
  23. #include <X11/Xmd.h>
  24. //#include <X11/extensions/dpms.h>
  25. extern "C" Bool DPMSQueryExtension(Display *, int *, int *);
  26. extern "C" Bool DPMSCapable(Display *);
  27. extern "C" Status DPMSInfo(Display *, CARD16 *, BOOL *);
  28. extern "C" Status DPMSEnable(Display *);
  29. #endif
  30. #endif
  31. #define STATE_RESET 0
  32. #define STATE_NEW 1
  33. #define STATE_HAVEURL 3
  34. #define STATE_WINDOWSET 4
  35. #define STATE_READY 5
  36. #define STATE_QUEUED 6
  37. #define STATE_DOWNLOADING 7
  38. #define STATE_DOWNLOADED_ENOUGH 8
  39. #define STATE_CANCELLED 11
  40. #define STATE_NEWINSTANCE 100
  41. #define STATE_SETUPTHREAD 105
  42. #define STATE_GETTING_PLAYLIST 110
  43. #define STATE_WAITING_FOR_SIGNAL 112
  44. #define STATE_STARTED_PLAYER 115
  45. #define STATE_PLAYLIST_COMPLETE 120
  46. #define STATE_PLAYLIST_NEXT 125
  47. #define STATE_PLAYING 130
  48. #define STATE_PLAY_COMPLETE 140
  49. #define STATE_PLAY_CANCELLED 150
  50. // speed options
  51. #define SPEED_LOW 1
  52. #define SPEED_MED 2
  53. #define SPEED_HIGH 3
  54. // JavaScript Playstates
  55. #define JS_STATE_UNDEFINED  0
  56. #define JS_STATE_STOPPED  1
  57. #define JS_STATE_PAUSED  2
  58. #define JS_STATE_PLAYING 3
  59. #define JS_STATE_SCANFORWARD 4
  60. #define JS_STATE_SCANREVERSE  5
  61. #define JS_STATE_BUFFERING 6
  62. #define JS_STATE_WAITING 7
  63. #define JS_STATE_MEDIAENDED 8
  64. #define JS_STATE_TRANSITIONING  9
  65. #define JS_STATE_READY 10
  66. #define JS_STATE_RECONNECTING 11
  67. // not sure we should just add a state here since the states are from WMP
  68. #define JS_STATE_INITIALIZING   12
  69. // PlayNode Error Codes
  70. #define ERROR_NO_ERROR 0
  71. #define ERROR_NO_STREAM 1
  72. #define ERROR_CODEC_FAILURE ERROR_NO_STREAM << 1
  73. #define ERROR_EXPLICIT_KILL ERROR_NO_STREAM << 2
  74. #define ERROR_PLAYER_INTERRUPTED ERROR_NO_STREAM << 3
  75. #define ERROR_EXECV ERROR_NO_STREAM << 4
  76. #define ERROR_NOT_PLAYLIST ERROR_NO_STREAM << 5
  77. #define ERROR_FILE_NOT_FOUND ERROR_NO_STREAM << 6
  78. #define ERROR_PLAYLIST_EMPTY ERROR_NO_STREAM << 7
  79. #define ERROR_QUIT ERROR_NO_STREAM << 8
  80. #define TRYAGAIN_FALSE  0
  81. #define TRYAGAIN_TRUE  1
  82. #define TRYAGAIN_FALLBACK  2
  83. #ifndef STRUCTURES
  84. #define STRUCTURES
  85. typedef struct area {
  86.     char url[1024]; /* url in smil <area> tag */
  87.     char target[128]; /* target in <area>       */
  88.     int begin; /* begin (seconds)        */
  89.     struct area *next; /* this is linked list    */
  90. } area;
  91. typedef struct lnode {
  92.     char url[1024]; // url to media
  93.     char fname[1024]; // local filename
  94.     int status; // node status
  95.     int retrieved; // set to 1 when media is 100% downloaded
  96.     int play; // set to 1 to play this node
  97.     int speed; // used by QT reference files
  98.     int playlist; // This entry is a playlist file entry 
  99.     int mmsstream; // set to 1 when playlist stream
  100.     int remove; // set to 1 to delete file from disk
  101.     int cancelled; // set to 1 to cancel download of file
  102.     int played; // set to 1 when media play is complete
  103.     int frombutton; // set to 1 when link is called from srcToButton
  104.     long int bytes; // bytes downloaded
  105.     long int totalbytes; // total bytes of file
  106.     long int cachebytes; // low water mark before play begins
  107.     int actual_x, actual_y; // x & y values from media
  108.     int play_x, play_y; // x & y values that media is using
  109.     int copy; // set to 1 if this node is a copy
  110.     FILE *localcache;
  111.     struct area *area;
  112.     struct lnode *next;
  113. } Node;
  114. typedef struct _ThreadData {
  115.     Widget w;
  116.     nsPluginInstance *instance;
  117.     char *argv[50];
  118.     Node *list;
  119. } ThreadData;
  120. typedef struct _PlayResult {
  121. int errorcode;
  122. int tryagain;
  123. int retval;
  124. } PlayResult;
  125. #endif
  126. // function defintions, grouped by source file
  127. #ifndef HAVE_MEMMEM
  128. extern "C" void *memmem(const void *haystack, const size_t haystack_len,
  129.     const void *needle, const size_t needle_len);
  130. #endif
  131. #ifndef HAVE_STRLCPY
  132. extern "C" size_t strlcpy(char *dst, const char *src, size_t siz);
  133. #endif
  134. #ifndef HAVE_STRLCAT
  135. extern "C" size_t strlcat(char *dst, const char *src, size_t siz);
  136. #endif
  137. // plugin-setup.cpp
  138. char *GetMIMEDescription();
  139. NPError GetValue(NPPVariable variable, void *value);
  140. void New(nsPluginInstance * instance, nsPluginCreateData * parameters);
  141. void LoadConfigFile(nsPluginInstance * instance);
  142. // plugin-support.cpp
  143. void lowercase(char string[]);
  144. void unEscapeXML(char *string);
  145. int fexists(char *file);
  146. char *getURLBase(char *url);
  147. char *getURLHostname(char *url);
  148. char *getURLFilename(const char *url);
  149. int isMms(char *url, int nomediacache);
  150. void mmsToHttp(char *dest, char *src);
  151. int sendCommand(nsPluginInstance * instance, char *command);
  152. int URLcmp(const char *url1, const char *url2);
  153. extern void remove_quotes(char *url);
  154. void killdownload(nsPluginInstance * instance);
  155. void fullyQualifyURL(nsPluginInstance * instance, char *initem, char *localitem);
  156. int toolkitOk(NPP instance, int *mozilla_toolkit, int *plugin_toolkit);
  157. #ifdef DPMSExtension
  158. int DPMSIsEnabled(nsPluginInstance * instance);
  159. void DPMSReenable(nsPluginInstance * instance);
  160. #endif
  161. //plugin-list.cpp
  162. void initialize(Node * l);
  163. Node *newNode();
  164. void deleteNode(Node * n);
  165. void copyNode(Node * dest, Node * src);
  166. void deleteList(Node * l);
  167. void insertafter(Node * item, Node * newnode);
  168. void addToList(nsPluginInstance * instance, char *item, Node * parent, int speed);
  169. void addToEnd(Node * l, Node * newnode);
  170. void buildPlaylist(nsPluginInstance * instance, char *file, Node * parent);
  171. void printNode(Node * l);
  172. void printList(Node * l);
  173. //plugin-ui.cpp
  174. void InitPixbufs(nsPluginInstance * instance);
  175. void DrawUI(Widget w, nsPluginInstance * instance, char *message,
  176.     int FullRedraw, int percent);
  177. extern void FreeUI(Display * dpy, nsPluginInstance * instance);
  178. extern void RedrawCB(Widget widget, XtPointer client_data,
  179.      XtPointer call_data);
  180. #ifdef GTK_ENABLED
  181. void play_callback(GtkWidget * widget, GdkEventExpose * event,
  182.    nsPluginInstance * instance);
  183. void pause_callback(GtkWidget * widget, GdkEventExpose * event,
  184.    nsPluginInstance * instance);
  185. void stop_callback(GtkWidget * widget, GdkEventExpose * event,
  186.    nsPluginInstance * instance);
  187. gboolean keyboard_callback(GtkWidget *widget, GdkEventKey *event,
  188.                    nsPluginInstance * instance);
  189. gboolean mouse_callback(GtkWidget *widget, GdkEventButton *event,
  190.                    nsPluginInstance * instance);
  191. gboolean mousenotify_callback(GtkWidget * widget, GdkEventCrossing * event,
  192. nsPluginInstance * instance);
  193. gboolean gtkgui_draw(void *data);
  194. gboolean gtkgui_message(void *data);
  195. gboolean gtkgui_progress(void *data);
  196. gboolean gtkgui_resize(void *data);
  197. gboolean gtkgui_stop(void *data);
  198. gboolean gtkgui_save_enable(void *data);
  199. gboolean gtkgui_drawMediaProgress(void *data);
  200. gboolean gtkgui_refreshbuttonstate(void *data);
  201. gboolean gtkgui_updatebuttons(void *data);
  202. gboolean gtkgui_updatefullscreen(void *data);
  203. gint popup_handler(GtkWidget *widget, GdkEvent *event);
  204. void menuitem_play_callback(GtkMenuItem *menuitem, nsPluginInstance* instance);
  205. void menuitem_pause_callback(GtkMenuItem *menuitem, nsPluginInstance* instance);
  206. void menuitem_stop_callback(GtkMenuItem *menuitem, nsPluginInstance* instance);
  207. void menuitem_showcontrols_callback(GtkCheckMenuItem *menuitem, nsPluginInstance* instance);
  208. void menuitem_fullscreen_callback(GtkCheckMenuItem *menuitem, nsPluginInstance* instance);
  209. void menuitem_save_callback(GtkMenuItem * menuitem, nsPluginInstance * instance);
  210. void menuitem_copy_callback(GtkMenuItem * menuitem, nsPluginInstance * instance);
  211. void menuitem_config_callback(GtkMenuItem * menuitem, nsPluginInstance * instance);
  212. gboolean window_visible(GtkWidget *widget,GdkEvent *event,nsPluginInstance * instance);
  213. gboolean target_hide_callback(GtkWidget *widget, GdkEvent *event, nsPluginInstance *instance);
  214. #endif
  215. int srcToButton(char *url, nsPluginInstance * instance);
  216. //plugin-threads.cpp
  217. void launchPlayerThread(nsPluginInstance * instance);
  218. void signalPlayerThread(nsPluginInstance * instance);
  219. void SetupPlayer(nsPluginInstance * instance, XEvent * event);
  220. void *playPlaylist(void *td);