xref: /haiku/src/apps/haikudepot/ui_generic/MarkupTextView.cpp (revision f545fe6accd10cea983bb62caceb1aef32b90f2d)
1 /*
2  * Copyright 2013-2014, Stephan Aßmus <superstippi@gmx.de>.
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include "MarkupTextView.h"
8 
9 
10 static const rgb_color kLightBlack = (rgb_color){ 60, 60, 60, 255 };
11 
12 
MarkupTextView(const char * name)13 MarkupTextView::MarkupTextView(const char* name)
14 	:
15 	TextDocumentView(name)
16 {
17 	SetEditingEnabled(false);
18 	CharacterStyle regularStyle;
19 
20 	float fontSize = regularStyle.Font().Size();
21 
22 	ParagraphStyle paragraphStyle;
23 	paragraphStyle.SetJustify(true);
24 	paragraphStyle.SetSpacingTop(ceilf(fontSize * 0.3f));
25 	paragraphStyle.SetLineSpacing(ceilf(fontSize * 0.2f));
26 
27 	fMarkupParser.SetStyles(regularStyle, paragraphStyle);
28 }
29 
30 
31 void
SetText(const BString & markupText)32 MarkupTextView::SetText(const BString& markupText)
33 {
34 	SetTextDocument(fMarkupParser.CreateDocumentFromMarkup(markupText));
35 }
36 
37 
38 void
SetText(const BString heading,const BString & markupText)39 MarkupTextView::SetText(const BString heading, const BString& markupText)
40 {
41 	TextDocumentRef document(new(std::nothrow) TextDocument(), true);
42 
43 	Paragraph paragraph(fMarkupParser.HeadingParagraphStyle());
44 	paragraph.Append(TextSpan(heading,
45 		fMarkupParser.HeadingCharacterStyle()));
46 	document->Append(paragraph);
47 
48 	fMarkupParser.AppendMarkup(document, markupText);
49 
50 	SetTextDocument(document);
51 }
52 
53 
54 void
SetDisabledText(const BString & text)55 MarkupTextView::SetDisabledText(const BString& text)
56 {
57 	TextDocumentRef document(new(std::nothrow) TextDocument(), true);
58 
59 	ParagraphStyle paragraphStyle;
60 	paragraphStyle.SetAlignment(ALIGN_CENTER);
61 
62 	CharacterStyle disabledStyle(fMarkupParser.NormalCharacterStyle());
63 	disabledStyle.SetForegroundColor(kLightBlack);
64 
65 	Paragraph paragraph(paragraphStyle);
66 	paragraph.Append(TextSpan(text, disabledStyle));
67 	document->Append(paragraph);
68 
69 	SetTextDocument(document);
70 }
71