IGC.c
资源名称:ilib [点击查看]
上传用户:changbiao
上传日期:2007-01-13
资源大小:141k
文件大小:3k
源码类别:

图片显示

开发平台:

C/C++

  1. /*
  2.  * IImage.c
  3.  *
  4.  * Image library
  5.  *
  6.  * Description:
  7.  * Portable routines to manipulate raster images.
  8.  *
  9.  * History:
  10.  * 23-Aug-99 Craig Knudsen cknudsen@radix.net
  11.  * Added ISetTextStyle().
  12.  * 20-May-96 Craig Knudsen cknudsen@radix.net
  13.  * Created
  14.  *
  15.  ****************************************************************************/
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <memory.h>
  19. #include "Ilib.h"
  20. #include "IlibP.h"
  21. IGC ICreateGC ()
  22. {
  23.   IGCP *gc;
  24.   gc = (IGCP *) malloc ( sizeof ( IGCP ) );
  25.   memset ( gc, '', sizeof ( IGCP ) );
  26.   gc->magic = IMAGIC_GC;
  27.   gc->foreground = _IGetColor ( IBLACK_PIXEL );
  28.   gc->background = _IGetColor ( IWHITE_PIXEL );
  29.   gc->line_width = 1;
  30.   gc->line_style = ILINE_SOLID;
  31.   gc->text_style = ITEXT_NORMAL;
  32.   return ( (IGC) gc );
  33. }
  34. IError _IFreeGC ( gc )
  35. IGC gc;
  36. {
  37.   IGCP *gcp = (IGCP *)gc;
  38.   if ( gcp ) {
  39.     if ( gcp->magic != IMAGIC_GC )
  40.       return ( IInvalidGC );
  41.     gcp->magic = 0;
  42.     free ( gcp );
  43.   }
  44.   return ( INoError );
  45. }
  46. IError ISetFont ( gc, font )
  47. IGC gc;
  48. IFont font;
  49. {
  50.   IFontP *fontp = (IFontP *)font;
  51.   IGCP *gcp = (IGCP *)gc;
  52.   if ( gcp ) {
  53.     if ( gcp->magic != IMAGIC_GC )
  54.       return ( IInvalidGC );
  55.   }
  56.   else 
  57.     return ( IInvalidGC );
  58.   if ( fontp ) {
  59.     if ( fontp->magic != IMAGIC_FONT )
  60.       return ( IInvalidFont );
  61.   }
  62.   else 
  63.     return ( IInvalidFont );
  64.   gcp->font = fontp;
  65.   gcp->antialiased = 0;
  66.   return ( INoError );
  67. }
  68. /*
  69. ** NOTE: this is just experimental code.
  70. ** It produces some pretty ugly text.  Need to look at gimp and
  71. ** so how they do this.
  72. */
  73. IError ISetAntiAliasedFont ( gc, font )
  74. IGC gc;
  75. IFont font;
  76. {
  77.   IFontP *fontp = (IFontP *)font;
  78.   IGCP *gcp = (IGCP *)gc;
  79.   if ( gcp ) {
  80.     if ( gcp->magic != IMAGIC_GC )
  81.       return ( IInvalidGC );
  82.   }
  83.   else 
  84.     return ( IInvalidGC );
  85.   if ( fontp ) {
  86.     if ( fontp->magic != IMAGIC_FONT )
  87.       return ( IInvalidFont );
  88.   }
  89.   else 
  90.     return ( IInvalidFont );
  91.   gcp->font = fontp;
  92.   gcp->antialiased = 1;
  93.   return ( INoError );
  94. }
  95. IError ISetForeground ( gc, color )
  96. IGC gc;
  97. IColor color;
  98. {
  99.   IGCP *gcp = (IGCP *)gc;
  100.   IColorP *colorp;
  101.   if ( gcp ) {
  102.     if ( gcp->magic != IMAGIC_GC )
  103.       return ( IInvalidGC );
  104.   }
  105.   else 
  106.     return ( IInvalidGC );
  107.   colorp = _IGetColor ( color );
  108.   if ( ! colorp )
  109.     return ( IInvalidColor );
  110.   gcp->foreground = colorp;
  111.   return ( INoError );
  112. }
  113. IError ISetBackground ( gc, color )
  114. IGC gc;
  115. IColor color;
  116. {
  117.   IGCP *gcp = (IGCP *)gc;
  118.   IColorP *colorp;
  119.   if ( gcp ) {
  120.     if ( gcp->magic != IMAGIC_GC )
  121.       return ( IInvalidGC );
  122.   }
  123.   else 
  124.     return ( IInvalidGC );
  125.   colorp = _IGetColor ( color );
  126.   if ( ! colorp )
  127.     return ( IInvalidColor );
  128.   gcp->background = colorp;
  129.   return ( INoError );
  130. }
  131. IError ISetLineWidth ( gc, line_width )
  132. IGC gc;
  133. unsigned int line_width;
  134. {
  135.   IGCP *gcp = (IGCP *)gc;
  136.   if ( gcp ) {
  137.     if ( gcp->magic != IMAGIC_GC )
  138.       return ( IInvalidGC );
  139.   }
  140.   gcp->line_width = line_width;
  141.   return ( INoError );
  142. }
  143. IError ISetLineStyle ( gc, line_style )
  144. IGC gc;
  145. ILineStyle line_style;
  146. {
  147.   IGCP *gcp = (IGCP *)gc;
  148.   if ( gcp ) {
  149.     if ( gcp->magic != IMAGIC_GC )
  150.       return ( IInvalidGC );
  151.   }
  152.   gcp->line_style = line_style;
  153.   return ( INoError );
  154. }
  155. IError ISetTextStyle ( gc, text_style )
  156. IGC gc;
  157. ITextStyle text_style;
  158. {
  159.   IGCP *gcp = (IGCP *)gc;
  160.   if ( gcp ) {
  161.     if ( gcp->magic != IMAGIC_GC )
  162.       return ( IInvalidGC );
  163.   }
  164.   gcp->text_style = text_style;
  165.   return ( INoError );
  166. }