home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / lib / mariner / src / xploele.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  5.0 KB  |  209 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.    xploele.c --- an API for accessing layout element information.
  20.    Created: Chris Toshok <toshok@netscape.com>, 6-Nov-1997.
  21.  */
  22.  
  23.  
  24. #include "xploele.h"
  25. #include "xpassert.h"
  26.  
  27. void*
  28. XPLO_GetElementFEData(LO_Element *element)
  29. {
  30.   XP_ASSERT(element->type == LO_TEXT
  31.             || element->type == LO_SUBDOC
  32.             || element->type == LO_LINEFEED
  33.             || element->type == LO_HRULE
  34.             || element->type == LO_BULLET
  35.             || element->type == LO_TABLE
  36.             || element->type == LO_CELL
  37.             || element->type == LO_EMBED
  38.             || element->type == LO_JAVA
  39.             || element->type == LO_EDGE);
  40.  
  41.   switch (element->type)
  42.     {
  43.     case LO_TEXT:
  44.       return ((LO_TextStruct*)element)->FE_Data;
  45.     case LO_SUBDOC:
  46.       return ((LO_SubDocStruct*)element)->FE_Data;
  47.     case LO_LINEFEED:
  48.       return ((LO_LinefeedStruct*)element)->FE_Data;
  49.     case LO_HRULE:
  50.       return ((LO_HorizRuleStruct*)element)->FE_Data;
  51.     case LO_BULLET:
  52.       return ((LO_BulletStruct*)element)->FE_Data;
  53.     case LO_TABLE:
  54.       return ((LO_TableStruct*)element)->FE_Data;
  55.     case LO_CELL:
  56.       return ((LO_CellStruct*)element)->FE_Data;
  57.     case LO_EMBED:
  58.       return ((LO_EmbedStruct*)element)->FE_Data;
  59.     case LO_JAVA:
  60.       return ((LO_EmbedStruct*)element)->FE_Data;
  61.     case LO_EDGE:
  62.       return ((LO_EdgeStruct*)element)->FE_Data;
  63.     default:
  64.       return NULL;
  65.     }
  66. }
  67.  
  68. void
  69. XPLO_SetElementFEData(LO_Element *element, void* fe_data)
  70. {
  71.   XP_ASSERT(element->type == LO_TEXT
  72.             || element->type == LO_SUBDOC
  73.             || element->type == LO_LINEFEED
  74.             || element->type == LO_HRULE
  75.             || element->type == LO_BULLET
  76.             || element->type == LO_TABLE
  77.             || element->type == LO_CELL
  78.             || element->type == LO_EMBED
  79.             || element->type == LO_JAVA
  80.             || element->type == LO_EDGE);
  81.  
  82.   switch (element->type)
  83.     {
  84.     case LO_TEXT:
  85.       ((LO_TextStruct*)element)->FE_Data = fe_data;
  86.       break;
  87.     case LO_SUBDOC:
  88.       ((LO_SubDocStruct*)element)->FE_Data = fe_data;
  89.       break;
  90.     case LO_LINEFEED:
  91.       ((LO_LinefeedStruct*)element)->FE_Data = fe_data;
  92.       break;
  93.     case LO_HRULE:
  94.       ((LO_HorizRuleStruct*)element)->FE_Data = fe_data;
  95.       break;
  96.     case LO_BULLET:
  97.       ((LO_BulletStruct*)element)->FE_Data = fe_data;
  98.       break;
  99.     case LO_TABLE:
  100.       ((LO_TableStruct*)element)->FE_Data = fe_data;
  101.       break;
  102.     case LO_CELL:
  103.       ((LO_CellStruct*)element)->FE_Data = fe_data;
  104.       break;
  105.     case LO_EMBED:
  106.       ((LO_EmbedStruct*)element)->FE_Data = fe_data;
  107.       break;
  108.     case LO_JAVA:
  109.       ((LO_EmbedStruct*)element)->FE_Data = fe_data;
  110.       break;
  111.     case LO_EDGE:
  112.       ((LO_EdgeStruct*)element)->FE_Data = fe_data;
  113.       break;
  114.     default:
  115.       break;
  116.     }
  117. }
  118.  
  119. int16
  120. XPLO_GetElementType(LO_Element *element)
  121. {
  122.   return element->type;
  123. }
  124.  
  125. int32 
  126. XPLO_GetElementID(LO_Element *element)
  127. {
  128.   return ((LO_Any*)element)->ele_id;
  129. }
  130.  
  131. int16 
  132. XPLO_GetElementXOffset(LO_Element *element)
  133. {
  134.   return ((LO_Any*)element)->x_offset;
  135. }
  136.  
  137. void 
  138. XPLO_GetElementRect(LO_Element *element,
  139.                     int32 *x,
  140.                     int32 *y,    
  141.                     int32 *width,
  142.                     int32 *height)
  143. {
  144.   if (x)
  145.     *x = ((LO_Any*)element)->x;
  146.   if (y)
  147.     *y = ((LO_Any*)element)->y;
  148.   if (width)
  149.     *width = ((LO_Any*)element)->width;
  150.   if (height)
  151.     *height = ((LO_Any*)element)->height;
  152. }
  153.  
  154. int32 
  155. XPLO_GetElementLineHeight(LO_Element *element)
  156. {
  157.   return ((LO_Any*)element)->line_height;
  158. }
  159.  
  160. LO_Element* 
  161. XPLO_GetPrevElement(LO_Element *element)
  162. {
  163.   return ((LO_Any*)element)->prev;
  164. }
  165.  
  166. LO_Element* 
  167. XPLO_GetNextElement(LO_Element *element)
  168. {
  169.   return ((LO_Any*)element)->next;
  170. }
  171.  
  172. ED_Element* 
  173. XPLO_GetEditElement(LO_Element *element)
  174. {
  175.   return ((LO_Any*)element)->edit_element;
  176. }
  177.  
  178. int32 
  179. XPLO_GetEditOffset(LO_Element *element)
  180. {
  181.   return ((LO_Any*)element)->edit_offset;
  182. }
  183.  
  184. LO_AnchorData*    
  185. XPLO_GetAnchorData(LO_Element *element)
  186. {
  187.   XP_ASSERT(element->type == LO_TEXT
  188.             || element->type == LO_IMAGE
  189.             || element->type == LO_SUBDOC
  190.             || element->type == LO_LINEFEED
  191.             || element->type == LO_TABLE);
  192.  
  193.   switch (element->type)
  194.     {
  195.     case LO_TEXT:
  196.       return ((LO_TextStruct*)element)->anchor_href;
  197.     case LO_IMAGE:
  198.       return ((LO_ImageStruct*)element)->anchor_href;
  199.     case LO_SUBDOC:
  200.       return ((LO_SubDocStruct*)element)->anchor_href;
  201.     case LO_LINEFEED:
  202.       return ((LO_LinefeedStruct*)element)->anchor_href;
  203.     case LO_TABLE:
  204.       return ((LO_TableStruct*)element)->anchor_href;
  205.     default:
  206.       return NULL;
  207.     }
  208. }
  209.