1/* 2 * Copyright 2013, Stephan A��mus <superstippi@gmx.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 6#include "TextDocumentTest.h" 7 8#include <math.h> 9#include <stdio.h> 10 11#include <LayoutBuilder.h> 12#include <ScrollView.h> 13#include <Window.h> 14 15#include "MarkupParser.h" 16#include "TextDocumentView.h" 17 18TextDocumentTest::TextDocumentTest() 19 : 20 BApplication("application/x-vnd.Haiku-TextDocumentTest") 21{ 22} 23 24 25TextDocumentTest::~TextDocumentTest() 26{ 27} 28 29 30void 31TextDocumentTest::ReadyToRun() 32{ 33 BRect frame(50.0, 50.0, 749.0, 549.0); 34 35 BWindow* window = new BWindow(frame, "Text document test", 36 B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_AUTO_UPDATE_SIZE_LIMITS); 37 38 TextDocumentView* documentView = new TextDocumentView("text document view"); 39 40 BScrollView* scrollView = new BScrollView("text scroll view", documentView, 41 false, true, B_NO_BORDER); 42 43 BLayoutBuilder::Group<>(window, B_VERTICAL) 44 .Add(scrollView) 45 ; 46 47 CharacterStyle regularStyle; 48 49 float fontSize = regularStyle.Font().Size(); 50 51 ParagraphStyle paragraphStyle; 52 paragraphStyle.SetJustify(true); 53 paragraphStyle.SetSpacingTop(ceilf(fontSize * 0.6f)); 54 paragraphStyle.SetLineSpacing(ceilf(fontSize * 0.2f)); 55 56// CharacterStyle boldStyle(regularStyle); 57// boldStyle.SetBold(true); 58// 59// CharacterStyle italicStyle(regularStyle); 60// italicStyle.SetItalic(true); 61// 62// CharacterStyle italicAndBoldStyle(boldStyle); 63// italicAndBoldStyle.SetItalic(true); 64// 65// CharacterStyle bigStyle(regularStyle); 66// bigStyle.SetFontSize(24); 67// bigStyle.SetForegroundColor(255, 50, 50); 68// 69// TextDocumentRef document(new TextDocument(), true); 70// 71// Paragraph paragraph(paragraphStyle); 72// paragraph.Append(TextSpan("This is a", regularStyle)); 73// paragraph.Append(TextSpan(" test ", bigStyle)); 74// paragraph.Append(TextSpan("to see if ", regularStyle)); 75// paragraph.Append(TextSpan("different", boldStyle)); 76// paragraph.Append(TextSpan(" character styles already work.", regularStyle)); 77// document->Append(paragraph); 78// 79// paragraphStyle.SetSpacingTop(8.0f); 80// paragraphStyle.SetAlignment(ALIGN_CENTER); 81// paragraphStyle.SetJustify(false); 82// 83// paragraph = Paragraph(paragraphStyle); 84// paragraph.Append(TextSpan("Different alignment styles ", regularStyle)); 85// paragraph.Append(TextSpan("are", boldStyle)); 86// paragraph.Append(TextSpan(" supported as of now!", regularStyle)); 87// document->Append(paragraph); 88// 89// // Test a bullet list 90// paragraphStyle.SetSpacingTop(8.0f); 91// paragraphStyle.SetAlignment(ALIGN_LEFT); 92// paragraphStyle.SetJustify(true); 93// paragraphStyle.SetBullet(Bullet("���", 12.0f)); 94// paragraphStyle.SetLineInset(10.0f); 95// 96// paragraph = Paragraph(paragraphStyle); 97// paragraph.Append(TextSpan("Even bullet lists are supported.", regularStyle)); 98// document->Append(paragraph); 99// 100// paragraph = Paragraph(paragraphStyle); 101// paragraph.Append(TextSpan("The wrapping in ", regularStyle)); 102// paragraph.Append(TextSpan("this", italicStyle)); 103// 104// paragraph.Append(TextSpan(" bullet item should look visually " 105// "pleasing. And ", regularStyle)); 106// paragraph.Append(TextSpan("why", italicAndBoldStyle)); 107// paragraph.Append(TextSpan(" should it not?", regularStyle)); 108// document->Append(paragraph); 109 110 MarkupParser parser(regularStyle, paragraphStyle); 111 112 TextDocumentRef document = parser.CreateDocumentFromMarkup( 113 "== Text document test ==\n" 114 "This is a test to see if '''different''' " 115 "character styles already work.\n" 116 "Different alignment styles '''are''' supported as of now!\n" 117 " * Even bullet lists are supported.\n" 118 " * The wrapping in ''this'' bullet item should look visually " 119 "pleasing. And ''why'' should it not?\n" 120 ); 121 122 documentView->SetTextDocument(document); 123 documentView->SetTextEditor(TextEditorRef(new TextEditor(), true)); 124 documentView->MakeFocus(); 125 126 window->Show(); 127} 128 129 130int 131main(int argc, char* argv[]) 132{ 133 TextDocumentTest().Run(); 134 return 0; 135} 136 137 138