⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scrollbar_paint.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
      clear_client = TRUE;}static voidpaint_bubble(sb)scrollbar_handle sb;{   struct rect bubble;   if (!sb->one_button_case) {      (void)scrollbar_compute_bubble_rect(sb, &bubble);      if (sb->bubble_grey)         (void)pw_replrop(sb->pixwin,		    bubble.r_left, bubble.r_top,		    bubble.r_width, bubble.r_height, PIX_SRC,		    &scrollbar_mpr_for_grey_pattern, 0, 0);      else         (void)pw_writebackground(sb->pixwin, 			    bubble.r_left, bubble.r_top,			    bubble.r_width, bubble.r_height, PIX_SET);   }      sb->bubble_painted = TRUE;}/**************************************************************************//* scrollbar_paint_buttons                                                *//**************************************************************************/scrollbar_paint_buttons(sb)scrollbar_handle sb;{   /*register int tb_margin, lr_margin, t, b, l, r;*/   if (sb->horizontal) {      /* right button */      (void)pw_writebackground(sb->pixwin,                         (int)(sb->rect.r_width-sb->button_length),			 0, 			 (int)(sb->button_length) /*+1*/,			 sb->rect.r_height,			 PIX_CLR);       if (!sb->one_button_case)      (void)pw_vector(sb->pixwin,                 (int)(sb->rect.r_width - sb->button_length) /*+ 1*/,                 0,                 (int)(sb->rect.r_width - sb->button_length) /*+ 1*/,                 sb->rect.r_height - 1,        		PIX_SET, 1);      if (sb->gravity == SCROLL_MIN)	 (void)pw_vector(sb->pixwin, 		   (int)(sb->rect.r_width  - sb->button_length) /*+1*/, 		   sb->rect.r_height - 1, 		   (int)(sb->rect.r_width - 1) /**/, 		   sb->rect.r_height - 1, 		   PIX_SET, 1);      else if (sb->gravity == SCROLL_MAX)	 (void)pw_vector(sb->pixwin, 		   (int)(sb->rect.r_width - sb->button_length) /*+1*/, 		   0, 		   (int)(sb->rect.r_width - 1) /**/, 		   0, 		   PIX_SET, 1);      if (sb->rect.r_height >= 12)	 paint_h_arrow(sb, 		       (short)(sb->rect.r_width-sb->button_length+1),	               sb->rect.r_height);      /* left button */      if (!sb->one_button_case) {      (void)pw_writebackground(sb->pixwin,			 0,      			 0, 			 (int)sb->button_length,			 sb->rect.r_height,			 PIX_CLR);       (void)pw_vector(sb->pixwin,                 (int)(sb->button_length - 1),                 0,                 (int)(sb->button_length - 1),                 sb->rect.r_height - 1,                 PIX_SET, 1);      if (sb->gravity == SCROLL_MIN)	 (void)pw_vector(sb->pixwin, 		   0, 		   sb->rect.r_height - 1, 		   (int)(sb->button_length - 1) /**/, 		   sb->rect.r_height - 1, 		   PIX_SET, 1);      else if (sb->gravity == SCROLL_MAX)	 (void)pw_vector(sb->pixwin,	 	   0,	 	   0, 		   (int)(sb->button_length - 1) /**/,	 	   0,	 	   PIX_SET, 1);      if (sb->rect.r_height >= 12)	 paint_h_arrow(sb, 0, sb->rect.r_height);      }   } else {      /* bottom button */      (void)pw_writebackground(sb->pixwin,			 0, 			 (int)(sb->rect.r_height-sb->button_length), 			 sb->rect.r_width,			 (int)sb->button_length /*+1*/,			 PIX_CLR);       /* horizontal line on top of button */      if (!sb->one_button_case)      (void)pw_vector(sb->pixwin, 		0,		(int)(sb->rect.r_height - sb->button_length) /*+ 1*/, 		sb->rect.r_width  - 1,		(int)(sb->rect.r_height - sb->button_length) /*+ 1*/, 		PIX_SET, 1);      if (sb->gravity == SCROLL_MIN)	 /* vertical line on right of button */	 (void)pw_vector(sb->pixwin, 		   sb->rect.r_width - 1, 		   (int)(sb->rect.r_height - sb->button_length)  /*+ 1*/, 		   sb->rect.r_width - 1, 		   sb->rect.r_height - 1 /**/, 		   PIX_SET, 1);      else if (sb->gravity == SCROLL_MAX)	 (void)pw_vector(sb->pixwin, 		   0, 		   (int)(sb->rect.r_height - sb->button_length) /*+ 1*/, 		   0, 		   sb->rect.r_height - 1 /**/, 		   PIX_SET, 1);      if (sb->rect.r_width >= 12)	 paint_v_arrow(sb, 0, (short)(sb->rect.r_height - sb->button_length + 1));      if (!sb->one_button_case) {      /* top button */      (void)pw_writebackground(sb->pixwin,      			 0,      			 0, 			 sb->rect.r_width,			 (int)sb->button_length,			 PIX_CLR);       /* horizontal line on bottom of button */      (void)pw_vector(sb->pixwin,                 0,                (int)(sb->button_length - 1),                 sb->rect.r_width  - 1,                 (int)(sb->button_length - 1),                 PIX_SET, 1);       if (sb->gravity == SCROLL_MIN)	 /* vertical line on right of button */	 (void)pw_vector(sb->pixwin, 		   sb->rect.r_width  - 1, 		   0, 		   sb->rect.r_width  - 1, 		   (int)(sb->button_length - 1), 		   PIX_SET, 1);       else if (sb->gravity == SCROLL_MAX)	 /* vertical line on left of button */	 (void)pw_vector(sb->pixwin,	 	   0,	 	   0,	 	   0,	 	   (int)(sb->button_length - 1),	 	   PIX_SET, 1);      if (sb->rect.r_width >= 12)         paint_v_arrow(sb, 0, 0);      }   }   sb->buttons_painted = TRUE;}/**************************************************************************//* arrow painting routines                                                *//**************************************************************************/static voidpaint_h_arrow(sb, left, bottom)scrollbar_handle sb;short left, bottom;{   register int /*tb_margin, lr_margin, t, */ b, l, r;   l = left + 2;   r = left + sb->button_length - 3;   /*tb_margin = (sb->rect.r_height - 7) / 2; */   b = bottom - ((sb->rect.r_height - 7) / 2) - 2;   /* left triangle */   (void)pw_put(sb->pixwin, l, b-3, 1);   (void)pw_vector(sb->pixwin, l+1, b-2, l+1, b-4, PIX_SET, 1);   (void)pw_vector(sb->pixwin, l+2, b-1, l+2, b-5, PIX_SET, 1);   (void)pw_vector(sb->pixwin, l+3, b,   l+3, b-6, PIX_SET, 1);   /* right triangle */   (void)pw_put(sb->pixwin, r, b-3, 1);   (void)pw_vector(sb->pixwin, r-1, b-2, r-1, b-4, PIX_SET, 1);   (void)pw_vector(sb->pixwin, r-2, b-1, r-2, b-5, PIX_SET, 1);   (void)pw_vector(sb->pixwin, r-3, b,   r-3, b-6, PIX_SET, 1);}/*ARGSUSED*/static voidpaint_v_arrow(sb, left, top)scrollbar_handle sb;short left, top;{   register int /*tb_margin, r, */ t, b, l;   t = top + 2;   b = top + sb->button_length - 3;   l = (sb->rect.r_width - 7) / 2;   /* up triangle */   (void)pw_put(sb->pixwin, l+3, t, 1);   (void)pw_vector(sb->pixwin, l+2, t+1, l+4, t+1, PIX_SET, 1);   (void)pw_vector(sb->pixwin, l+1, t+2, l+5, t+2, PIX_SET, 1);   (void)pw_vector(sb->pixwin, l,   t+3, l+6, t+3, PIX_SET, 1);   /* down triangle */   (void)pw_put(sb->pixwin, l+3, b, 1);   (void)pw_vector(sb->pixwin, l+2, b-1, l+4, b-1, PIX_SET, 1);   (void)pw_vector(sb->pixwin, l+1, b-2, l+5, b-2, PIX_SET, 1);   (void)pw_vector(sb->pixwin, l,   b-3, l+6, b-3, PIX_SET, 1);}/**************************************************************************//* scrollbar_paint_all_clear                                              *//**************************************************************************/intscrollbar_paint_all_clear(pixwin)struct pixwin	*pixwin;{   register scrollbar_handle	sb;   SCROLLBAR_FOR_ALL(sb) {      if (pixwin == sb->pixwin) (void)scrollbar_paint_clear((Scrollbar)(LINT_CAST(sb)));   }}intscrollbar_paint_all(pixwin)struct pixwin	*pixwin;{   register scrollbar_handle	sb;   SCROLLBAR_FOR_ALL(sb) {      if (pixwin == sb->pixwin) (void)scrollbar_paint((Scrollbar)(LINT_CAST(sb)));   }}/**************************************************************************//* scrollbar_compute_bubble_rect                                          *//* the bubble rect is relative to the scrollbar's region, NOT the         *//* scrollbar's rect (which is relative to the underlying pixwin).         *//**************************************************************************/scrollbar_compute_bubble_rect(sb, result)register scrollbar_handle	 sb;register struct rect		*result;{   register int  bubble_length;    register int  bubble_offset;    register int  major_axis_length;    register int  minor_axis_length;    register int  min_bubble_length = MIN_BUBBLE_LENGTH;    if (sb->horizontal) {      major_axis_length = sb->rect.r_width;      minor_axis_length = sb->rect.r_height;   } else {      major_axis_length = sb->rect.r_height;      minor_axis_length = sb->rect.r_width;   }   major_axis_length -= 2*sb->button_length;   if (major_axis_length < MIN_BUBBLE_LENGTH)      min_bubble_length = major_axis_length;/* round bubble_offset down & bubble_length up */   bubble_offset = (double)sb->view_start  * major_axis_length /                    (double)sb->object_length;   bubble_length = sb->view_length * major_axis_length;   bubble_length =(bubble_length + (double)sb->object_length - 1)/                   (double)sb->object_length;      major_axis_length += sb->button_length;   bubble_offset     += sb->button_length;   if (bubble_offset < sb->button_length)       bubble_offset = sb->button_length;   if (bubble_offset + min_bubble_length > major_axis_length)       bubble_offset = major_axis_length - min_bubble_length;   if (bubble_length < min_bubble_length)       bubble_length = min_bubble_length;   if (bubble_offset + bubble_length > major_axis_length)       bubble_length = major_axis_length - bubble_offset;      /* Leave at least one pixel, if view_start is not at file start */      if ((sb->view_start != 0) && (bubble_offset == sb->button_length))   	bubble_offset++;   	   if (sb->horizontal) {      result->r_left   = bubble_offset;      result->r_top    = sb->bubble_margin;      result->r_width  = bubble_length;      result->r_height = minor_axis_length - 2*sb->bubble_margin;      if (sb->border) 	 result->r_height--;      if (sb->gravity == SCROLL_MAX)          result->r_top++;      if (result->r_height < 0)      	 result->r_height = 0;   } else {      result->r_top    = bubble_offset;      result->r_left   = sb->bubble_margin;      result->r_height = bubble_length;      result->r_width  = minor_axis_length - 2*sb->bubble_margin;      if (sb->border) 	 result->r_width--;      if (sb->gravity == SCROLL_MAX)          result->r_left++;      if (result->r_width < 0)         result->r_width = 0;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -