/*! sets a region to contain only one rect. */ BOOL gdi_set_cliprgn(cliprgn_t *p_rgn, const rect_t *p_rc) { cliprc_t *p_nrc = NULL; if(is_empty_rect(p_rc)) { return FALSE; } // empty rgn, at first gdi_empty_cliprgn(p_rgn); // get a new cliprect p_nrc = gdi_alloc_cliprect(p_rgn->p_heap); if(p_nrc == NULL) { return FALSE; } // set cliprect p_nrc->rc = *p_rc; p_nrc->p_next = NULL; p_nrc->p_prev = NULL; p_rgn->p_head = p_rgn->p_tail = p_nrc; p_rgn->bound = *p_rc; return TRUE; }
tpoint twidget::get_best_size() const { if (is_empty_rect(fix_rect_)) { tpoint result = layout_size_; if (result == tpoint(0, 0)) { result = calculate_best_size(); } return result; } else { return tpoint(fix_rect_.w, fix_rect_.h); } }
/*! subtracts a rectangle from a region. */ BOOL gdi_subtract_cliprect(cliprgn_t *p_rgn, const rect_t *p_rc) { cliprgn_t nrgn; cliprc_t crc; if(is_empty_rect(p_rc)) { return FALSE; } crc.rc = *p_rc; crc.p_next = NULL; crc.p_prev = NULL; nrgn.bound = *p_rc; nrgn.p_head = &crc; nrgn.p_tail = &crc; nrgn.p_heap = NULL; return gdi_subtract_cliprgn(p_rgn, p_rgn, &nrgn); }