Пример #1
0
static CGDirectDisplayID screen(void* w) {
  HIRect bounds;
  OSStatus err = HIWindowGetBounds((WindowRef)w, kWindowGlobalPortRgn, 
                                   kHICoordSpace72DPIGlobal, &bounds);
  if (err) {
    lprintf("HIWindowGetBounds failed: %d\n", err);
    return CGMainDisplayID();
  }
  CGDirectDisplayID display;
  CGDisplayCount displayCount;
  CGDisplayErr e = CGGetDisplaysWithRect(bounds, 1, 
                                         &display, &displayCount);
  return (displayCount && !e) ? display : CGMainDisplayID();
}
Пример #2
0
void QuartzWindow::get_window_region_rect(int wh, Rect* r) {
  HIRect bounds;
  OSStatus err = HIWindowGetBounds(my_window(), wh, 
                                   kHICoordSpace72DPIGlobal, &bounds);
  if (err) {
    lprintf("HIWindowGetBounds failed: %d\n", err);
    r->left = r->top = 0; r->bottom = r->right = 1;
  } else {
    r->left   = (short) CGRectGetMinX(bounds);
    r->top    = (short) CGRectGetMinY(bounds);
    r->bottom = (short) CGRectGetMaxY(bounds);
    r->right  = (short) CGRectGetMaxX(bounds);
  }
}
Пример #3
0
oop GetWindowRegion_wrap( WindowRef w, uint16 reg, void* FH) {
  // 
  // TODO: GetWindoRegion is deprecated and not avialiable in >=10.7
  // For now, we emulate with HIWindowGetBounds
  //
  HIRect bounds;
  OSStatus err = HIWindowGetBounds((WindowRef)w, reg, 
                                   kHICoordSpace72DPIGlobal, &bounds);
  if (err) {
    return  (oop)reportOSError(err, "GetWindowRegion", FH);
  }

  objVectorOop r = Memory->objVectorObj->cloneSize(4);
//  r->obj_at_put(0, as_floatOop(CGRectGetMinX(bounds)), false);
//  r->obj_at_put(1, as_floatOop(CGRectGetMinY(bounds)), false);
//  r->obj_at_put(2, as_floatOop(CGRectGetMaxX(bounds)), false);
//  r->obj_at_put(3, as_floatOop(CGRectGetMaxY(bounds)), false);
  r->obj_at_put(0, as_smiOop((short)CGRectGetMinX(bounds)), false);
  r->obj_at_put(1, as_smiOop((short)CGRectGetMinY(bounds)), false);
  r->obj_at_put(2, as_smiOop((short)CGRectGetMaxX(bounds)), false);
  r->obj_at_put(3, as_smiOop((short)CGRectGetMaxY(bounds)), false);
  
  return r;
}