Example #1
0
bool
ParagraphLayout::_AppendGlyphInfo(uint32 charCode, float width,
	const CharacterStyle& style)
{
	if (style.Width() >= 0.0f) {
		// Use the metrics provided by the CharacterStyle and override
		// the font provided metrics passed in "width"
		width = style.Width();
	}

	width += style.GlyphSpacing();

	return fGlyphInfos.Add(GlyphInfo(charCode, 0.0f, width, 0));
}
Example #2
0
void
ParagraphLayout::_IncludeStyleInLine(LineInfo& line,
	const CharacterStyle& style)
{
	float ascent = style.Ascent();
	if (ascent > line.maxAscent)
		line.maxAscent = ascent;

	float descent = style.Descent();
	if (descent > line.maxDescent)
		line.maxDescent = descent;

	float height = ascent + descent;
	if (style.Font().Size() > height)
		height = style.Font().Size();

	if (height > line.height)
		line.height = height;
}
void
TextDocumentTest::ReadyToRun()
{
	Init();
	BRect frame(50.0, 50.0, 749.0, 549.0);

	BWindow* window = new BWindow(frame, "Text document test",
		B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_AUTO_UPDATE_SIZE_LIMITS);

	TextDocumentView* documentView = new TextDocumentView("text document view");

	BScrollView* scrollView = new BScrollView("text scroll view", documentView,
		false, true, B_NO_BORDER);
	BuildFontMenu();


	BToolBar* toolBar= new BToolBar();
	toolBar->AddAction(MENU_FILE_NEW,this,LoadIcon("document_new"));
	toolBar->AddAction(MENU_FILE_OPEN,this,LoadIcon("document_open"));
	toolBar->AddAction(MENU_FILE_SAVE,this,LoadIcon("document_save"));
	toolBar->AddSeparator();
	toolBar->AddView(new BButton("StyleList"));
	toolBar->AddView(fFontMenuField);
	toolBar->AddView(new BButton("Size"));
	toolBar->AddSeparator();
	toolBar->AddAction(FONTBOLD_MSG,this,LoadIcon("text_bold"),"Bold",NULL,false);
	toolBar->AddAction(FONTITALIC_MSG,this,LoadIcon("text_italic"),"Bold",NULL,true);;
	toolBar->AddAction(FONTUNDERLINE_MSG,this,LoadIcon("text_underline"),"Bold",NULL,true);;
	toolBar->AddSeparator();
	/*toolBar->AddView(new BButton("Left"));
	toolBar->AddView(new BButton("Center"));
	toolBar->AddView(new BButton("Right"));
	toolBar->AddView(new BButton("Block"));
	toolBar->AddSeparator();
	toolBar->AddView(new BButton("Inset Right"));
	toolBar->AddView(new BButton("Inset Left"));
	toolBar->AddSeparator();
	toolBar->AddView(new BButton("Bullet List"));
	toolBar->AddSeparator();*/
	
	
	
	toolBar->AddGlue();
	BToolBar* statusBar= new BToolBar();
	BFont* tmpFont	= new BFont();
	BStringView* stringView = new BStringView("firstStatus","Here will be the Status View");
	stringView->GetFont(tmpFont);
	tmpFont->SetSize(tmpFont->Size()-2);
	stringView->SetFont(tmpFont);
	statusBar->AddView(stringView);
	statusBar->AddSeparator();
	BLayoutBuilder::Group<>(window, B_VERTICAL,0)
		.Add(toolBar)
		.Add(scrollView)
		.SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED))
		.Add(statusBar)

	;

	CharacterStyle regularStyle;

	float fontSize = regularStyle.Font().Size();

	ParagraphStyle paragraphStyle;
	paragraphStyle.SetJustify(true);
	paragraphStyle.SetSpacingTop(ceilf(fontSize * 0.6f));
	paragraphStyle.SetLineSpacing(ceilf(fontSize * 0.2f));

	CharacterStyle boldStyle(regularStyle);
	boldStyle.SetBold(true);

	CharacterStyle italicStyle(regularStyle);
	italicStyle.SetItalic(true);

	CharacterStyle italicAndBoldStyle(boldStyle);
	italicAndBoldStyle.SetItalic(true);

	CharacterStyle bigStyle(regularStyle);
	bigStyle.SetFontSize(24);
	bigStyle.SetBold(true);
	bigStyle.SetForegroundColor(255, 50, 50);

	TextDocumentRef document(new TextDocument(), true);

	Paragraph paragraph(paragraphStyle);
	paragraph.Append(TextSpan("This is a", regularStyle));
	paragraph.Append(TextSpan(" test ", bigStyle));
	paragraph.Append(TextSpan("to see if ", regularStyle));
	paragraph.Append(TextSpan("different", boldStyle));
	paragraph.Append(TextSpan(" character styles already work.", regularStyle));
	document->Append(paragraph);

	paragraphStyle.SetSpacingTop(8.0f);
	paragraphStyle.SetAlignment(ALIGN_CENTER);
	paragraphStyle.SetJustify(false);

	paragraph = Paragraph(paragraphStyle);
	paragraph.Append(TextSpan("Different alignment styles ", regularStyle));
	paragraph.Append(TextSpan("are", boldStyle));
	paragraph.Append(TextSpan(" supported as of now!", regularStyle));
	document->Append(paragraph);

	paragraphStyle.SetAlignment(ALIGN_RIGHT);
	paragraphStyle.SetJustify(true);

	paragraph = Paragraph(paragraphStyle);
	paragraph.Append(TextSpan("I am on the ", regularStyle));
	paragraph.Append(TextSpan("Right", boldStyle));
	paragraph.Append(TextSpan("Side", italicStyle));
	document->Append(paragraph);

	// Test a bullet list
	paragraphStyle.SetSpacingTop(8.0f);
	paragraphStyle.SetAlignment(ALIGN_LEFT);
	paragraphStyle.SetJustify(true);
	paragraphStyle.SetBullet(Bullet("->", 12.0f));
	paragraphStyle.SetLineInset(10.0f);

	paragraph = Paragraph(paragraphStyle);
	paragraph.Append(TextSpan("Even bullet lists are supported.", regularStyle));
	document->Append(paragraph);

	paragraph = Paragraph(paragraphStyle);
	paragraph.Append(TextSpan("The wrapping in ", regularStyle));
	paragraph.Append(TextSpan("this", italicStyle));

	paragraph.Append(TextSpan(" bullet item should look visually "
		"pleasing. And ", regularStyle));
	paragraph.Append(TextSpan("why", italicAndBoldStyle));
	paragraph.Append(TextSpan(" should it not?", regularStyle));
	document->Append(paragraph);

