static void iColorBrowserUpdateCursorSI(Ihandle* ih) { int x; int y = (int)(ih->data->intensity*(ih->data->Iy2 - ih->data->Iy1)) + ih->data->Iy1; ih->data->si_y = iupROUND(y); x = (int)(ih->data->saturation*iColorBrowserSXmax(ih, ih->data->si_y)) + ih->data->Ix; ih->data->si_x = iupROUND(x); }
static void iColorBrowserUpdateCursorHue(Ihandle* ih) { int rc = ih->data->R-ICB_SPACE-ICB_HUEWIDTH/2; float angle = ih->data->hue * ICB_DEG2RAD; float cos_angle = cosf(angle); float sin_angle = sinf(angle); float x = rc*cos_angle + ih->data->xc; float y = rc*sin_angle + ih->data->yc; ih->data->h_x = iupROUND(x); ih->data->h_y = iupROUND(y); }
static void iVboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) { Ihandle* child; int empty_h0 = 0, empty_h1 = 0, client_width; if (ih->data->expand_children) ih->expand |= ih->data->expand_children; if (ih->data->is_homogeneous) ih->data->homogeneous_size = iHboxCalcHomogeneousHeight(ih); else { ih->data->homogeneous_size = 0; /* must calculate the space left for each control to grow inside the container */ /* H1 means there is an EXPAND enabled inside */ if (ih->expand & IUP_EXPAND_H1) empty_h1 = iVboxCalcEmptyHeight(ih, IUP_EXPAND_H1); /* Not H1 and H0 means that EXPAND is not enabled, but there are some IupFill inside */ else if (ih->expand & IUP_EXPAND_H0) empty_h0 = iVboxCalcEmptyHeight(ih, IUP_EXPAND_H0); } client_width = ih->currentwidth - 2*ih->data->margin_x; if (client_width<0) client_width=0; for (child = ih->firstchild; child; child = child->brother) { if (!(child->flags & IUP_FLOATING)) { int old_expand = child->expand; if (ih->data->expand_children) child->expand |= ih->data->expand_children; if (ih->data->homogeneous_size) iupBaseSetCurrentSize(child, client_width, ih->data->homogeneous_size, shrink); else { int empty = (child->expand & IUP_EXPAND_H1)? empty_h1: ((child->expand & IUP_EXPAND_H0)? empty_h0: 0); char* weight_str = iupAttribGet(child, "EXPANDWEIGHT"); if (weight_str) { float weight; if (iupStrToFloat(weight_str, &weight)) empty = iupROUND(empty * weight); } iupBaseSetCurrentSize(child, client_width, child->naturalheight+empty, shrink); } if (ih->data->expand_children) child->expand = old_expand; } else if (!(child->flags & IUP_FLOATING_IGNORE)) { /* update children to their own natural size */ iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink); } } }
static int winDrawCalcArc(int c1, int c2, double a, int start) { double proj, off; if (start) proj = cos(IUP_DEG2RAD * a); else proj = sin(IUP_DEG2RAD * a); off = (c2+c1)/2.0 + (c2-c1+1)*proj/2.0; return iupROUND(off); }
void iupDrawArc(IdrawCanvas* dc, int x1, int y1, int x2, int y2, double a1, double a2, unsigned char r, unsigned char g, unsigned char b, int style) { GdkColor color; iupgdkColorSet(&color, r, g, b); gdk_gc_set_rgb_fg_color(dc->pixmap_gc, &color); if (style!=IUP_DRAW_FILL) { GdkGCValues gcval; if (style==IUP_DRAW_STROKE_DASH) gcval.line_style = GDK_LINE_ON_OFF_DASH; else gcval.line_style = GDK_LINE_SOLID; gdk_gc_set_values(dc->pixmap_gc, &gcval, GDK_GC_LINE_STYLE); } gdk_draw_arc(dc->pixmap, dc->pixmap_gc, style==IUP_DRAW_FILL, x1, y1, x2-x1+1, y2-y1+1, iupROUND(a1*64), iupROUND((a2 - a1)*64)); }
/*************************************************\ * Updates text fields with the current HSI values * \*************************************************/ static void iColorDlgHSI_TXT_Update(IcolorDlgData* colordlg_data) { IupSetInt(colordlg_data->hue_txt, "VALUE", iupROUND(colordlg_data->hue)); IupSetInt(colordlg_data->saturation_txt, "VALUE", iupRound(colordlg_data->saturation * 100)); IupSetInt(colordlg_data->intensity_txt, "VALUE", iupRound(colordlg_data->intensity * 100)); }
static void iMatrixDrawText(Ihandle* ih, int x1, int x2, int y1, int y2, int col_alignment, int lin_alignment, int marked, int active, int lin, int col, const char* text) { int text_alignment; int charheight, x, y, hidden_text_marks = 0; iupdrvFontGetCharSize(ih, NULL, &charheight); if (lin==0 || ih->data->hidden_text_marks) { int text_w; iupdrvFontGetMultiLineStringSize(ih, text, &text_w, NULL); if (text_w > x2 - x1 + 1 - IMAT_PADDING_W - IMAT_FRAME_W) { if (lin == 0) col_alignment = IMAT_ALIGN_START; if (ih->data->hidden_text_marks) hidden_text_marks = 1; } } /* Set the color used to draw the text */ iMatrixDrawSetFgColor(ih, lin, col, marked, active); /* Set the clip area to the cell region informed, the text maybe greater than the cell */ if (hidden_text_marks) { int crop = iupdrvFontGetStringWidth(ih, "...") + 2; iMatrixDrawSetCellClipping(ih, x1, x2-crop, y1, y2); } else iMatrixDrawSetCellClipping(ih, x1, x2, y1, y2); IupCdSetFont(ih, ih->data->cd_canvas, iupMatrixGetFont(ih, lin, col)); /* Create an space between text and cell frame */ x1 += IMAT_PADDING_W/2; x2 -= IMAT_PADDING_W/2; y1 += IMAT_PADDING_H/2; y2 -= IMAT_PADDING_H/2; iMatrixGetCellAlign(ih, lin, col, &col_alignment, &lin_alignment); if (lin_alignment == IMAT_ALIGN_CENTER) { y = iupROUND((y1 + y2) / 2.0); if (col_alignment == IMAT_ALIGN_CENTER) { x = iupROUND((x1 + x2) / 2.0); text_alignment = CD_CENTER; } else if (col_alignment == IMAT_ALIGN_START) { x = x1; text_alignment = CD_WEST; } else /* RIGHT */ { x = x2; text_alignment = CD_EAST; } } else if (lin_alignment == IMAT_ALIGN_START) { y = y1; if (col_alignment == IMAT_ALIGN_CENTER) { x = iupROUND((x1 + x2) / 2.0); text_alignment = CD_NORTH; } else if (col_alignment == IMAT_ALIGN_START) { x = x1; text_alignment = CD_NORTH_WEST; } else /* RIGHT */ { x = x2; text_alignment = CD_NORTH_EAST; } } else /* lin_alignment == IMAT_ALIGN_END */ { y = y2; if (col_alignment == IMAT_ALIGN_CENTER) { x = iupROUND((x1 + x2) / 2.0); text_alignment = CD_SOUTH; } else if (col_alignment == IMAT_ALIGN_START) { x = x1; text_alignment = CD_SOUTH_WEST; } else /* RIGHT */ { x = x2; text_alignment = CD_SOUTH_EAST; } } cdCanvasTextAlignment(ih->data->cd_canvas, text_alignment); iupMATRIX_TEXT(ih, x, y, text); iMatrixDrawResetCellClipping(ih); if (hidden_text_marks) { cdCanvasTextAlignment(ih->data->cd_canvas, CD_EAST); y = (int)((y1 + y2) / 2.0 - 0.5); x = x2 + IMAT_PADDING_W / 2; iupMATRIX_TEXT(ih, x, y, "..."); } }