home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / cmd / xfe / XfeWidgets / Xfe / PrimitiveP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  20.3 KB  |  453 lines

  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18. /*-----------------------------------------*/
  19. /*                                                                        */
  20. /* Name:        <Xfe/PrimitiveP.h>                                        */
  21. /* Description:    XfePrimitive widget private header file.                */
  22. /* Author:        Ramiro Estrugo <ramiro@netscape.com>                    */
  23. /*                                                                        */
  24. /*----------------------------------------------------------------------*/
  25.  
  26.  
  27. #ifndef _XfePrimitiveP_h_                        /* start PrimitiveP.h    */
  28. #define _XfePrimitiveP_h_
  29.  
  30. #include <Xfe/XfeP.h>
  31. #include <Xfe/Primitive.h>
  32. #include <Xfe/PrepareP.h>
  33. #include <Xm/PrimitiveP.h>
  34. #include <Xm/DrawP.h>
  35.  
  36. #ifdef __cplusplus                                /* start C++            */
  37. extern "C" {
  38. #endif
  39.     
  40. /*----------------------------------------------------------------------*/
  41. /*                                                                        */
  42. /* XfePrimitiveClassPart                                                */
  43. /*                                                                        */
  44. /*----------------------------------------------------------------------*/
  45. typedef struct
  46. {
  47.     XfeBitGravityType    bit_gravity;            /* bit_gravity            */
  48.     XfeGeometryProc        preferred_geometry;        /* preferred_geometry    */
  49.     XfeGeometryProc        minimum_geometry;        /* minimum_geometry        */
  50.     XtWidgetProc        update_rect;            /* update_rect            */
  51.     XfePrepareProc        prepare_components;        /* prepare_components    */
  52.     XtWidgetProc        layout_components;        /* layout_components    */
  53.     XfeExposeProc        draw_background;        /* draw_background        */
  54.     XfeExposeProc        draw_shadow;            /* draw_shadow            */
  55.     XfeExposeProc        draw_components;        /* draw_components        */
  56.     XtPointer            extension;                /* extension            */
  57. } XfePrimitiveClassPart;
  58.  
  59. /*----------------------------------------------------------------------*/
  60. /*                                                                        */
  61. /* XfePrimitiveClassRec                                                    */
  62. /*                                                                        */
  63. /*----------------------------------------------------------------------*/
  64. typedef struct _XfePrimitiveClassRec
  65. {
  66.     CoreClassPart            core_class;
  67.     XmPrimitiveClassPart    primitive_class;
  68.     XfePrimitiveClassPart    xfe_primitive_class;
  69. } XfePrimitiveClassRec;
  70.  
  71. externalref XfePrimitiveClassRec xfePrimitiveClassRec;
  72.  
  73. /*----------------------------------------------------------------------*/
  74. /*                                                                        */
  75. /* XfePrimitivePart                                                        */
  76. /*                                                                        */
  77. /*----------------------------------------------------------------------*/
  78. typedef struct _XfePrimitivePart
  79. {
  80.     /* Callback Resources */
  81.     XtCallbackList        enter_callback;            /* Pointer Enter        */
  82.     XtCallbackList        focus_callback;            /* Keyboard Focus        */
  83.     XtCallbackList        leave_callback;            /* Pointer Leave        */
  84.     XtCallbackList        resize_callback;        /* Widget Resize        */
  85.     
  86.     /* Cursor resources */
  87.     Cursor                cursor;                    /* Cursor                */
  88.  
  89.     /* Appearance resources */
  90.     unsigned char        shadow_type;            /* Shadow Type            */
  91.     unsigned char        buffer_type;            /* Buffer Type            */
  92.     Boolean                pretend_sensitive;        /* Pretend Sensitive    */
  93.     
  94.     /* Geometry resources */
  95.     Boolean                use_preferred_width;    /* Use preferred width    */
  96.     Boolean                use_preferred_height;    /* Use preferred height    */
  97.     Dimension            margin_left;            /* Margin Left            */
  98.     Dimension            margin_right;            /* Margin Right            */
  99.     Dimension            margin_top;                /* Margin Top            */
  100.     Dimension            margin_bottom;            /* Margin Bottom        */
  101.  
  102.     /* For c++ usage */
  103.     XtPointer            instance_pointer;        /* Instance pointer        */
  104.  
  105.     /* Read Only Resources */
  106.     Boolean                pointer_inside;            /* Pointer in Window    */
  107.     Dimension            preferred_width;        /* Preferred Width        */
  108.     Dimension            preferred_height;        /* Preferred Height        */
  109.     
  110.     /* Private Data Members */
  111.     int                    config_flags;            /* Config Flags            */
  112.     int                    prepare_flags;            /* Prepare Flags        */
  113.     XRectangle            widget_rect;            /* Widget Rect            */
  114.     GC                    background_GC;            /* Background GC        */
  115.     Pixmap                buffer_pixmap;            /* Buffer pixmap        */
  116. } XfePrimitivePart;
  117.  
  118. /*----------------------------------------------------------------------*/
  119. /*                                                                        */
  120. /* XfePrimitiveRec                                                        */
  121. /*                                                                        */
  122. /*----------------------------------------------------------------------*/
  123. typedef struct _XfePrimitiveRec
  124. {
  125.     CorePart            core;                    /* Core Part            */
  126.     XmPrimitivePart        primitive;                /* XmPrimitive Part        */
  127.     XfePrimitivePart    xfe_primitive;            /* XfePrimitive Part    */
  128. } XfePrimitiveRec;
  129.  
  130. /*----------------------------------------------------------------------*/
  131. /*                                                                        */
  132. /* XmPrimitive Method invocation functions                                */
  133. /*                                                                        */
  134. /*----------------------------------------------------------------------*/
  135. extern void
  136. _XfePrimitiveBorderHighlight        (Widget            w);
  137. /*----------------------------------------------------------------------*/
  138. extern void
  139. _XfePrimitiveBorderUnhighlight        (Widget            w);
  140. /*----------------------------------------------------------------------*/
  141.  
  142. /*----------------------------------------------------------------------*/
  143. /*                                                                        */
  144. /* XfePrimitive Method invocation functions                                */
  145. /*                                                                        */
  146. /*----------------------------------------------------------------------*/
  147. extern void
  148. _XfePrimitiveChainInitialize        (Widget            rw,
  149.                                      Widget            nw,
  150.                                      WidgetClass    wc);
  151. /*----------------------------------------------------------------------*/
  152. extern Boolean
  153. _XfePrimitiveChainSetValues            (Widget            ow,
  154.                                      Widget            rw,
  155.                                      Widget            nw,
  156.                                      WidgetClass    wc);
  157. /*----------------------------------------------------------------------*/
  158. extern void
  159. _XfePrimitivePreferredGeometry        (Widget            w,
  160.                                      Dimension *    width,
  161.                                      Dimension *    height);
  162. /*----------------------------------------------------------------------*/
  163. extern void
  164. _XfePrimitiveUpdateRect                (Widget            w);
  165. /*----------------------------------------------------------------------*/
  166. extern void
  167. _XfePrimitivePrepareComponents        (Widget            w,
  168.                                      int            flags);
  169. /*----------------------------------------------------------------------*/
  170. extern void
  171. _XfePrimitiveLayoutComponents        (Widget            w);
  172. /*----------------------------------------------------------------------*/
  173. extern void
  174. _XfePrimitiveDrawBackground            (Widget            w,
  175.                                      XEvent *        event,
  176.                                      Region            region,
  177.                                      XRectangle *    clip_rect);
  178. /*----------------------------------------------------------------------*/
  179. extern void
  180. _XfePrimitiveDrawComponents            (Widget            w,
  181.                                      XEvent *        event,
  182.                                      Region            region,
  183.                                      XRectangle *    clip_rect);
  184. /*----------------------------------------------------------------------*/
  185. extern void
  186. _XfePrimitiveDrawShadow                (Widget            w,
  187.                                      XEvent *        event,
  188.                                      Region            region,
  189.                                      XRectangle *    clip_rect);
  190. /*----------------------------------------------------------------------*/
  191. extern Drawable
  192. _XfePrimitiveDrawable                (Widget            w);
  193. /*----------------------------------------------------------------------*/
  194. extern void
  195. _XfePrimitiveDrawEverything            (Widget            w,
  196.                                      XEvent *        event,
  197.                                      Region            region);
  198. /*----------------------------------------------------------------------*/
  199. extern void
  200. _XfePrimitiveDrawBuffer                (Widget            w,
  201.                                      XEvent *        event,
  202.                                      Region            region);
  203. /*----------------------------------------------------------------------*/
  204.  
  205.  
  206. /*----------------------------------------------------------------------*/
  207. /*                                                                        */
  208. /* Private XfePrimitive functions                                        */
  209. /*                                                                        */
  210. /*----------------------------------------------------------------------*/
  211. extern void
  212. _XfePrimitiveClearBackground        (Widget            w);
  213. /*----------------------------------------------------------------------*/
  214. extern void
  215. _XfePrimitiveAllocateBackgroundGC    (Widget            w);
  216. /*----------------------------------------------------------------------*/
  217. extern void
  218. _XfePrimitiveReleaseBackgroundGC    (Widget            w);
  219. /*----------------------------------------------------------------------*/
  220.  
  221. /*----------------------------------------------------------------------*/
  222. /*                                                                        */
  223. /* XfePrimitive Action Procedures                                        */
  224. /*                                                                        */
  225. /*----------------------------------------------------------------------*/
  226. extern void
  227. _XfePrimitiveEnter                    (Widget,XEvent *,char **,Cardinal *);
  228. /*----------------------------------------------------------------------*/
  229. extern void
  230. _XfePrimitiveLeave                    (Widget,XEvent *,char **,Cardinal *);
  231. /*----------------------------------------------------------------------*/
  232. extern void
  233. _XfePrimitiveFocus                    (Widget,XEvent *,char **,Cardinal *);
  234. /*----------------------------------------------------------------------*/
  235.  
  236. /*----------------------------------------------------------------------*/
  237. /*                                                                        */
  238. /* XfePrimitiveWidgetClass bit_gravity access macro                        */
  239. /*                                                                        */
  240. /*----------------------------------------------------------------------*/
  241. #define _XfePrimitiveAccessBitGravity(w) \
  242. (((XfePrimitiveWidgetClass) XtClass(w))->xfe_primitive_class.bit_gravity)
  243.  
  244. /*----------------------------------------------------------------------*/
  245. /*                                                                        */
  246. /* XfePrimitive resource access macros                                    */
  247. /*                                                                        */
  248. /*----------------------------------------------------------------------*/
  249. #define _XfeCursor(w) \
  250. (((XfePrimitiveWidget) (w))->xfe_primitive . cursor)
  251. /*----------------------------------------------------------------------*/
  252. #define _XfeEnterCallbacks(w) \
  253. (((XfePrimitiveWidget) (w))->xfe_primitive . enter_callback)
  254. /*----------------------------------------------------------------------*/
  255. #define _XfeExposeCallbacks(w) \
  256. (((XfePrimitiveWidget) (w))->xfe_primitive . expose_callback)
  257. /*----------------------------------------------------------------------*/
  258. #define _XfeFocusCallbacks(w) \
  259. (((XfePrimitiveWidget) (w))->xfe_primitive . focus_callback)
  260. /*----------------------------------------------------------------------*/
  261. #define _XfeLeaveCallbacks(w) \
  262. (((XfePrimitiveWidget) (w))->xfe_primitive . leave_callback)
  263. /*----------------------------------------------------------------------*/
  264. #define _XfeResizeCallbacks(w) \
  265. (((XfePrimitiveWidget) (w))->xfe_primitive . resize_callback)
  266. /*----------------------------------------------------------------------*/
  267. #define _XfeUsePreferredHeight(w) \
  268. (((XfePrimitiveWidget) (w))->xfe_primitive . use_preferred_height)
  269. /*----------------------------------------------------------------------*/
  270. #define _XfeUsePreferredWidth(w) \
  271. (((XfePrimitiveWidget) (w))->xfe_primitive . use_preferred_width)
  272. /*----------------------------------------------------------------------*/
  273. #define _XfeShadowType(w) \
  274. (((XfePrimitiveWidget) (w))->xfe_primitive . shadow_type)
  275. /*----------------------------------------------------------------------*/
  276. #define _XfeBufferType(w) \
  277. (((XfePrimitiveWidget) (w))->xfe_primitive . buffer_type)
  278. /*----------------------------------------------------------------------*/
  279. #define _XfeBufferPixmap(w) \
  280. (((XfePrimitiveWidget) (w))->xfe_primitive . buffer_pixmap)
  281. /*----------------------------------------------------------------------*/
  282. #define _XfeMarginLeft(w) \
  283. (((XfePrimitiveWidget) (w))->xfe_primitive . margin_left)
  284. /*----------------------------------------------------------------------*/
  285. #define _XfeMarginRight(w) \
  286. (((XfePrimitiveWidget) (w))->xfe_primitive . margin_right)
  287. /*----------------------------------------------------------------------*/
  288. #define _XfeMarginTop(w) \
  289. (((XfePrimitiveWidget) (w))->xfe_primitive . margin_top)
  290. /*----------------------------------------------------------------------*/
  291. #define _XfeMarginBottom(w) \
  292. (((XfePrimitiveWidget) (w))->xfe_primitive . margin_bottom)
  293. /*----------------------------------------------------------------------*/
  294. #define _XfePretendSensitive(w) \
  295. (((XfePrimitiveWidget) (w))->xfe_primitive . pretend_sensitive)
  296. /*----------------------------------------------------------------------*/
  297. #define _XfeInstancePointer(w) \
  298. (((XfePrimitiveWidget) (w))->xfe_primitive . instance_pointer)
  299. /*----------------------------------------------------------------------*/
  300.  
  301. /*----------------------------------------------------------------------*/
  302. /*                                                                        */
  303. /* XfePrimitive private member access macros                            */
  304. /*                                                                        */
  305. /*----------------------------------------------------------------------*/
  306. #define _XfeConfigFlags(w) \
  307. (((XfePrimitiveWidget) (w))->xfe_primitive . config_flags)
  308. /*----------------------------------------------------------------------*/
  309. #define _XfePrepareFlags(w) \
  310. (((XfePrimitiveWidget) (w))->xfe_primitive . prepare_flags)
  311. /*----------------------------------------------------------------------*/
  312. #define _XfePointerInside(w) \
  313. (((XfePrimitiveWidget) (w))->xfe_primitive . pointer_inside)
  314. /*----------------------------------------------------------------------*/
  315. #define _XfeWidgetRect(w) \
  316. (((XfePrimitiveWidget) (w))->xfe_primitive . widget_rect)
  317. /*----------------------------------------------------------------------*/
  318. #define _XfeBackgroundGC(w) \
  319. (((XfePrimitiveWidget) (w))->xfe_primitive . background_GC)
  320. /*----------------------------------------------------------------------*/
  321. #define _XfePointerInside(w) \
  322. (((XfePrimitiveWidget) (w))->xfe_primitive . pointer_inside)
  323. /*----------------------------------------------------------------------*/
  324. #define _XfePreferredHeight(w) \
  325. (((XfePrimitiveWidget) (w))->xfe_primitive . preferred_height)
  326. /*----------------------------------------------------------------------*/
  327. #define _XfePreferredWidth(w) \
  328. (((XfePrimitiveWidget) (w))->xfe_primitive . preferred_width)
  329. /*----------------------------------------------------------------------*/
  330.  
  331. /*----------------------------------------------------------------------*/
  332. /*                                                                        */
  333. /* Xm Primitive member access                                            */
  334. /*                                                                        */
  335. /*----------------------------------------------------------------------*/
  336. #define _XfeBottomShadowColor(w) \
  337. (((XmPrimitiveWidget) (w))->primitive . bottom_shadow_color)
  338. /*----------------------------------------------------------------------*/
  339. #define _XfeBottomShadowGC(w) \
  340. (((XmPrimitiveWidget) (w))->primitive . bottom_shadow_GC)
  341. /*----------------------------------------------------------------------*/
  342. #define _XfeBottomShadowPixmap(w) \
  343. (((XmPrimitiveWidget) (w))->primitive . bottom_shadow_pixmap)
  344. /*----------------------------------------------------------------------*/
  345. #define _XfeConvertCallback(w) \
  346. (((XmPrimitiveWidget) (w))->primitive . convert_callback)
  347. /*----------------------------------------------------------------------*/
  348. #define _XfeForeground(w) \
  349. (((XmPrimitiveWidget) (w))->primitive . foreground)
  350. /*----------------------------------------------------------------------*/
  351. #define _XfeHaveTraversal(w) \
  352. (((XmPrimitiveWidget) (w))->primitive . have_traversal)
  353. /*----------------------------------------------------------------------*/
  354. #define _XfeHelpCallback(w) \
  355. (((XmPrimitiveWidget) (w))->primitive . help_callback)
  356. /*----------------------------------------------------------------------*/
  357. #define _XfeHighlightColor(w) \
  358. (((XmPrimitiveWidget) (w))->primitive . highlight_color)
  359. /*----------------------------------------------------------------------*/
  360. #define _XfeHighlightDrawn(w) \
  361. (((XmPrimitiveWidget) (w))->primitive . highlight_drawn)
  362. /*----------------------------------------------------------------------*/
  363. #define _XfeHighlightGC(w) \
  364. (((XmPrimitiveWidget) (w))->primitive . highlight_GC)
  365. /*----------------------------------------------------------------------*/
  366. #define _XfeHighlightOn_Enter(w) \
  367. (((XmPrimitiveWidget) (w))->primitive . highlight_on_enter)
  368. /*----------------------------------------------------------------------*/
  369. #define _XfeHighlightPixmap(w) \
  370. (((XmPrimitiveWidget) (w))->primitive . highlight_pixmap)
  371. /*----------------------------------------------------------------------*/
  372. #define _XfeHighlightThickness(w) \
  373. (((XmPrimitiveWidget) (w))->primitive . highlight_thickness)
  374. /*----------------------------------------------------------------------*/
  375. #define _XfeHighlighted(w) \
  376. (((XmPrimitiveWidget) (w))->primitive . highlighted)
  377. /*----------------------------------------------------------------------*/
  378. #define _XfeLayoutDirection(w) \
  379. (((XmPrimitiveWidget) (w))->primitive . layout_direction)
  380. /*----------------------------------------------------------------------*/
  381. #define _XfeNavigationYype(w) \
  382. (((XmPrimitiveWidget) (w))->primitive . navigation_type)
  383. /*----------------------------------------------------------------------*/
  384. #define _XfePopupHandlerCallback(w) \
  385. (((XmPrimitiveWidget) (w))->primitive . popup_handler_callback)
  386. /*----------------------------------------------------------------------*/
  387. #define _XfeShadowThickness(w) \
  388. (((XmPrimitiveWidget) (w))->primitive . shadow_thickness)
  389. /*----------------------------------------------------------------------*/
  390. #define _XfeTopShadowColor(w) \
  391. (((XmPrimitiveWidget) (w))->primitive . top_shadow_color)
  392. /*----------------------------------------------------------------------*/
  393. #define _XfeTopShadowGC(w) \
  394. (((XmPrimitiveWidget) (w))->primitive . top_shadow_GC)
  395. /*----------------------------------------------------------------------*/
  396. #define _XfeTopShadowPixmap(w) \
  397. (((XmPrimitiveWidget) (w))->primitive . top_shadow_pixmap)
  398. /*----------------------------------------------------------------------*/
  399. #define _XfeTraversalOn(w) \
  400. (((XmPrimitiveWidget) (w))->primitive . traversal_on)
  401. /*----------------------------------------------------------------------*/
  402. #define _XfeUnitType(w) \
  403. (((XmPrimitiveWidget) (w))->primitive . unit_type)
  404. /*----------------------------------------------------------------------*/
  405. #define _XfeUserData(w) \
  406. (((XmPrimitiveWidget) (w))->primitive . user_data)
  407. /*----------------------------------------------------------------------*/
  408.  
  409. /*----------------------------------------------------------------------*/
  410. /*                                                                        */
  411. /* XmPrimitive offset.  highlight_thickness + shadow_thickness            */
  412. /*                                                                        */
  413. /*----------------------------------------------------------------------*/
  414. #define _XfePrimitiveOffset(w) \
  415. (_XfeHighlightThickness(w) + _XfeShadowThickness(w))
  416.  
  417. /*----------------------------------------------------------------------*/
  418. /*                                                                        */
  419. /* XfePrimitive misc access macros                                        */
  420. /*                                                                        */
  421. /*----------------------------------------------------------------------*/
  422. #define _XfeOffsetLeft(w)        (_XfePrimitiveOffset(w) + _XfeMarginLeft(w))
  423. #define _XfeOffsetRight(w)        (_XfePrimitiveOffset(w) + _XfeMarginRight(w))
  424. #define _XfeOffsetTop(w)        (_XfePrimitiveOffset(w) + _XfeMarginTop(w))
  425. #define _XfeOffsetBottom(w)        (_XfePrimitiveOffset(w) + _XfeMarginBottom(w))
  426. #define _XfeRectHeight(w)        (_XfeWidgetRect(w) . height)
  427. #define _XfeRectWidth(w)        (_XfeWidgetRect(w) . width)
  428. #define _XfeRectX(w)            (_XfeWidgetRect(w) . x)
  429. #define _XfeRectY(w)            (_XfeWidgetRect(w) . y)
  430.  
  431. /*----------------------------------------------------------------------*/
  432. /*                                                                        */
  433. /* XfePrimitive sensitivity check                                        */
  434. /*                                                                        */
  435. /*----------------------------------------------------------------------*/
  436. #define _XfeIsSensitive(w) (_XfePretendSensitive(w) && _XfeSensitive(w))
  437. /*----------------------------------------------------------------------*/
  438.  
  439. /*----------------------------------------------------------------------*/
  440. /*                                                                        */
  441. /* XfePrimitive default dimensions                                        */
  442. /*                                                                        */
  443. /*----------------------------------------------------------------------*/
  444. #define XfePRIMITIVE_DEFAULT_WIDTH    2
  445. #define XfePRIMITIVE_DEFAULT_HEIGHT    2
  446. /*----------------------------------------------------------------------*/
  447.  
  448. #ifdef __cplusplus                                /* end C++                */
  449. }
  450. #endif
  451.  
  452. #endif                                            /* end PrimitiveP.h        */
  453.