/*	MarkupParser parser(regularStyle, paragraphStyle);

	TextDocumentRef document = parser.CreateDocumentFromMarkup(
		"== Text document test ==\n"
		"This is a test to see if '''different''' "
		"character styles already work.\n"
		"Different alignment styles '''are''' supported as of now!\n"
		" * Even bullet lists are supported.\n"
		" * The wrapping in ''this'' bullet item should look visually "
		"pleasing. And ''why'' should it not?\n"
	);*/

	documentView->SetTextDocument(document);
	documentView->SetTextEditor(TextEditorRef(new TextEditor(), true));
	documentView->MakeFocus();

	window->Show();
	FontPanel *fPanel = new FontPanel();
	fPanel->Show();	
}
Example #4
0
void
TextDocumentTest::ReadyToRun()
{
	BRect frame(50.0, 50.0, 749.0, 549.0);

	BWindow* window = new BWindow(frame, "Text document test",
		B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_AUTO_UPDATE_SIZE_LIMITS);

	TextDocumentView* documentView = new TextDocumentView("text document view");

	BScrollView* scrollView = new BScrollView("text scroll view", documentView,
		false, true, B_NO_BORDER);

	BLayoutBuilder::Group<>(window, B_VERTICAL)
		.Add(scrollView)
	;

	CharacterStyle regularStyle;

	float fontSize = regularStyle.Font().Size();

	ParagraphStyle paragraphStyle;
	paragraphStyle.SetJustify(true);
	paragraphStyle.SetSpacingTop(ceilf(fontSize * 0.6f));
	paragraphStyle.SetLineSpacing(ceilf(fontSize * 0.2f));

//	CharacterStyle boldStyle(regularStyle);
//	boldStyle.SetBold(true);
//
//	CharacterStyle italicStyle(regularStyle);
//	italicStyle.SetItalic(true);
//
//	CharacterStyle italicAndBoldStyle(boldStyle);
//	italicAndBoldStyle.SetItalic(true);
//
//	CharacterStyle bigStyle(regularStyle);
//	bigStyle.SetFontSize(24);
//	bigStyle.SetForegroundColor(255, 50, 50);
//
//	TextDocumentRef document(new TextDocument(), true);
//
//	Paragraph paragraph(paragraphStyle);
//	paragraph.Append(TextSpan("This is a", regularStyle));
//	paragraph.Append(TextSpan(" test ", bigStyle));
//	paragraph.Append(TextSpan("to see if ", regularStyle));
//	paragraph.Append(TextSpan("different", boldStyle));
//	paragraph.Append(TextSpan(" character styles already work.", regularStyle));
//	document->Append(paragraph);
//
//	paragraphStyle.SetSpacingTop(8.0f);
//	paragraphStyle.SetAlignment(ALIGN_CENTER);
//	paragraphStyle.SetJustify(false);
//
//	paragraph = Paragraph(paragraphStyle);
//	paragraph.Append(TextSpan("Different alignment styles ", regularStyle));
//	paragraph.Append(TextSpan("are", boldStyle));
//	paragraph.Append(TextSpan(" supported as of now!", regularStyle));
//	document->Append(paragraph);
//
//	// Test a bullet list
//	paragraphStyle.SetSpacingTop(8.0f);
//	paragraphStyle.SetAlignment(ALIGN_LEFT);
//	paragraphStyle.SetJustify(true);
//	paragraphStyle.SetBullet(Bullet("•", 12.0f));
//	paragraphStyle.SetLineInset(10.0f);
//
//	paragraph = Paragraph(paragraphStyle);
//	paragraph.Append(TextSpan("Even bullet lists are supported.", regularStyle));
//	document->Append(paragraph);
//
//	paragraph = Paragraph(paragraphStyle);
//	paragraph.Append(TextSpan("The wrapping in ", regularStyle));
//	paragraph.Append(TextSpan("this", italicStyle));
//
//	paragraph.Append(TextSpan(" bullet item should look visually "
//		"pleasing. And ", regularStyle));
//	paragraph.Append(TextSpan("why", italicAndBoldStyle));
//	paragraph.Append(TextSpan(" should it not?", regularStyle));
//	document->Append(paragraph);

	MarkupParser parser(regularStyle, paragraphStyle);

	TextDocumentRef document = parser.CreateDocumentFromMarkup(
		"== Text document test ==\n"
		"This is a test to see if '''different''' "
		"character styles already work.\n"
		"Different alignment styles '''are''' supported as of now!\n"
		" * Even bullet lists are supported.\n"
		" * The wrapping in ''this'' bullet item should look visually "
		"pleasing. And ''why'' should it not?\n"
	);

	documentView->SetTextDocument(document);
	documentView->SetTextEditor(TextEditorRef(new TextEditor(), true));
	documentView->MakeFocus();

	window->Show();
}