Skip to content

Commit

Permalink
Merge branch 'RB-2.4' into RB-2.5
Browse files Browse the repository at this point in the history
  • Loading branch information
devernay committed Jan 20, 2022
2 parents 0ff8f3b + 684fdc1 commit 04b4985
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 58 deletions.
2 changes: 1 addition & 1 deletion Engine/Image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1861,7 +1861,7 @@ Image::halveRoIForDepth(const RectI & roi,
RectI dstRoI;
RectI srcRoI = roi;
srcRoI.intersect(srcBounds, &srcRoI); // intersect srcRoI with the region of definition
#ifdef DEBUG
#ifdef DEBUG_NAN
assert(!checkForNaNsNoLock(srcRoI));
#endif
dstRoI.x1 = (srcRoI.x1 + 1) / 2; // equivalent to ceil(srcRoI.x1/2.0)
Expand Down
65 changes: 36 additions & 29 deletions Engine/NodeName.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,21 +63,24 @@ Node::initNodeScriptName(const NodeSerialization* serialization, const QString&

if (!fixedName.isEmpty()) {

std::string baseName = fixedName.toStdString();
trimNumber(baseName);
std::string name;
int no = 1;
do {
name = baseName;
if (no > 1) {
name += '_';
std::stringstream ss;
ss << no;
name += ss.str();
}
++no;
} while ( group && group->checkIfNodeNameExists(name, this) );

std::string name = fixedName.toStdString();
// If the script name is available, use it as is (else we get issue #755).
// Else look for a similar name by adding a (different) number suffix.
if ( group && group->checkIfNodeNameExists(name, this) ) {
std::string baseName = name;
trimNumber(baseName);
int no = 1;
do {
name = baseName;
if (no > 1) {
name += '_';
std::stringstream ss;
ss << no;
name += ss.str();
}
++no;
} while ( group && group->checkIfNodeNameExists(name, this) );
}
//This version of setScriptName will not error if the name is invalid or already taken
setScriptName_no_error_check(name);

Expand All @@ -86,20 +89,24 @@ Node::initNodeScriptName(const NodeSerialization* serialization, const QString&
QMutexLocker k(&_imp->nameMutex);
_imp->cacheID = serialization->getCacheID();
}
std::string baseName = serialization->getNodeScriptName();
trimNumber(baseName);
std::string name;
int no = 1;
do {
name = baseName;
if (no > 1) {
name += '_';
std::stringstream ss;
ss << no;
name += ss.str();
}
++no;
} while ( group && group->checkIfNodeNameExists(name, this) );
std::string name = serialization->getNodeScriptName();
// If the serialized script name is available, use it as is (else we get issue #755).
// Else look for a similar name by adding a (different) number suffix.
if ( group && group->checkIfNodeNameExists(name, this) ) {
std::string baseName = name;
trimNumber(baseName);
int no = 1;
do {
name = baseName;
if (no > 1) {
name += '_';
std::stringstream ss;
ss << no;
name += ss.str();
}
++no;
} while ( group->checkIfNodeNameExists(name, this) );
}

//This version of setScriptName will not error if the name is invalid or already taken
setScriptName_no_error_check(name);
Expand Down
36 changes: 19 additions & 17 deletions Gui/NodeGraphPrivate10.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,24 +189,26 @@ NodeGraphPrivate::pasteNode(const NodeSerializationPtr & internalSerialization,
NodeGuiPtr gui = boost::dynamic_pointer_cast<NodeGui>(gui_i);
assert(gui);

std::string name;
if ( ( grp == group.lock() ) && ( !internalSerialization->getNode() || ( internalSerialization->getNode()->getGroup() == group.lock() ) ) ) {
//We pasted the node in the same group, give it another label
std::string baseName = internalSerialization->getNodeLabel();
trimNumber(baseName);
std::string name;
int no = 1;
do {
name = baseName;
if (no > 1) {
name += '_';
std::stringstream ss;
ss << no;
name += ss.str();
}
++no;
} while ( grp->checkIfNodeLabelExists( name, n.get() ) );

// We pasted the node in the same group, give it another label.
// If the label is available, use it as is.
// Else look for a similar name by adding a (different) number suffix.
std::string name = internalSerialization->getNodeLabel();
if ( grp->checkIfNodeLabelExists( name, n.get() ) ) {
std::string baseName = name;
trimNumber(baseName);
int no = 1;
do {
name = baseName;
if (no > 1) {
name += '_';
std::stringstream ss;
ss << no;
name += ss.str();
}
++no;
} while ( grp->checkIfNodeLabelExists( name, n.get() ) );
}
n->setLabel(name);
} else {
//If we paste the node in a different graph, it can keep its scriptname/label
Expand Down
16 changes: 7 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,14 @@ If you are willing to help, please contact the development team on the [pixls.us
- 32-bit floating-point linear color processing pipeline.
- Color management handled by [OpenColorIO](https://opencolorio.org/).
- Dozens of file formats supported: EXR, DPX, TIFF, JPG, PNG through [OpenImageIO](https://github.com/OpenImageIO/oiio) and [FFmpeg](https://ffmpeg.org/).
- Support for many free, open-source, and commercial OpenFX plugins—currently almost all features of OpenFX v1.4 are supported.
- [TuttleOFX](https://sites.google.com/site/tuttleofx/)
- [OpenFX-IO](https://github.com/NatronGitHub/openfx-io) to read anything else than standard 8-bits images
- [OpenFX-Misc](https://github.com/NatronGitHub/openfx-misc)
- [OpenFX-Vegas SDK samples](https://github.com/NatronGitHub/openfx-vegas)
- [OpenFX samples](https://github.com/NatronGitHub/openfx) (in the Support and Examples directories)
- Support for many free, open-source, and commercial OpenFX plugins—currently almost all features of OpenFX v1.4 are supported. Those marked with (+) are included in the binary releases.
- [OpenFX-IO](https://github.com/NatronGitHub/openfx-io) (+)
- [OpenFX-Misc](https://github.com/NatronGitHub/openfx-misc) (+)
- [OpenFX-G'MIC](https://github.com/NatronGitHub/openfx-gmic) (+)
- [OpenFX-Arena](https://github.com/NatronGitHub/openfx-arena) (+)
- [All OFX products from RevisionFX](http://www.revisionfx.com)
- [Boris FX](https://borisfx.com/) OpenFX plugins, including Sapphire
- [Furnace by The Foundry](http://www.thefoundry.co.uk/products/furnace/)
- [GenArts Sapphire](http://www.genarts.com/software/sapphire/overview)
- [Other GenArts products](http://www.genarts.com/software/other-vfx-products)
- ...And many more! Please tell us if you successfully tested other commercial plugins.
- Intuitive user interface: Natron aims not to break habits by providing an intuitive and familiar user interface. It is possible to customize and separate the graphical user interface on any number of screens. You can re-use your layouts and share your layout files (.nl).
- Performance: In Natron, anything you do produces real-time feedback in the viewer thanks to the optimized multi-threaded rendering pipeline and support for proxy rendering (computing at a lower resolution to speed up rendering).
Expand All @@ -54,7 +52,7 @@ If you are willing to help, please contact the development team on the [pixls.us
- Command-line rendering: Natron is capable of running without a GUI for batch rendering with scripts or on a render farm.
- Rotoscoping, rotopainting, and tracking support
- Multi-view workflow: Natron saves time by keeping all the views in the same stream. You can separate the views at any time with the OneView node.
- Python 2 scripting integration:
- Python scripting integration:

- Parameters expressions
- User-defined parameters
Expand Down
9 changes: 7 additions & 2 deletions tools/docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,15 @@ docker run -it --rm --mount src="$(pwd)/builds",target=/home/builds_archive,type

`GIT_URL`, `GIT_BRANCH`, and `GIT_COMMIT` can be set to launch a build from a specific git repository, branch, and/or commit.

If `GIT_URL` is not an official Natron repository (as listed in [gitRepositories.sh](https://github.com/NatronGitHub/Natron/blob/master/tools/jenkins/gitRepositories.sh)), `GIT_URL_IS_NATRON=1` can be used to force a Natron build, as in the following example, which launches a build from branch `SetDefaultProjectFormat` of repository `https://github.com/rodlie/Natron.git`.
For example, to launch a snapshot build on branch `RB-2.4`:
```
docker run -it --rm --mount src="$(pwd)/builds",target=/home/builds_archive,type=bind --env GIT_BRANCH=RB-2.4 natrongithub/natron-sdk:latest
```

If `GIT_URL` is not an official Natron repository (as listed in [gitRepositories.sh](https://github.com/NatronGitHub/Natron/blob/master/tools/jenkins/gitRepositories.sh)), `GIT_URL_IS_NATRON=1` can be used to force a Natron build, as in the following example, which launches a build from branch `my-feature-branch` of repository `https://github.com/mygithubaccount/Natron.git`.

```
docker run -it --rm --mount src="$(pwd)/builds",target=/home/builds_archive,type=bind --env GIT_URL_IS_NATRON=1 --env GIT_URL=https://github.com/rodlie/Natron.git --env GIT_BRANCH=SetDefaultProjectFormat natrongithub/natron-sdk:latest
docker run -it --rm --mount src="$(pwd)/builds",target=/home/builds_archive,type=bind --env GIT_URL_IS_NATRON=1 --env GIT_URL=https://github.com/mygithubaccount/Natron.git --env GIT_BRANCH=my-feature-branch natrongithub/natron-sdk:latest
```


Expand Down

0 comments on commit 04b4985

Please sign in to comment.