bool CFile::Open(const char* pszFile, const char* pszFlags) { Close(); char bufFlags[8]; if (ModifyFlags(pszFlags, bufFlags, numof(bufFlags)) == false) return (m_pfile != NULL); }
void BScrollView::SetBorder(border_style border) { if (fBorder == border) return; float offset = BorderSize(fBorder) - BorderSize(border); float resize = 2 * offset; float horizontalGap = 0, verticalGap = 0; float change = 0; if (border == B_NO_BORDER || fBorder == B_NO_BORDER) { if (fHorizontalScrollBar != NULL) verticalGap = border != B_NO_BORDER ? 1 : -1; if (fVerticalScrollBar != NULL) horizontalGap = border != B_NO_BORDER ? 1 : -1; change = border != B_NO_BORDER ? -1 : 1; if (fHorizontalScrollBar == NULL || fVerticalScrollBar == NULL) change *= 2; } fBorder = border; int32 savedResizingMode = 0; if (fTarget != NULL) { savedResizingMode = fTarget->ResizingMode(); fTarget->SetResizingMode(B_FOLLOW_NONE); } MoveBy(offset, offset); ResizeBy(-resize - horizontalGap, -resize - verticalGap); if (fTarget != NULL) { fTarget->MoveBy(-offset, -offset); fTarget->SetResizingMode(savedResizingMode); } if (fHorizontalScrollBar != NULL) { fHorizontalScrollBar->MoveBy(-offset - verticalGap, offset + verticalGap); fHorizontalScrollBar->ResizeBy(resize + horizontalGap - change, 0); } if (fVerticalScrollBar != NULL) { fVerticalScrollBar->MoveBy(offset + horizontalGap, -offset - horizontalGap); fVerticalScrollBar->ResizeBy(0, resize + verticalGap - change); } SetFlags(ModifyFlags(Flags(), border)); }
BScrollView::BScrollView(const char *name, BView *target, uint32 resizingMode, uint32 flags, bool horizontal, bool vertical, border_style border) : BView(CalcFrame(target, horizontal, vertical, border), name, ModifyFlags(flags, border), resizingMode), fTarget(target), fHorizontalScrollBar(NULL), fVerticalScrollBar(NULL), fBorder(border), fHighlighted(false) { fTarget->TargetedByScrollView(this); fTarget->MoveTo(B_ORIGIN); if (border != B_NO_BORDER) fTarget->MoveBy(BorderSize(border), BorderSize(border)); AddChild(fTarget); BRect frame = fTarget->Frame(); if (horizontal) { BRect rect = frame; rect.top = rect.bottom + 1; rect.bottom += B_H_SCROLL_BAR_HEIGHT + 1; if (border != B_NO_BORDER || vertical) rect.right++; if (border != B_NO_BORDER) rect.left--; fHorizontalScrollBar = new BScrollBar(rect, "_HSB_", fTarget, 0, 1000, B_HORIZONTAL); AddChild(fHorizontalScrollBar); } if (vertical) { BRect rect = frame; rect.left = rect.right + 1; rect.right += B_V_SCROLL_BAR_WIDTH + 1; if (border != B_NO_BORDER || horizontal) rect.bottom++; if (border != B_NO_BORDER) rect.top--; fVerticalScrollBar = new BScrollBar(rect, "_VSB_", fTarget, 0, 1000, B_VERTICAL); AddChild(fVerticalScrollBar); } fPreviousWidth = uint16(Bounds().Width()); fPreviousHeight = uint16(Bounds().Height()); }