void SnowView::AttachedToWindow() { BView *p; rgb_color col; fAttached = true; /* if (!fMsgRunner) fMsgRunner = new BMessageRunner(BMessenger(this), new BMessage(MSG_PULSE_ME), INTERVAL); */ p = Parent(); if (p) col = B_TRANSPARENT_32_BIT;//Parent()->ViewColor(); else col = ui_color(B_PANEL_BACKGROUND_COLOR); SetViewColor(col); // BScreen bs; // fCachedWsWidth = bs.Frame().IntegerWidth(); // fCachedWsHeight = bs.Frame().IntegerHeight(); fDragger = dynamic_cast<BDragger *>(FindView("_dragger_")); if (fDragger && p) { fCachedParent = p; fCachedWsWidth = p->Frame().IntegerWidth(); fCachedWsHeight = p->Frame().IntegerHeight(); fDragger->SetViewColor(col); if (fDragger->InShelf()) { p->SetFlags(p->Flags() | B_DRAW_ON_CHILDREN); #ifdef B_BEOS_VERSION_DANO p->SetDoubleBuffering(p->DoubleBuffering() | B_UPDATE_EXPOSED); #endif ResizeTo(p->Bounds().Width(), p->Bounds().Height()); MoveTo(0,0); fDragger->MoveTo(p->Bounds().Width()-7, p->Bounds().Height()-7); } BRect fallenRect(p->Bounds()); fallenRect.top = fallenRect.bottom - FALLEN_HEIGHT; fFallenBmp = new BBitmap(fallenRect, B_BITMAP_ACCEPTS_VIEWS, B_CMAP8); memset(fFallenBmp->Bits(), B_TRANSPARENT_MAGIC_CMAP8, (size_t)(fallenRect.Height()*fFallenBmp->BytesPerRow())); fFallenView = new BView(fallenRect, "offscreen fallen snow", B_FOLLOW_NONE, 0); fFallenBmp->AddChild(fFallenView); fFallenReg = new BRegion; fInvalidator = spawn_thread(SnowMakerThread, INVALIDATOR_THREAD_NAME, B_LOW_PRIORITY, (void *)this); resume_thread(fInvalidator); printf("BSnow: OK: ws = %ld x %ld\n", fCachedWsWidth, fCachedWsHeight); #ifdef DEBUG Window()->AddCommonFilter(new BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE, msgfilter)); #endif } }
void WonderBrushView::AttachedToWindow() { // Hack for DataTranslations which doesn't resize visible area to requested by view // which makes some parts of bigger than usual translationviews out of visible area // so if it was loaded to DataTranslations resize window if needed BWindow *window = Window(); if (!strcmp(window->Name(), "DataTranslations")) { BView *view = Parent(); if (view) { BRect frame = view->Frame(); float x, y; GetPreferredSize(&x, &y); if (frame.Width() < x || (frame.Height() - 48) < y) { x -= frame.Width(); y -= frame.Height() - 48; if (x < 0) x = 0; if (y < 0) y = 0; // DataTranslations has main view called "Background" // change it's resizing mode so it will always resize with window // also make sure view will be redrawed after resize view = window->FindView("Background"); if (view) { view->SetResizingMode(B_FOLLOW_ALL); view->SetFlags(B_FULL_UPDATE_ON_RESIZE); } // The same with "Info..." button, except redrawing, which isn't needed view = window->FindView("Info" B_UTF8_ELLIPSIS); if (view) view->SetResizingMode(B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM); window->ResizeBy( x, y); } } } }
status_t CanvasMessage::ReadViewState(BView& view, ::pattern& pattern) { bool subPixelPrecise; float penSize, miterLimit; drawing_mode drawingMode; source_alpha sourceAlpha; alpha_function alphaFunction; cap_mode capMode; join_mode joinMode; rgb_color highColor, lowColor; Read(penSize); Read(subPixelPrecise); Read(drawingMode); Read(sourceAlpha); Read(alphaFunction); Read(pattern); Read(capMode); Read(joinMode); Read(miterLimit); Read(highColor); status_t result = Read(lowColor); if (result != B_OK) return result; uint32 flags = view.Flags() & ~B_SUBPIXEL_PRECISE; view.SetFlags(flags | (subPixelPrecise ? B_SUBPIXEL_PRECISE : 0)); view.SetPenSize(penSize); view.SetDrawingMode(drawingMode); view.SetBlendingMode(sourceAlpha, alphaFunction); view.SetLineMode(capMode, joinMode, miterLimit); view.SetHighColor(highColor); view.SetLowColor(lowColor); return B_OK; }