std::shared_ptr<NodeControl> GraphController::CreateViewNode(IGraphEditorNode* newNode) const {
	auto viewNode = std::make_shared<NodeControl>();

	std::vector<std::pair<std::string, std::string>> inputNames, outputNames;

	for (const auto inputIdx : Range(newNode->GetNumInputs())) {
		inputNames.push_back({ newNode->GetInputName(inputIdx), TidyTypename(newNode->GetInputTypeName(inputIdx)) });
	}
	for (const auto outputIdx : Range(newNode->GetNumOutputs())) {
		outputNames.push_back({ newNode->GetOutputName(outputIdx), TidyTypename(newNode->GetOutputTypeName(outputIdx)) });
	}

	viewNode->SetSize({ 300, 100 });
	viewNode->SetInputPorts(inputNames);
	viewNode->SetOutputPorts(outputNames);
	viewNode->SetName("");
	viewNode->SetType(TidyTypename(newNode->GetClassName()));

	return viewNode;
}
Esempio n. 2
0
NS_IMETHODIMP
InputPortManager::NotifySuccess(nsIArray* aDataList)
{
  MOZ_ASSERT(aDataList);

  if (!aDataList) {
    RejectPendingGetInputPortsPromises(NS_ERROR_DOM_ABORT_ERR);
    return NS_ERROR_INVALID_ARG;
  }

  uint32_t length;
  nsresult rv = aDataList->GetLength(&length);
  if (NS_WARN_IF(NS_FAILED(rv))) {
    return rv;
  }

  nsCOMPtr<nsIInputPortListener> portListener;
  rv = mInputPortService->GetInputPortListener(
    getter_AddRefs(portListener));
  if (NS_WARN_IF(NS_FAILED(rv))) {
    return rv;
  }

  ErrorResult erv;
  nsTArray<nsRefPtr<InputPort>> ports(length);
  for (uint32_t i = 0; i < length; i++) {
    nsCOMPtr<nsIInputPortData> portData = do_QueryElementAt(aDataList, i);
    if (NS_WARN_IF(!portData)) {
      continue;
    }

    InputPortData* data = static_cast<InputPortData*>(portData.get());
    nsRefPtr<InputPort> port;
    switch (data->GetType()) {
    case InputPortType::Av:
      port = AVInputPort::Create(GetParentObject(), portListener,
                                 portData, erv);
      break;
    case InputPortType::Displayport:
      port = DisplayPortInputPort::Create(GetParentObject(),
                                          portListener, portData, erv);
      break;
    case InputPortType::Hdmi:
      port = HDMIInputPort::Create(GetParentObject(), portListener,
                                   portData, erv);
      break;
    default:
      MOZ_ASSERT_UNREACHABLE("Unknown InputPort type");
      break;
    }
    MOZ_ASSERT(port);

    ports.AppendElement(port);
  }

  if (NS_WARN_IF(erv.Failed())) {
    return erv.StealNSResult();
  }

  erv = SetInputPorts(ports);

  return erv.StealNSResult();
}