YYXSYS.CPP
上传用户:wtrl82617
上传日期:2007-01-07
资源大小:187k
文件大小:5k
源码类别:

界面编程

开发平台:

DOS

  1. // 1993 (c) ALL RIGHTS RESERVED
  2. // AUTHOR  BY XuYongYong
  3. /*  yyxsys.cpp
  4. */
  5. #include "yyxsys.h"
  6. #include "yyxmain.h"
  7. unsigned  far RectSize (struct Rect& therect)
  8. {      return ( imagesize(therect.left,therect.top,
  9. therect.right+2,therect.bottom+2));
  10. } // for the frame rect
  11. void FrameRect(struct Rect& therect)
  12. {
  13. rectangle (therect.left ,therect.top, therect.right,therect.bottom);
  14. }
  15. void FillRect(struct Rect& therect,int color)
  16. {       int i;
  17. setfillstyle (SOLID_FILL, color);
  18. bar (therect.left,therect.top, therect.right,therect.bottom );
  19. }
  20. void PaintRect(struct Rect& therect, int color , int pen_mode )
  21. {
  22. if (pen_mode !=COPY_PUT) setwritemode (pen_mode);
  23. setfillstyle (SOLID_FILL,color );
  24. bar (therect.left,therect.top, therect.right,therect.bottom );
  25. if (pen_mode !=COPY_PUT) setwritemode (COPY_PUT);
  26. }
  27. void SetRect(struct Rect *r,int left,int top,int right,int bottom)
  28. {
  29. r->left =left;
  30. r->top =top;
  31. r->right=right;
  32. r->bottom =bottom;
  33. }
  34. void OffsetRect(struct Rect *r,int dh,int dv)
  35. {   r->left +=dh;
  36. r->right +=dh;
  37. r->top +=dv;
  38. r->bottom +=dv;
  39. }
  40. void InsetRect(struct Rect *r,int dh,int dv)
  41. {   r->left -=dh;
  42. r->right +=dh;
  43. r->top -=dv;
  44. r->bottom +=dv;
  45. }
  46. void FrameOval (struct Rect& r )
  47. {
  48. ellipse( ( r.left+r.right ) /2 , (r.top+r.bottom ) /2 ,
  49. 0,360, ( r.right-r.left )/2 ,( r.bottom - r.top ) /2 );
  50. }
  51. void FillOval (struct Rect& r,int color)
  52. {
  53. setfillstyle (SOLID_FILL, color);
  54. fillellipse ( ( r.left+r.right ) /2 , (r.top+r.bottom ) /2 ,
  55.  ( r.right-r.left )/2 ,( r.bottom - r.top ) /2  );
  56. }
  57. void FrameRoundRect ( struct Rect& r , int ovalWidth, int ovalHeight )
  58. {       struct Rect  therect;
  59. int  half_width ,half_height;
  60. half_width =ovalWidth /2;
  61. half_height=ovalHeight /2;
  62. ellipse( ( r.left+ half_width ) , (r.top + half_height )  ,
  63.       90,180, half_width, half_height);
  64. ellipse( ( r.left+ half_width ) , (r.bottom - half_height )  ,
  65.      180,270, half_width, half_height);
  66. ellipse( ( r.right- half_width ) , (r.top + half_height )  ,
  67.  0,90, half_width, half_height);
  68. ellipse( ( r.right - half_width ) , (r.bottom - half_height )  ,
  69. 270,360, half_width, half_height);
  70. line (r.left+ half_width ,r.top ,r.right- half_width ,r.top );
  71. line (r.left+ half_width ,r.bottom ,r.right- half_width ,r.bottom );
  72. line (r.left ,r.top+half_height  ,r.left  ,r.bottom- half_height  );
  73. line (r.right ,r.top+half_height  ,r.right,r.bottom- half_height  );
  74. }
  75. void FillRoundRect (struct Rect& r ,int ovalWidth,int ovalHeight,int color )
  76. {   int  half_width ,half_height;
  77. half_width =ovalWidth /2;
  78. half_height=ovalHeight /2;
  79. setfillstyle (SOLID_FILL, color);
  80. setcolor (color );
  81. bar (r.left+half_width, r.top, r.right-half_width, r.bottom );
  82. bar (r.left, r.top+half_height ,
  83. r.left+half_width , r.bottom-half_height );
  84. bar (r.right-half_width , r.top+half_height ,
  85. r.right , r.bottom-half_height );
  86. sector( ( r.left+ half_width ) , (r.top + half_height )  ,
  87. 90,180,half_width, half_height);
  88. sector( ( r.left+ half_width ) , (r.bottom - half_height )  ,
  89. 180,270,half_width, half_height);
  90. sector( ( r.right- half_width ) , (r.top + half_height )  ,
  91. 0,90,half_width, half_height);
  92. sector( ( r.right - half_width ) , (r.bottom - half_height )  ,
  93. 270,360,half_width, half_height);
  94. }
  95. int SectRect (struct Rect& rect1, struct Rect& rect2 , struct Rect *pdst_rect)
  96. {
  97. if ( rect1.left > rect2.left ) pdst_rect->left =rect1.left;
  98.    else    pdst_rect->left =rect2.left;
  99. if ( rect1.right< rect2.right) pdst_rect->right=rect1.right;
  100.    else    pdst_rect->right=rect2.right;
  101. if ( rect1.top  > rect2.top )  pdst_rect->top  =rect1.top;
  102.    else    pdst_rect->top  =rect2.top;
  103. if ( rect1.bottom< rect2.bottom ) pdst_rect->bottom =rect1.bottom;
  104.    else    pdst_rect->bottom    =rect2.bottom;
  105. if (( pdst_rect->top >= pdst_rect->bottom ) ||
  106. ( pdst_rect->left >= pdst_rect->right ) ) return (FALSE_SECT );
  107. else return ( TRUE_SECT );
  108. }
  109. void far *myfarmalloc(unsigned long nbytes)
  110. { void far *temp;
  111. temp =farmalloc(nbytes);
  112. if ( temp == NULL ) {
  113. error ("Sorry,no room");
  114. // No need return a Value
  115. } else return (temp );
  116. return FALSE;
  117. }
  118. void far setport (struct viewporttype& viewport)
  119. { setviewport(viewport.left,viewport.top,
  120. viewport.right,viewport.bottom,viewport.clip );
  121. }
  122. BOOL PtInRect (int x,int y,struct Rect r)
  123. {
  124. return (
  125. (x>=r.left )&&(x<=r.right) &&
  126. (y>=r.top)&&(y<=r.bottom) );
  127. }
  128. BOOL PtInPort (int x,int y,const struct viewporttype& port)
  129. {
  130. return (
  131. (x>=port.left )&&(x<=port.right) &&
  132. (y>=port.top)&&(y<=port.bottom) );
  133. }
  134. BOOL Global2Local(int &x, int&y,const struct Rect& r)
  135. {
  136.   BOOL ret_value=TRUE;
  137. if ((x<r.left )||(x>r.right) ||
  138. (y<r.top) || (y>r.bottom) ) return FALSE;
  139. x=x-r.left;
  140. y=y-r.top;
  141. return ret_value;
  142. }
  143. BOOL Global2LocalPort(int &x, int&y,const struct viewporttype& port)
  144. //if !in port, do nothing
  145. //else return TRUE; && change the values;
  146. { BOOL ret_value=TRUE;
  147. if ((x<port.left )||(x>port.right) ||
  148. (y<port.top) || (y>port.bottom) ) return FALSE;
  149. x=x-port.left;
  150. y=y-port.top;
  151. return ret_value;
  152. }