String HTMLTextFormControlElement::innerTextValue() const { HTMLElement* innerText = innerTextElement(); if (!innerText || !isTextFormControl()) return emptyString(); StringBuilder result; for (Node* node = innerText; node; node = NodeTraversal::next(node, innerText)) { if (node->hasTagName(brTag)) result.append(newlineCharacter); else if (node->isTextNode()) result.append(toText(node)->data()); } return finishText(result); }
void Model::drawMiniMap() { unsigned int IMAGE_SIZE = gamerImg.GetWidth(); double h = 50; //app->GetHeight()/2-FIELD_SIZE*IMAGE_SIZE/2; double w = 50; //app->GetWidth()/2-FIELD_SIZE*IMAGE_SIZE/3*2; pair<int,int> pos = getPlayerPosition(); int i_now = pos.first/FIELD_SIZE*FIELD_SIZE; int j_now = pos.second/FIELD_SIZE*FIELD_SIZE; int max_value_j = j_now+FIELD_SIZE; int cells_count = MAP_SIZE/FIELD_SIZE + static_cast<bool> (MAP_SIZE%FIELD_SIZE); int mini_map_w = w+(max_value_j-j_now)*IMAGE_SIZE+10, mini_map_h = h-2; int mutable_w = mini_map_w, mutable_h = mini_map_h; if (cells_count>1) { sf::String miniText("Mini Map:",sf::Font::GetDefaultFont(),FONT_SIZE/2); miniText.SetPosition(mini_map_w,mini_map_h-miniText.GetRect().GetHeight()); app->Draw(miniText); for (int i=0;i<cells_count;++i) { mutable_w = mini_map_w; for (int j=0;j<cells_count;++j) { if (i_now/FIELD_SIZE == i && j_now/FIELD_SIZE == j) { miniMapPlayerSpr.SetPosition(mutable_w,mutable_h); app->Draw(miniMapPlayerSpr); } else { miniMapSpr.SetPosition(mutable_w,mutable_h); app->Draw(miniMapSpr); } mutable_w += miniMapImg.GetWidth(); } mutable_h += miniMapImg.GetHeight(); } sf::String finishText("<-Finish!",sf::Font::GetDefaultFont(),FONT_SIZE/3); finishText.SetPosition(mutable_w+4,mutable_h-miniMapImg.GetHeight()); app->Draw(finishText); } drawLogStrings(mini_map_w,mutable_h); }
String HTMLTextFormControlElement::innerEditorValue() const { ASSERT(!hasAuthorShadowRoot()); HTMLElement* innerEditor = innerEditorElement(); if (!innerEditor || !isTextFormControl()) return emptyString(); StringBuilder result; for (Node* node = innerEditor; node; node = NodeTraversal::next(*node, innerEditor)) { if (isHTMLBRElement(*node)) result.append(newlineCharacter); else if (node->isTextNode()) result.append(toText(node)->data()); } return finishText(result); }
String HTMLTextFormControlElement::innerEditorValue() const { ASSERT(!hasOpenShadowRoot()); HTMLElement* innerEditor = innerEditorElement(); if (!innerEditor || !isTextFormControl()) return emptyString(); StringBuilder result; for (Node& node : NodeTraversal::inclusiveDescendantsOf(*innerEditor)) { if (isHTMLBRElement(node)) result.append(newlineCharacter); else if (node.isTextNode()) result.append(toText(node).data()); } return finishText(result); }
String HTMLTextFormControlElement::valueWithHardLineBreaks() const { // FIXME: It's not acceptable to ignore the HardWrap setting when there is no renderer. // While we have no evidence this has ever been a practical problem, it would be best to fix it some day. if (!isTextFormControl()) return value(); TextControlInnerTextElement* innerText = innerTextElement(); if (!innerText) return value(); RenderTextControlInnerBlock* renderer = innerText->renderer(); if (!renderer) return value(); Node* breakNode; unsigned breakOffset; RootInlineBox* line = renderer->firstRootBox(); if (!line) return value(); getNextSoftBreak(line, breakNode, breakOffset); StringBuilder result; for (Node* node = innerText->firstChild(); node; node = NodeTraversal::next(node, innerText)) { if (node->hasTagName(brTag)) result.append(newlineCharacter); else if (node->isTextNode()) { String data = toText(node)->data(); unsigned length = data.length(); unsigned position = 0; while (breakNode == node && breakOffset <= length) { if (breakOffset > position) { result.append(data, position, breakOffset - position); position = breakOffset; result.append(newlineCharacter); } getNextSoftBreak(line, breakNode, breakOffset); } result.append(data, position, length - position); } while (breakNode == node) getNextSoftBreak(line, breakNode, breakOffset); } return finishText(result); }
String HTMLTextFormControlElement::valueWithHardLineBreaks() const { // FIXME: It's not acceptable to ignore the HardWrap setting when there is no layoutObject. // While we have no evidence this has ever been a practical problem, it would be best to fix it some day. HTMLElement* innerText = innerEditorElement(); if (!innerText || !isTextFormControl()) return value(); LayoutBlockFlow* layoutObject = toLayoutBlockFlow(innerText->layoutObject()); if (!layoutObject) return value(); Node* breakNode; unsigned breakOffset; RootInlineBox* line = layoutObject->firstRootBox(); if (!line) return value(); getNextSoftBreak(line, breakNode, breakOffset); StringBuilder result; for (Node& node : NodeTraversal::descendantsOf(*innerText)) { if (isHTMLBRElement(node)) { result.append(newlineCharacter); } else if (node.isTextNode()) { String data = toText(node).data(); unsigned length = data.length(); unsigned position = 0; while (breakNode == node && breakOffset <= length) { if (breakOffset > position) { result.append(data, position, breakOffset - position); position = breakOffset; result.append(newlineCharacter); } getNextSoftBreak(line, breakNode, breakOffset); } result.append(data, position, length - position); } while (breakNode == node) getNextSoftBreak(line, breakNode, breakOffset); } return finishText(result); }