126236Swpaul/*
226236Swpaul * Copyright 2013-2014, Stephan A��mus <superstippi@gmx.de>.
326236Swpaul * All rights reserved. Distributed under the terms of the MIT License.
426236Swpaul */
526236Swpaul
626236Swpaul
726236Swpaul#include "MarkupTextView.h"
826236Swpaul
926236Swpaul
1026236Swpaulstatic const rgb_color kLightBlack = (rgb_color){ 60, 60, 60, 255 };
1126236Swpaul
1226236Swpaul
1326236SwpaulMarkupTextView::MarkupTextView(const char* name)
1426236Swpaul	:
1526236Swpaul	TextDocumentView(name)
1626236Swpaul{
1726236Swpaul	SetEditingEnabled(false);
1826236Swpaul	CharacterStyle regularStyle;
1926236Swpaul
2026236Swpaul	float fontSize = regularStyle.Font().Size();
2126236Swpaul
2226236Swpaul	ParagraphStyle paragraphStyle;
2326236Swpaul	paragraphStyle.SetJustify(true);
2426236Swpaul	paragraphStyle.SetSpacingTop(ceilf(fontSize * 0.3f));
2526236Swpaul	paragraphStyle.SetLineSpacing(ceilf(fontSize * 0.2f));
2626236Swpaul
2726236Swpaul	fMarkupParser.SetStyles(regularStyle, paragraphStyle);
2826236Swpaul}
2926236Swpaul
3030378Scharnier
3126236Swpaulvoid
3230378ScharnierMarkupTextView::SetText(const BString& markupText)
3326236Swpaul{
3426236Swpaul	SetTextDocument(fMarkupParser.CreateDocumentFromMarkup(markupText));
3530378Scharnier}
3650479Speter
3730378Scharnier
3826236Swpaulvoid
3926236SwpaulMarkupTextView::SetText(const BString heading, const BString& markupText)
4026236Swpaul{
4126236Swpaul	TextDocumentRef document(new(std::nothrow) TextDocument(), true);
4226236Swpaul
4326236Swpaul	Paragraph paragraph(fMarkupParser.HeadingParagraphStyle());
4426236Swpaul	paragraph.Append(TextSpan(heading,
4526236Swpaul		fMarkupParser.HeadingCharacterStyle()));
4626236Swpaul	document->Append(paragraph);
4726236Swpaul
4826236Swpaul	fMarkupParser.AppendMarkup(document, markupText);
4926236Swpaul
5026236Swpaul	SetTextDocument(document);
5126236Swpaul}
5226236Swpaul
5326236Swpaul
5426236Swpaulvoid
5526236SwpaulMarkupTextView::SetDisabledText(const BString& text)
5626236Swpaul{
5726236Swpaul	TextDocumentRef document(new(std::nothrow) TextDocument(), true);
5826236Swpaul
5926236Swpaul	ParagraphStyle paragraphStyle;
6026236Swpaul	paragraphStyle.SetAlignment(ALIGN_CENTER);
6126236Swpaul
6226236Swpaul	CharacterStyle disabledStyle(fMarkupParser.NormalCharacterStyle());
6326236Swpaul	disabledStyle.SetForegroundColor(kLightBlack);
6426236Swpaul
6526236Swpaul	Paragraph paragraph(paragraphStyle);
6626236Swpaul	paragraph.Append(TextSpan(text, disabledStyle));
6726236Swpaul	document->Append(paragraph);
6826236Swpaul
6926236Swpaul	SetTextDocument(document);
7026236Swpaul}
7126236Swpaul