예제 #1
0
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);
}
예제 #2
0
BAbstractSpinner::TextViewLayoutItem::TextViewLayoutItem(BAbstractSpinner* parent)
	:
	fParent(parent),
	fFrame()
{
	SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
}
예제 #3
0
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);
	}
}
예제 #4
0
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));
}
예제 #5
0
	SetRatingView()
		:
		RatingView("rate package view"),
		fPermanentRating(0.0f)
	{
		SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
		SetRating(fPermanentRating);
	}
예제 #6
0
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());
}
예제 #7
0
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));
}
예제 #8
0
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));
}
예제 #9
0
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();
}
예제 #10
0
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));
};
예제 #11
0
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();
}
예제 #12
0
//
// 		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));
}