ColorField::ColorField(color_mode mode, float fixed_value) : BControl("color field", "", new BMessage(MSG_COLOR_FIELD), B_WILL_DRAW | B_FRAME_EVENTS), fColorMode(mode), fFixedValue(fixed_value), fMarkerPosition(BPoint(0.0, 0.0)), fLastMarkerPosition(BPoint(-1.0, -1.0)), fMouseDown(false), fUpdateThread(0), fUpdatePort(0) { SetViewColor(B_TRANSPARENT_32_BIT); SetExplicitMinSize(BSize(COLOR_FIELD_WIDTH, COLOR_FIELD_HEIGHT)); SetExplicitMaxSize(BSize(COLOR_FIELD_WIDTH, COLOR_FIELD_HEIGHT)); for (int i = 0; i < 2; ++i) { fBgBitmap[i] = new BBitmap(COLOR_FIELD_RECT, B_RGB32, true, true); fBgBitmap[i]->Lock(); fBgView[i] = new BView(COLOR_FIELD_RECT, "", B_FOLLOW_NONE, B_WILL_DRAW); fBgBitmap[i]->AddChild(fBgView[i]); fBgView[i]->SetOrigin(2.0, 2.0); fBgBitmap[i]->Unlock(); } _DrawBorder(); fUpdatePort = create_port(100, "color field update port"); fUpdateThread = spawn_thread(&ColorField::_UpdateThread, "color field update thread", 10, this); resume_thread(fUpdateThread); }
BAbstractSpinner::TextViewLayoutItem::TextViewLayoutItem(BAbstractSpinner* parent) : fParent(parent), fFrame() { SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); }
void DataView::UpdateScroller() { float width, height; GetPreferredSize(&width, &height); SetExplicitMinSize(BSize(250, 200)); SetExplicitMaxSize(BSize(B_SIZE_UNSET, height)); SetExplicitPreferredSize(BSize(width, height)); BScrollBar *bar; if ((bar = ScrollBar(B_HORIZONTAL)) != NULL) { float delta = width - Bounds().Width(); if (delta < 0) delta = 0; bar->SetRange(0, delta); bar->SetSteps(fCharWidth, Bounds().Width()); bar->SetProportion(Bounds().Width() / width); } if ((bar = ScrollBar(B_VERTICAL)) != NULL) { float delta = height - Bounds().Height(); if (delta < 0) delta = 0; bar->SetRange(0, delta); bar->SetSteps(fFontHeight, Bounds().Height()); bar->SetProportion(Bounds().Height() / height); } }
BTextControl::TextViewLayoutItem::TextViewLayoutItem(BTextControl* parent) : fParent(parent), fFrame() { // by default the part right of the divider shall have an unlimited maximum // width SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); }
SetRatingView() : RatingView("rate package view"), fPermanentRating(0.0f) { SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); SetRating(fPermanentRating); }
IconView::IconView(const char* name, int32 iconSize) : BView(name, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE), fIconBitmap(NULL) { fIconBitmap = new BBitmap(BRect(0, 0, iconSize - 1, iconSize - 1), B_RGBA32); SetExplicitMaxSize(PreferredSize()); }
BMenuField::MenuBarLayoutItem::MenuBarLayoutItem(BMenuField* parent) : fParent(parent), fFrame() { // by default the part right of the divider shall have an unlimited maximum // width SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); }
void NotificationView::_CalculateSize() { float height = fHeight; if (fNotification->Type() == B_PROGRESS_NOTIFICATION) { font_height fh; be_plain_font->GetHeight(&fh); float fontHeight = fh.ascent + fh.descent + fh.leading; height += 9 + (kSmallPadding * 2) + (kEdgePadding * 1) + fontHeight * 2; } SetExplicitMinSize(BSize(0, height)); SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, height)); }
void UnicodeBlockView::_CreateBlocks() { float minWidth = 0; for (uint32 i = 0; i < kNumUnicodeBlocks; i++) { BlockListItem* item = new BlockListItem(kUnicodeBlocks[i].name, i); fBlocks.AddItem(item); float width = StringWidth(item->Text()); if (minWidth < width) minWidth = width; } SetExplicitMinSize(BSize(minWidth / 2, 32)); SetExplicitMaxSize(BSize(minWidth, B_SIZE_UNSET)); _UpdateBlocks(); }
Activity::Activity(const char* name) : BView(name, B_WILL_DRAW | B_FRAME_EVENTS), fIsRunning(false), fBitmap(NULL) { fPattern.data[0] = 0x0f; fPattern.data[1] = 0x1e; fPattern.data[2] = 0x3c; fPattern.data[3] = 0x78; fPattern.data[4] = 0xf0; fPattern.data[5] = 0xe1; fPattern.data[6] = 0xc3; fPattern.data[7] = 0x87; SetExplicitMinSize(BSize(17, 17)); SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 17)); };
void ToolBar::SetFontSize(int const& fontSize) { fFontSize = fontSize; BFont font; GetFont(&font); font.SetSize(fFontSize); font.SetFlags(Flags() | B_FORCE_ANTIALIASING); font.SetFace(B_CONDENSED_FACE /*| B_BOLD_FACE*/); SetFont(&font); GetFontHeight(&fFontHeight); fMargin.Set(5, 3, 5, 0); fButtonMargin.Set(5, 0, 5, 2); float height = ceilf(fFontHeight.ascent + 2 * fFontHeight.descent + fMargin.top + fMargin.bottom + fButtonMargin.top + fButtonMargin.bottom); fIconWidth = height - fMargin.top - fMargin.bottom - fButtonMargin.top - fButtonMargin.bottom - fFontHeight.descent - 2; SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, height)); SetExplicitMinSize(BSize(0, height)); fGradient.SetStart(0, 0); fGradient.SetEnd(0, height); fGradient.AddColor(make_color(230, 230, 255, 255), 0); fGradient.AddColor(make_color(180, 180, 255, 255), 255); fGradientHighlight.SetStart(0, 0); fGradientHighlight.SetEnd(0, height); fGradientHighlight.AddColor(make_color(210, 210, 255, 255), 0); fGradientHighlight.AddColor(make_color(150, 150, 255, 255), 255); fGradientPressed.SetStart(0, 0); fGradientPressed.SetEnd(0, height); fGradientPressed.AddColor(make_color(180, 180, 255, 255), 0); fGradientPressed.AddColor(make_color(130, 130, 255, 255), 255); Invalidate(); }
// // StatusDock::Constructor of the view StatusDock::StatusDock(const char* name) : BView(name, B_WILL_DRAW | B_FRAME_EVENTS), modus(MODE_INIT) { SetExplicitMaxSize(BSize(B_SIZE_UNSET, 75)); SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BLayoutBuilder::Grid<>(this, B_USE_ITEM_SPACING, 0) .SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_BOTTOM)) .SetInsets(B_USE_WINDOW_INSETS) .Add(statusIcon = new IconView("statusicon"), 0, 0, 1, 4) .AddGlue(1, 0, 2) .Add(statusMessage = new BStringView("statusmsg", NULL), 1, 1) .AddGlue(2,1) .Add(statusBar = new BStatusBar("statusbar"), 1, 2, 2) .End(); statusIcon->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_CENTER)); statusMessage->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_VERTICAL_CENTER)); statusMessage->SetExplicitPreferredSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); statusBar->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_VERTICAL_CENTER)); statusIcon->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_CENTER)); }