35 #define WIDGET_DEFAULT_PADDING 0
36 #define WIDGET_PADDING_INIT { { WIDGET_DEFAULT_PADDING, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL }, ROFI_HL_SOLID }
40 double x1,
double y1,
double x2,
double y2,
41 double r0,
double r1,
double r2,
double r3 )
44 cairo_move_to ( d, x1, y1 + r0 );
45 cairo_arc ( d, x1 + r0, y1 + r0, r0, -G_PI, -G_PI_2 );
48 cairo_move_to ( d, x1, y1 );
51 cairo_line_to ( d, x2 - r1, y1 );
52 cairo_arc ( d, x2 - r1, y1 + r1, r1, -G_PI_2, 0.0 );
55 cairo_line_to ( d, x2, y1 );
58 cairo_line_to ( d, x2, y2 - r2 );
59 cairo_arc ( d, x2 - r2, y2 - r2, r2, 0.0, G_PI_2 );
62 cairo_line_to ( d, x2, y2 );
65 cairo_line_to ( d, x1 + r3, y2 );
66 cairo_arc ( d, x1 + r3, y2 - r3, r3, G_PI_2, G_PI );
69 cairo_line_to ( d, x1, y2 );
71 cairo_close_path ( d );
78 wid->
name = g_strdup ( name );
212 double minof_tl, minof_tr, minof_br, minof_bl;
214 double left_2 = (double) left / 2;
215 double top_2 = (double) top / 2;
216 double right_2 = (double) right / 2;
217 double bottom_2 = (double) bottom / 2;
220 minof_tl = MIN ( left_2, top_2 );
221 minof_tr = MIN ( right_2, top_2 );
222 minof_br = MIN ( right_2, bottom_2 );
223 minof_bl = MIN ( left_2, bottom_2 );
226 double vspace, vspace_2, hspace, hspace_2;
227 vspace =
widget->
h - ( margin_top + margin_bottom ) - ( top_2 + bottom_2 );
228 hspace =
widget->
w - ( margin_left + margin_right ) - ( left_2 + right_2 );
229 vspace_2 = vspace / 2;
230 hspace_2 = hspace / 2;
232 if ( radius_bl + radius_tl > vspace ) {
233 radius_bl = MIN ( radius_bl, vspace_2 );
234 radius_tl = MIN ( radius_tl, vspace_2 );
236 if ( radius_br + radius_tr > vspace ) {
237 radius_br = MIN ( radius_br, vspace_2 );
238 radius_tr = MIN ( radius_tr, vspace_2 );
240 if ( radius_tl + radius_tr > hspace ) {
241 radius_tr = MIN ( radius_tr, hspace_2 );
242 radius_tl = MIN ( radius_tl, hspace_2 );
244 if ( radius_bl + radius_br > hspace ) {
245 radius_br = MIN ( radius_br, hspace_2 );
246 radius_bl = MIN ( radius_bl, hspace_2 );
253 cairo_set_line_width ( d, 0 );
256 margin_left + ( left > 2 ? left - 1 : left == 1 ? 0.5 : 0 ),
257 margin_top + ( top > 2 ? top - 1 : top == 1 ? 0.5 : 0 ),
258 widget->
w - margin_right - ( right > 2 ? right - 1 : right == 1 ? 0.5 : 0 ),
259 widget->
h - margin_bottom - ( bottom > 2 ? bottom - 1 : bottom == 1 ? 0.5 : 0 ),
260 radius_tl - ( minof_tl > 1 ? minof_tl - 1 : 0 ),
261 radius_tr - ( minof_tr > 1 ? minof_tr - 1 : 0 ),
262 radius_br - ( minof_br > 1 ? minof_br - 1 : 0 ),
263 radius_bl - ( minof_bl > 1 ? minof_bl - 1 : 0 ) );
265 cairo_set_source_rgba ( d, 1.0, 1.0, 1.0, 1.0 );
267 cairo_fill_preserve ( d );
275 if ( left != 0 || top != 0 || right != 0 || bottom != 0 ) {
278 cairo_new_path ( d );
281 double radius_int_tl, radius_int_tr, radius_int_br, radius_int_bl;
282 double radius_out_tl, radius_out_tr, radius_out_br, radius_out_bl;
284 if ( radius_tl > 0 ) {
285 radius_out_tl = radius_tl + minof_tl,
286 radius_int_tl = radius_tl - minof_tl;
289 radius_out_tl = radius_int_tl = 0;
291 if ( radius_tr > 0 ) {
292 radius_out_tr = radius_tr + minof_tr,
293 radius_int_tr = radius_tr - minof_tr;
296 radius_out_tr = radius_int_tr = 0;
298 if ( radius_br > 0 ) {
299 radius_out_br = radius_br + minof_br,
300 radius_int_br = radius_br - minof_br;
303 radius_out_br = radius_int_br = 0;
305 if ( radius_bl > 0 ) {
306 radius_out_bl = radius_bl + minof_bl,
307 radius_int_bl = radius_bl - minof_bl;
310 radius_out_bl = radius_int_bl = 0;
322 cairo_new_sub_path ( d );
326 widget->
w - margin_right - right,
327 widget->
h - margin_bottom - bottom,
332 cairo_set_fill_rule ( d, CAIRO_FILL_RULE_EVEN_ODD );
344 if ( wid->
name != NULL ) {
345 g_free ( wid->
name );
347 if ( wid->
free != NULL ) {
415 while ( iter->
parent != NULL ) {
441 if ( target != NULL ) {
445 if ( wid->
type == type ) {
579 if ( wid->
parent != NULL ) {
590 if ( wid->
parent != NULL ) {
@ ROFI_ORIENTATION_HORIZONTAL
@ ROFI_ORIENTATION_VERTICAL
RofiPadding rofi_theme_get_padding(const widget *widget, const char *property, RofiPadding pad)
int rofi_theme_get_boolean(const widget *widget, const char *property, int def)
int distance_get_pixel(RofiDistance d, RofiOrientation ori)
void rofi_theme_get_color(const widget *widget, const char *property, cairo_t *d)