本文整理汇总了C++中Paragraph::GetInlines方法的典型用法代码示例。如果您正苦于以下问题:C++ Paragraph::GetInlines方法的具体用法?C++ Paragraph::GetInlines怎么用?C++ Paragraph::GetInlines使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Paragraph
的用法示例。
在下文中一共展示了Paragraph::GetInlines方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: new_anchor
void
TextSelection::SetText (const char *text)
{
#define CONTENT_START (0)
#define CONTENT_END ((guint32)-1)
if (anchor.GetParent() == NULL || moving.GetParent() == NULL)
// if either are null we're going nowhere fast...
return;
ClearSelection ();
// at this point the selection is empty and anchor == moving
if (text && *text) {
if (anchor.GetParent()->Is (Type::RUN)) {
const char *run_text = ((Run*)anchor.GetParent())->GetText();
if (run_text == NULL)
run_text = "\0";
char *new_text = (char*)g_malloc0 (strlen (run_text) + strlen (text) + 1);
if (strlen (text) < (size_t) anchor.ResolveLocation ()){
// #339RT enters here
g_free (new_text);
new_text = g_strdup ("BUGBUGBUG");
} else {
strncpy (new_text, run_text, anchor.ResolveLocation());
strcpy (new_text + anchor.ResolveLocation(), text);
strncpy (new_text + anchor.ResolveLocation() + strlen(text), run_text + anchor.ResolveLocation(), strlen (run_text) - anchor.ResolveLocation());
}
((Run*)anchor.GetParent())->SetText (new_text);
if (moving.GetLocation() > strlen (new_text)) {
anchor = TextPointer (anchor.GetParent(), CONTENT_END, anchor.GetLogicalDirection());
moving = TextPointer (anchor.GetParent(), CONTENT_END, anchor.GetLogicalDirection());
}
else {
TextPointer new_anchor (anchor.GetParent(), anchor.ResolveLocation () + strlen (text), anchor.GetLogicalDirection());
moving = TextPointer (anchor.GetParent(), anchor.ResolveLocation () + strlen (text), anchor.GetLogicalDirection());
anchor = new_anchor;
}
g_free (new_text);
if (anchor.CompareTo_np (moving) < 0) {
start = anchor;
end = moving;
}
else {
start = moving;
end = anchor;
}
}
else {
IDocumentNode *node = anchor.GetParentNode();
DependencyObjectCollection *children = node->GetDocumentChildren();
if (!children) {
// this can happen when anchor is in an InlineUIContainer.
printf ("NIEX TextSelection.SetText for anchor == InlineUIContainer.\n");
return;
}
Run *r = MoonUnmanagedFactory::CreateRun ();
r->SetText (text);
if (children->Is(Type::BLOCK_COLLECTION)) {
// the node takes Blocks as children, so we need to create a Paragraph first.
Paragraph *p = MoonUnmanagedFactory::CreateParagraph();
children->Insert (anchor.GetLocation(), Value (p));
children = p->GetInlines();
children->Add (Value (r));
p->unref ();
}
else {
children->Insert (anchor.GetLocation(), Value (r));
}
anchor = TextPointer (r, CONTENT_END, anchor.GetLogicalDirection());
moving = TextPointer (r, CONTENT_END, anchor.GetLogicalDirection());
r->unref ();
if (anchor.CompareTo_np (moving) < 0) {
start = anchor;
end = moving;
}
else {
start = moving;
end = anchor;
}
}
}
g_free (this->text);
this->text = NULL;
}