コード例 #1
0
std::string _test_vertical_layout() {
	struct LayoutProperties layoutProperties;
	layoutPropertiesInitialize(&layoutProperties);
	struct Element* e1 = createElement(composite); // Device - top level window
	layoutProperties.width.valueType = fill;
	layoutProperties.width.value = NAN;
	layoutProperties.height.valueType = fill;
	layoutProperties.height.value = NAN;
	struct Element* e2 = createElement(composite);
	measureNodeForVerticalLayout(layoutProperties, e2);
	layoutProperties.width = {fixed, 100};
	layoutProperties.height = {fixed, 100};
	struct Element* e3 = createElement(composite);
	measureNodeForVerticalLayout(layoutProperties, e3);
	addChildElement(e1, e2);
	addChildElement(e2, e3);
	doVerticalLayout((*e1)._children, 449, 662, false, false);
	ut_assert("error, absolute position top e2", (*e3)._measuredTop == 281);
	ut_assert("error, absolute position left e2", (*e3)._measuredLeft == 174.5);
	ut_assert("error, absolute width e2", (*e3)._measuredWidth == 100);
	ut_assert("error, absolute height e2", (*e3)._measuredHeight == 100);
	ut_assert("error, absolute position top e3", (*e2)._measuredTop == 0);
	ut_assert("error, absolute position left e3", (*e2)._measuredLeft == 0);
	ut_assert("error, absolute position width e3", (*e2)._measuredWidth == 449);
	ut_assert("error, absolute position height e3", (*e2)._measuredHeight == 662);
	return "";
}
コード例 #2
0
void nodeAddChild(struct Node* parent, struct Node* child) {
    child->parent = parent;
    if (parent->lastChild) {
        child->prev = parent->lastChild;
        parent->lastChild->next = child;
    } else {
        parent->firstChild = child;
    }
    parent->lastChild = child;

    addChildElement(&parent->element, &child->element);
}
コード例 #3
0
ファイル: GuiStatusBar.cpp プロジェクト: OpenIsles/OpenIsles
GuiStatusBar::GuiStatusBar(const Context& context) : GuiStaticGraphicElement(context), textElement(context) {
    const IGraphic* backgroundGraphic = context.graphicsMgr->getGraphicSet("statusbar")->getStatic()->getGraphic();
    setPosition(0, 734);
    setGraphic(backgroundGraphic);

    constexpr int paddingX = 15;
    textElement.setCoords(paddingX, 0, backgroundGraphic->getWidth() - 2*paddingX, backgroundGraphic->getHeight());
    textElement.setColor(&Color::white);
    textElement.setFontName("DroidSans-Bold.ttf");
    textElement.setFontSize(14);
    textElement.setAlign(RENDERTEXT_HALIGN_RIGHT | RENDERTEXT_VALIGN_MIDDLE);

    addChildElement(&textElement);
}
コード例 #4
0
GuiPanelHeader::GuiPanelHeader(const Context& context) : GuiStaticGraphicElement(context) {
    // Größe ist fix
    width = 248;
    height = 40;

    setGraphic(context.graphicsMgr->getGraphicSet("panel-header")->getStatic()->getGraphic());

    textElement = new GuiStaticTextElement(context);
    textElement->setCoords(35, 10, 178, 18);
    textElement->setColor(&Color::lightBrown);
    textElement->setShadowColor(&Color::black);
    textElement->setFontName("DroidSans-Bold.ttf");
    textElement->setFontSize(14);
    textElement->setAlign(RENDERTEXT_HALIGN_CENTER | RENDERTEXT_VALIGN_MIDDLE);

    addChildElement(textElement);
}
コード例 #5
0
ファイル: main.cpp プロジェクト: McMartin/JUCE.cmake
int main(int argc, char* argv[])
{
  if (argc != 3)
  {
    std::cerr << "usage: PListMerger"
              << " <first-plist-content>"
              << " <second-plist-content>" << std::endl;
    return 1;
  }

  const std::vector<std::string> args{argv, argv + argc};

  const juce::ScopedPointer<juce::XmlElement> firstPlistElement =
    juce::XmlDocument::parse(args.at(1));
  if (!firstPlistElement || !firstPlistElement->hasTagName("plist"))
  {
    std::cerr << "Invalid first plist content, expected <plist> element" << std::endl;
    return 1;
  }

  const auto firstDictElement = firstPlistElement->getChildByName("dict");
  if (!firstDictElement)
  {
    std::cerr << "Invalid first plist content, expected <dict> element" << std::endl;
    return 1;
  }

  std::vector<std::string> keysInFirstPlist;

  for (auto childElement = firstDictElement->getFirstChildElement();
       childElement != nullptr; childElement = childElement->getNextElement())
  {
    if (childElement->getTagName() != "key" || childElement->getNumChildElements() != 1
        || !childElement->getFirstChildElement()->isTextElement())
    {
      std::cerr << "Invalid first plist content, expected <key> element with only one "
                   "text child element"
                << std::endl;
      return 1;
    }

    const auto key = childElement->getFirstChildElement()->getText().toStdString();

    if (std::find(keysInFirstPlist.begin(), keysInFirstPlist.end(), key)
        != keysInFirstPlist.end())
    {
      std::cerr << "Invalid first plist content, duplicated key \"" << key << "\""
                << std::endl;
      return 1;
    }

    keysInFirstPlist.push_back(key);

    childElement = childElement->getNextElement();
    if (childElement == nullptr)
    {
      std::cerr << "Invalid first plist content, missing value associated with key \""
                << key << "\"" << std::endl;
      return 1;
    }
  }

  const juce::ScopedPointer<juce::XmlElement> secondPlistElement =
    juce::XmlDocument::parse(args.at(2));
  if (!secondPlistElement || !secondPlistElement->hasTagName("plist"))
  {
    std::cerr << "Invalid second plist content, expected <plist> element" << std::endl;
    return 1;
  }

  const auto secondDictElement = secondPlistElement->getChildByName("dict");
  if (!secondDictElement)
  {
    std::cerr << "Invalid second plist content, expected <dict> element" << std::endl;
    return 1;
  }

  for (auto childElement = secondDictElement->getFirstChildElement();
       childElement != nullptr; childElement = childElement->getNextElement())
  {
    if (childElement->getTagName() != "key" || childElement->getNumChildElements() != 1
        || !childElement->getFirstChildElement()->isTextElement())
    {
      std::cerr << "Invalid second plist content, expected <key> element with only one "
                   "text child element"
                << std::endl;
      return 1;
    }

    const auto key = childElement->getFirstChildElement()->getText().toStdString();

    const auto isKeyAlreadyInFirstPlist =
      std::find(keysInFirstPlist.begin(), keysInFirstPlist.end(), key)
      != keysInFirstPlist.end();

    if (!isKeyAlreadyInFirstPlist)
    {
      firstDictElement->addChildElement(new juce::XmlElement(*childElement));
    }

    childElement = childElement->getNextElement();
    if (childElement == nullptr)
    {
      std::cerr << "Invalid second plist content, missing value associated with key \""
                << key << "\"" << std::endl;
      return 1;
    }

    if (!isKeyAlreadyInFirstPlist)
    {
      firstDictElement->addChildElement(new juce::XmlElement(*childElement));
    }
  }

  std::cout << firstPlistElement->createDocument(juce::String{}, false, false)
            << std::flush;

  return 0;
}