Ejemplo n.º 1
0
void EllipseMaskNode::convertToOperations(ExecutionSystem *graph, CompositorContext *context)
{
    EllipseMaskOperation *operation;

    operation = new EllipseMaskOperation();
    operation->setData((NodeEllipseMask *)this->getbNode()->storage);

    InputSocket *inputSocket = this->getInputSocket(0);
    OutputSocket *outputSocket = this->getOutputSocket(0);

    if (inputSocket->isConnected()) {
        inputSocket->relinkConnections(operation->getInputSocket(0), 0, graph);
        outputSocket->relinkConnections(operation->getOutputSocket());
    }
    else {
        /* Value operation to produce original transparent image */
        SetValueOperation *valueOperation = new SetValueOperation();
        valueOperation->setValue(0.0f);
        graph->addOperation(valueOperation);

        /* Scale that image up to render resolution */
        const RenderData *rd = context->getRenderData();
        ScaleFixedSizeOperation *scaleOperation = new ScaleFixedSizeOperation();

        scaleOperation->setIsAspect(false);
        scaleOperation->setIsCrop(false);
        scaleOperation->setOffset(0.0f, 0.0f);

        scaleOperation->setNewWidth(rd->xsch * rd->size / 100.0f);
        scaleOperation->setNewHeight(rd->ysch * rd->size / 100.0f);

        addLink(graph, valueOperation->getOutputSocket(0), scaleOperation->getInputSocket(0));
        addLink(graph, scaleOperation->getOutputSocket(0), operation->getInputSocket(0));
        outputSocket->relinkConnections(operation->getOutputSocket(0));

        scaleOperation->getInputSocket(0)->getConnection()->setIgnoreResizeCheck(true);

        graph->addOperation(scaleOperation);
    }

    this->getInputSocket(1)->relinkConnections(operation->getInputSocket(1), 1, graph);
    operation->setMaskType(this->getbNode()->custom1);

    graph->addOperation(operation);
}
Ejemplo n.º 2
0
void BoxMaskNode::convertToOperations(NodeConverter &converter,
                                      const CompositorContext &context) const
{
  NodeInput *inputSocket = this->getInputSocket(0);
  NodeOutput *outputSocket = this->getOutputSocket(0);

  BoxMaskOperation *operation;
  operation = new BoxMaskOperation();
  operation->setData((NodeBoxMask *)this->getbNode()->storage);
  operation->setMaskType(this->getbNode()->custom1);
  converter.addOperation(operation);

  if (inputSocket->isLinked()) {
    converter.mapInputSocket(inputSocket, operation->getInputSocket(0));
    converter.mapOutputSocket(outputSocket, operation->getOutputSocket());
  }
  else {
    /* Value operation to produce original transparent image */
    SetValueOperation *valueOperation = new SetValueOperation();
    valueOperation->setValue(0.0f);
    converter.addOperation(valueOperation);

    /* Scale that image up to render resolution */
    const RenderData *rd = context.getRenderData();
    ScaleFixedSizeOperation *scaleOperation = new ScaleFixedSizeOperation();

    scaleOperation->setIsAspect(false);
    scaleOperation->setIsCrop(false);
    scaleOperation->setOffset(0.0f, 0.0f);
    scaleOperation->setNewWidth(rd->xsch * rd->size / 100.0f);
    scaleOperation->setNewHeight(rd->ysch * rd->size / 100.0f);
    scaleOperation->getInputSocket(0)->setResizeMode(COM_SC_NO_RESIZE);
    converter.addOperation(scaleOperation);

    converter.addLink(valueOperation->getOutputSocket(0), scaleOperation->getInputSocket(0));
    converter.addLink(scaleOperation->getOutputSocket(0), operation->getInputSocket(0));
    converter.mapOutputSocket(outputSocket, operation->getOutputSocket(0));
  }

  converter.mapInputSocket(getInputSocket(1), operation->getInputSocket(1));
}