From ea2ca3929f5e2daeb310d25f146b8a75493ac2f6 Mon Sep 17 00:00:00 2001 From: John Haddon Date: Wed, 12 Aug 2020 12:52:37 +0100 Subject: [PATCH 001/243] Gadget : Improve child layout and change tracking This allows us to cache Gadget bounds and compute them only when they have changed, knocking about 10% off the draw times for a large GraphGadget. It also simplifies the implementation of LinearContainer, and allows us to remove some signal/slot connections that were previously used to track layout dirtiness. --- Changes.md | 105 ----------------------------------------------------- 1 file changed, 105 deletions(-) diff --git a/Changes.md b/Changes.md index 05b0190b4d3..98dcc6f3f5e 100644 --- a/Changes.md +++ b/Changes.md @@ -570,111 +570,6 @@ Improvements - ImageReader : Fixed bug which caused fileName to be evaluated in unnecessary contexts. 0.58.3.2 (relative to 0.58.3.1) -======== - -Fixes ------ - -- BranchCreator : Fixed bugs affecting set computation. - -0.58.3.1 (relative to 0.58.3.0) -======== - -Fixes ------ - -- Viewer : Fixed crash when viewing a rapidly changing monochrome image or soloed channel. - -0.58.3.0 (relative to 0.58.2.0) -======== - -Improvements ------------- - -- Preferences : Added support for OpenColorIO context variables. These may contain references to Gaffer context variables via the standard `${variable}` syntax, but please note that such variables are only available in the Viewer and not in the rest of the UI (for instance, colour swatches and pickers). -- Viewer : Increased the size of transform tool handle hit areas. -- Arnold : Moved debug log messages into the Debug severity and added support for Memory and Timestamp options. - -Fixes ------ - -- Node Editor : Fix bug in section decoration when a plug was set to its user default. -- ErrorDialogue : Fixed extremely slow display of warning and error messages. This was particularly apparent when showing errors that occurred while opening files. -- Viewer : Fixed Default display transform so that it updates correctly when the default is changed via the Preferences dialogue, and when the context changes. -- UVView : Fixed a performance regression vs 0.57 when displaying many UDIM textures. -- OpDialogue, DispatchDialogue, ErrorDialogue : Fixed missing filtering controls for progress messages. -- Encapsulate : Fixed bug where globals and render sets were evaluated in the wrong context. -- OSLObject : Fixed invalid reads from Constant array primitive variables. -- PresetsPlugValueWidget/PlugValueWidget : Fixed bugs handling context-sensitive presets. - -API ---- - -- MessageWidget : `setMessages()` now also accepts messages in the format used by IECore.CapturingMessageHandler. -- WidgetAlgo : Added `keepUntilIdle()` method. -- OpenColorIOTransform : Added `processor()` and `processorHash()` public methods. - -0.58.2.0 (relative to 0.58.1.0) -======== - -Improvements ------------- - -- CollectScenes : Added support for collecting at roots of arbitrary depth. -- AttributeVisualiser : Added support for V2f, V3f, V2i, V3i, V2d and V3d data types. -- Node Editor : Added decoration to collapsed sections when any of their children have non-default values. -- HierarchyView : Added Ctrl + C shortcut/context menu action to copy the selected paths to the clipboard. -- UI : Added support for basic math operators (`+`, `-`, `/`, `*`, `%`) in numeric fields. - -Fixes ------ - -- PrimitiveInspector : - - Fixed bug that caused data lists to lose their scroll position during updates. - - Fixed bug that could cause the inspector to show a different location to other Editors. - - Fixed bug when the selected location doesn't exist in the input scene. -- Attributes : Fixed bug that could prevent interactive updates when the `global` plug was on. -- CollectScenes : Fixed childNames hashing bug. -- NodeAlgo : Fixed bug that caused `isSetToUserDefault()` to return `True` when the plug's input was from a ComputeNode. - Like `ValuePlug::isSetToDefault()`, `isSetToUserDefault()` will now never trigger a compute, and all computed inputs - are treated as non-default. -- GafferArnold : Added missing GafferOSL Python bindings import. -- Plug : Fixed bug that could break IPR updates following a node graph edit (#3911). -- Viewer : Fixed CropWindow tool reset button size. - -API ---- - -- OpenImageIOReader : Added methods for controlling the maximum number of images files to keep open at one time. - -0.58.1.0 (relative to 0.58.0.1) -======== - -- Catalogue : Added Ctrl-D shortcut to duplicate selected images (#3545). -- Viewer : - - Added Ctrl-D shortcut to duplicate currently viewed image when viewing the output of Catalogue node (#3545). - - Added enabled/reset controls to the Crop Window Tool. - - Improved display of the edited plug in the Inspector's pop-up edit windows. - -Fixes ------ - -- Viewer : - - Fixed bug preventing the Inspector from finding shaders when assigned via a Switch. - - Fixed bug that caused the wrong plug to be edited by the Inspector with nested EditScopes. - - Fixed bug that prevented selecting an Edit Scope that contained other Edit Scopes. - - Fixed bug that caused an exception when simultaneously editing multiple plugs the Inspector. -- Box : Fixed GIL management bug that could cause hangs when promoting a plug. -- SetFilter : Added missing set expression operators to node reference/tooltip. -- UIEditor : Fixed bug which allowed the creation of non-selectable presets. -- EditScopes : Fixed crash in `EditScope::processors()` if intermediate nodes had no corresponding input. -- ShaderAssignment : Fixed bug in `shader` plug connection acceptance that could cause crashes at shutdown. - -API ---- - -- EditScopeUI : Added support for listing user nodes in the Edit Scope navigation menu when their `editScope:includeInNavigationMenu` metadata entry is set to `True`. -- CropWindowTool : Added `plug()` and `enabledPlug()` methods to return the currently edited plugs or `nullptr`. 0.58.0.1 (relative to 0.58.0.0) ======== From c34ead87cf7df849b9928240ee6ec62c1a6478dd Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Fri, 9 Oct 2020 13:28:05 +0100 Subject: [PATCH 002/243] Build : Use dependencies 2.0.0a5 for all builds --- Changes.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index 98dcc6f3f5e..4ba2d306cb5 100644 --- a/Changes.md +++ b/Changes.md @@ -570,6 +570,111 @@ Improvements - ImageReader : Fixed bug which caused fileName to be evaluated in unnecessary contexts. 0.58.3.2 (relative to 0.58.3.1) +======== + +Fixes +----- + +- BranchCreator : Fixed bugs affecting set computation. + +0.58.3.1 (relative to 0.58.3.0) +======== + +Fixes +----- + +- Viewer : Fixed crash when viewing a rapidly changing monochrome image or soloed channel. + +0.58.3.0 (relative to 0.58.2.0) +======== + +Improvements +------------ + +- Preferences : Added support for OpenColorIO context variables. These may contain references to Gaffer context variables via the standard `${variable}` syntax, but please note that such variables are only available in the Viewer and not in the rest of the UI (for instance, colour swatches and pickers). +- Viewer : Increased the size of transform tool handle hit areas. +- Arnold : Moved debug log messages into the Debug severity and added support for Memory and Timestamp options. + +Fixes +----- + +- Node Editor : Fix bug in section decoration when a plug was set to its user default. +- ErrorDialogue : Fixed extremely slow display of warning and error messages. This was particularly apparent when showing errors that occurred while opening files. +- Viewer : Fixed Default display transform so that it updates correctly when the default is changed via the Preferences dialogue, and when the context changes. +- UVView : Fixed a performance regression vs 0.57 when displaying many UDIM textures. +- OpDialogue, DispatchDialogue, ErrorDialogue : Fixed missing filtering controls for progress messages. +- Encapsulate : Fixed bug where globals and render sets were evaluated in the wrong context. +- OSLObject : Fixed invalid reads from Constant array primitive variables. +- PresetsPlugValueWidget/PlugValueWidget : Fixed bugs handling context-sensitive presets. + +API +--- + +- MessageWidget : `setMessages()` now also accepts messages in the format used by IECore.CapturingMessageHandler. +- WidgetAlgo : Added `keepUntilIdle()` method. +- OpenColorIOTransform : Added `processor()` and `processorHash()` public methods. + +0.58.2.0 (relative to 0.58.1.0) +======== + +Improvements +------------ + +- CollectScenes : Added support for collecting at roots of arbitrary depth. +- AttributeVisualiser : Added support for V2f, V3f, V2i, V3i, V2d and V3d data types. +- Node Editor : Added decoration to collapsed sections when any of their children have non-default values. +- HierarchyView : Added Ctrl + C shortcut/context menu action to copy the selected paths to the clipboard. +- UI : Added support for basic math operators (`+`, `-`, `/`, `*`, `%`) in numeric fields. + +Fixes +----- + +- PrimitiveInspector : + - Fixed bug that caused data lists to lose their scroll position during updates. + - Fixed bug that could cause the inspector to show a different location to other Editors. + - Fixed bug when the selected location doesn't exist in the input scene. +- Attributes : Fixed bug that could prevent interactive updates when the `global` plug was on. +- CollectScenes : Fixed childNames hashing bug. +- NodeAlgo : Fixed bug that caused `isSetToUserDefault()` to return `True` when the plug's input was from a ComputeNode. + Like `ValuePlug::isSetToDefault()`, `isSetToUserDefault()` will now never trigger a compute, and all computed inputs + are treated as non-default. +- GafferArnold : Added missing GafferOSL Python bindings import. +- Plug : Fixed bug that could break IPR updates following a node graph edit (#3911). +- Viewer : Fixed CropWindow tool reset button size. + +API +--- + +- OpenImageIOReader : Added methods for controlling the maximum number of images files to keep open at one time. + +0.58.1.0 (relative to 0.58.0.1) +======== + +- Catalogue : Added Ctrl-D shortcut to duplicate selected images (#3545). +- Viewer : + - Added Ctrl-D shortcut to duplicate currently viewed image when viewing the output of Catalogue node (#3545). + - Added enabled/reset controls to the Crop Window Tool. + - Improved display of the edited plug in the Inspector's pop-up edit windows. + +Fixes +----- + +- Viewer : + - Fixed bug preventing the Inspector from finding shaders when assigned via a Switch. + - Fixed bug that caused the wrong plug to be edited by the Inspector with nested EditScopes. + - Fixed bug that prevented selecting an Edit Scope that contained other Edit Scopes. + - Fixed bug that caused an exception when simultaneously editing multiple plugs the Inspector. +- Box : Fixed GIL management bug that could cause hangs when promoting a plug. +- SetFilter : Added missing set expression operators to node reference/tooltip. +- UIEditor : Fixed bug which allowed the creation of non-selectable presets. +- EditScopes : Fixed crash in `EditScope::processors()` if intermediate nodes had no corresponding input. +- ShaderAssignment : Fixed bug in `shader` plug connection acceptance that could cause crashes at shutdown. + +API +--- + +- EditScopeUI : Added support for listing user nodes in the Edit Scope navigation menu when their `editScope:includeInNavigationMenu` metadata entry is set to `True`. +- CropWindowTool : Added `plug()` and `enabledPlug()` methods to return the currently edited plugs or `nullptr`. 0.58.0.1 (relative to 0.58.0.0) ======== @@ -11488,4 +11593,4 @@ See python/GafferTest/ParameterHandlerTest.py for an example. addChild( n2 ) -* Fixed bug which caused "RuntimeError: Internal C++ object (PySide.QtGui.QLineEdit) already deleted." messages to be displayed. +* Fixed bug which caused "RuntimeError: Internal C++ object (PySide.QtGui.QLineEdit) already deleted." messages to be displayed. \ No newline at end of file From c730ddf9956b83c11076011efcbb71e7c38dd18a Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Thu, 13 Jun 2019 10:38:36 +0100 Subject: [PATCH 003/243] GafferUI : Backport compatibility patch to allow >0.54 layouts to load --- startup/GafferUI/layoutCompatibility.py | 77 +++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 startup/GafferUI/layoutCompatibility.py diff --git a/startup/GafferUI/layoutCompatibility.py b/startup/GafferUI/layoutCompatibility.py new file mode 100644 index 00000000000..f51e129b1dd --- /dev/null +++ b/startup/GafferUI/layoutCompatibility.py @@ -0,0 +1,77 @@ +########################################################################## +# +# Copyright (c) 2019, Cinesite VFX Ltd. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided with +# the distribution. +# +# * Neither the name of John Haddon nor the names of +# any other contributors to this software may be used to endorse or +# promote products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +########################################################################## + +import re + +import Gaffer +import GafferUI + +import imath + +if Gaffer.About.compatibilityVersion() < 54 : + + # Remove new kwargs introduced to store positions/detached panels + def __initWrapper( originalInit ) : + + def init( self, *args, **kwargs ) : + for kw in ( "windowState", "detachedPanels" ) : + if kw in kwargs : + del kwargs[kw] + originalInit( self, *args, **kwargs ) + + return init + + GafferUI.CompoundEditor.__init__ = __initWrapper( GafferUI.CompoundEditor.__init__ ) + + # windowState requires imath, so we need to modify the eval environment + def __create( self, name, scriptNode ) : + + layout = self._Layouts__namedLayouts[name] + + # first try to import the modules the layout needs + contextDict = { "scriptNode" : scriptNode, "imath" : imath } + imported = set() + classNameRegex = re.compile( "[a-zA-Z]*Gaffer[^(,]*\(" ) + for className in classNameRegex.findall( layout.repr ) : + moduleName = className.partition( "." )[0] + if moduleName not in imported : + exec( "import %s" % moduleName, contextDict, contextDict ) + imported.add( moduleName ) + + return eval( layout.repr, contextDict, contextDict ) + + GafferUI.Layouts.create = __create + From 5e2d6b42b07169c9790c63f5aa047526ab031e5a Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:41:14 -0700 Subject: [PATCH 004/243] Exported symbols for src/GafferBindings --- include/GafferBindings/DataBinding.h | 2 + .../MatchPatternPathFilterBinding.h | 49 +++++++++++++++++++ include/GafferBindings/ReferenceBinding.h | 49 +++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 include/GafferBindings/MatchPatternPathFilterBinding.h create mode 100644 include/GafferBindings/ReferenceBinding.h diff --git a/include/GafferBindings/DataBinding.h b/include/GafferBindings/DataBinding.h index 9b42331bd8a..fa3eb3f55ac 100644 --- a/include/GafferBindings/DataBinding.h +++ b/include/GafferBindings/DataBinding.h @@ -43,6 +43,8 @@ #include "IECore/Data.h" +#include "GafferBindings/Export.h" + namespace GafferBindings { diff --git a/include/GafferBindings/MatchPatternPathFilterBinding.h b/include/GafferBindings/MatchPatternPathFilterBinding.h new file mode 100644 index 00000000000..363a286f86e --- /dev/null +++ b/include/GafferBindings/MatchPatternPathFilterBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERBINDINGS_MATCHPATTERNPATHFILTERBINDING_H +#define GAFFERBINDINGS_MATCHPATTERNPATHFILTERBINDING_H + +#include "GafferBindings/Export.h" + +namespace GafferBindings +{ + +GAFFERBINDINGS_API void bindMatchPatternPathFilter(); + +} // namespace GafferBindings + +#endif // GAFFERBINDINGS_MATCHPATTERNPATHFILTERBINDING_H diff --git a/include/GafferBindings/ReferenceBinding.h b/include/GafferBindings/ReferenceBinding.h new file mode 100644 index 00000000000..4ee9e90df6e --- /dev/null +++ b/include/GafferBindings/ReferenceBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERBINDINGS_REFERENCEBINDING_H +#define GAFFERBINDINGS_REFERENCEBINDING_H + +#include "GafferBindings/Export.h" + +namespace GafferBindings +{ + +GAFFERBINDINGS_API void bindReference(); + +} // namespace GafferBindings + +#endif // GAFFERBINDINGS_REFERENCEBINDING_H From d870afdf28e3242634a129c87f5b7e30a41811a0 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:42:51 -0700 Subject: [PATCH 005/243] Exported symbols for src/GafferDispatcherBindings --- include/GafferDispatchBindings/Export.h | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/GafferDispatchBindings/Export.h diff --git a/include/GafferDispatchBindings/Export.h b/include/GafferDispatchBindings/Export.h new file mode 100644 index 00000000000..a0cd7338074 --- /dev/null +++ b/include/GafferDispatchBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERDISPATCHBINDINGS_EXPORT_H +#define GAFFERDISPATCHBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERDISPATCHBINDINGS_API macro based on whether or not we are compiling +// GafferDispatchBindings, or including headers for linking to it. the GAFFERDISPATCHBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferDispatchBindings_EXPORTS + #define GAFFERDISPATCHBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERDISPATCHBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERDISPATCHBINDINGS_EXPORT_H From b394e421095aad27b9c61bec758a687f075b9346 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:47:06 -0700 Subject: [PATCH 006/243] Exported symbols for src/GafferCortex --- include/GafferCortex/ExecutableOpHolder.h | 1 + include/GafferCortex/OpHolder.h | 1 + include/GafferCortex/ParameterHandler.h | 2 ++ 3 files changed, 4 insertions(+) diff --git a/include/GafferCortex/ExecutableOpHolder.h b/include/GafferCortex/ExecutableOpHolder.h index dcc1bbc190e..fd5f0cdf225 100644 --- a/include/GafferCortex/ExecutableOpHolder.h +++ b/include/GafferCortex/ExecutableOpHolder.h @@ -37,6 +37,7 @@ #ifndef GAFFERCORTEX_EXECUTABLEOPHOLDER_H #define GAFFERCORTEX_EXECUTABLEOPHOLDER_H +#include "GafferCortex/Export.h" #include "GafferCortex/ParameterisedHolder.h" namespace IECore diff --git a/include/GafferCortex/OpHolder.h b/include/GafferCortex/OpHolder.h index 25bdfea0f3a..dc575415acf 100644 --- a/include/GafferCortex/OpHolder.h +++ b/include/GafferCortex/OpHolder.h @@ -37,6 +37,7 @@ #ifndef GAFFERCORTEX_OPHOLDER_H #define GAFFERCORTEX_OPHOLDER_H +#include "GafferCortex/Export.h" #include "GafferCortex/ParameterisedHolder.h" namespace IECore diff --git a/include/GafferCortex/ParameterHandler.h b/include/GafferCortex/ParameterHandler.h index 560f3766487..de842eb30db 100644 --- a/include/GafferCortex/ParameterHandler.h +++ b/include/GafferCortex/ParameterHandler.h @@ -46,6 +46,8 @@ #include +#include "GafferCortex/Export.h" + namespace GafferCortex { From 852fbff0e42abe0775ae313918420ca5e9656e6b Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:47:41 -0700 Subject: [PATCH 007/243] Exported symbols for src/GafferCortexBindings --- include/GafferCortexBindings/Export.h | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/GafferCortexBindings/Export.h diff --git a/include/GafferCortexBindings/Export.h b/include/GafferCortexBindings/Export.h new file mode 100644 index 00000000000..b046072d14a --- /dev/null +++ b/include/GafferCortexBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERCORTEXBINDINGS_EXPORT_H +#define GAFFERCORTEXBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERCORTEXBINDINGS_API macro based on whether or not we are compiling +// GafferCortexBindings, or including headers for linking to it. the GAFFERCORTEXBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferCortexBindings_EXPORTS + #define GAFFERCORTEXBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERCORTEXBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERCORTEXBINDINGS_EXPORT_H From 5c1bfa3c4e7ed79abc2112adb78b6ae399bb8532 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:51:42 -0700 Subject: [PATCH 008/243] Exported symbols for src/GafferImage --- include/GafferImage/ColorSpace.h | 1 + include/GafferImage/CopyImageMetadata.h | 1 + include/GafferImage/FilterAlgo.h | 4 ++-- include/GafferImage/Format.h | 2 ++ include/GafferImage/ImageAlgo.h | 2 ++ include/GafferImage/ImageProcessor.h | 1 + include/GafferImage/ImageTransform.h | 1 + include/GafferImage/Median.h | 1 + include/GafferImage/VectorWarp.h | 1 + include/GafferScene/ObjectToScene.h | 1 + 10 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/GafferImage/ColorSpace.h b/include/GafferImage/ColorSpace.h index 5e162050be0..e5b6a9439f1 100644 --- a/include/GafferImage/ColorSpace.h +++ b/include/GafferImage/ColorSpace.h @@ -38,6 +38,7 @@ #ifndef GAFFERIMAGE_COLORSPACE_H #define GAFFERIMAGE_COLORSPACE_H +#include "GafferImage/Export.h" #include "GafferImage/OpenColorIOTransform.h" namespace Gaffer diff --git a/include/GafferImage/CopyImageMetadata.h b/include/GafferImage/CopyImageMetadata.h index b6e235b0ff5..4e3e154c4bc 100644 --- a/include/GafferImage/CopyImageMetadata.h +++ b/include/GafferImage/CopyImageMetadata.h @@ -37,6 +37,7 @@ #ifndef GAFFERIMAGE_COPYIMAGEMETADATA_H #define GAFFERIMAGE_COPYIMAGEMETADATA_H +#include "GafferImage/Export.h" #include "GafferImage/MetadataProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferImage/FilterAlgo.h b/include/GafferImage/FilterAlgo.h index 70e743dde01..3cd31f9f0e3 100644 --- a/include/GafferImage/FilterAlgo.h +++ b/include/GafferImage/FilterAlgo.h @@ -60,7 +60,7 @@ GAFFERIMAGE_API const OIIO::Filter2D* acquireFilter( const std::string &name ); // Find the region covered by a filter with a given width, given a position and axis-aligned derivatives // to compute the bounding rectangle -inline Imath::Box2f filterSupport( const Imath::V2f &p, float dx, float dy, float filterWidth ); +GAFFERIMAGE_API inline Imath::Box2f filterSupport( const Imath::V2f &p, float dx, float dy, float filterWidth ); // Filter over a rectangle shaped region of the image defined by a center point and two axis-aligned derivatives. // The sampler must have been initialized to cover all pixels with centers lying with the support of the filter, @@ -77,7 +77,7 @@ GAFFERIMAGE_API float sampleParallelogram( Sampler &sampler, const Imath::V2f &p // If you have a point and derivatives defining a region to filter over, but you want to use sampleBox // instead of sampleParallelogram for performance reasons, you can use this function to get axis-aligned // derivatives which will approximate the result of sampleParallelogram -inline Imath::V2f derivativesToAxisAligned( const Imath::V2f &p, const Imath::V2f &dpdx, const Imath::V2f &dpdy ); +GAFFERIMAGE_API inline Imath::V2f derivativesToAxisAligned( const Imath::V2f &p, const Imath::V2f &dpdx, const Imath::V2f &dpdy ); } // namespace FilterAlgo diff --git a/include/GafferImage/Format.h b/include/GafferImage/Format.h index 85ffcdda4c7..d52e01ec2b1 100644 --- a/include/GafferImage/Format.h +++ b/include/GafferImage/Format.h @@ -48,6 +48,8 @@ IECORE_POP_DEFAULT_VISIBILITY #include #include +#include "GafferImage/Export.h" + namespace GafferImage { diff --git a/include/GafferImage/ImageAlgo.h b/include/GafferImage/ImageAlgo.h index 6ab42783e09..d5209b7a091 100644 --- a/include/GafferImage/ImageAlgo.h +++ b/include/GafferImage/ImageAlgo.h @@ -50,6 +50,8 @@ IECORE_POP_DEFAULT_VISIBILITY #include +#include "GafferImage/Export.h" + namespace GafferImage { diff --git a/include/GafferImage/ImageProcessor.h b/include/GafferImage/ImageProcessor.h index 9dc016ec26a..bab80804f18 100644 --- a/include/GafferImage/ImageProcessor.h +++ b/include/GafferImage/ImageProcessor.h @@ -38,6 +38,7 @@ #ifndef GAFFERIMAGE_IMAGEPROCESSOR_H #define GAFFERIMAGE_IMAGEPROCESSOR_H +#include "GafferImage/Export.h" #include "GafferImage/ImageNode.h" namespace Gaffer diff --git a/include/GafferImage/ImageTransform.h b/include/GafferImage/ImageTransform.h index 44aaaef6036..d7bbc470b33 100644 --- a/include/GafferImage/ImageTransform.h +++ b/include/GafferImage/ImageTransform.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_IMAGETRANSFORM_H #define GAFFERSCENE_IMAGETRANSFORM_H +#include "GafferImage/Export.h" #include "GafferImage/FlatImageProcessor.h" namespace Gaffer diff --git a/include/GafferImage/Median.h b/include/GafferImage/Median.h index 40e6c19e0d6..75799d3d68f 100644 --- a/include/GafferImage/Median.h +++ b/include/GafferImage/Median.h @@ -37,6 +37,7 @@ #ifndef GAFFERIMAGE_MEDIAN_H #define GAFFERIMAGE_MEDIAN_H +#include "GafferImage/Export.h" #include "GafferImage/RankFilter.h" namespace GafferImage diff --git a/include/GafferImage/VectorWarp.h b/include/GafferImage/VectorWarp.h index 7ffce9f65b2..757a9745baf 100644 --- a/include/GafferImage/VectorWarp.h +++ b/include/GafferImage/VectorWarp.h @@ -37,6 +37,7 @@ #ifndef GAFFERIMAGE_UVWARP_H #define GAFFERIMAGE_UVWARP_H +#include "GafferImage/Export.h" #include "GafferImage/Warp.h" namespace GafferImage diff --git a/include/GafferScene/ObjectToScene.h b/include/GafferScene/ObjectToScene.h index 7bbc44cd0f0..25299b1a5c0 100644 --- a/include/GafferScene/ObjectToScene.h +++ b/include/GafferScene/ObjectToScene.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_OBJECTTOSCENE_H #define GAFFERSCENE_OBJECTTOSCENE_H +#include "GafferImage/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene From 60948654e49c274c2352a52a3a413e3d93479ba1 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:01:38 -0700 Subject: [PATCH 009/243] Exported symbols for src/GafferImageBindings --- include/GafferImageBindings/Export.h | 51 +++++++++++++++++++ .../ImageProcessorBinding.h | 49 ++++++++++++++++++ include/GafferImageBindings/ResampleBinding.h | 49 ++++++++++++++++++ include/GafferImageBindings/ResizeBinding.h | 49 ++++++++++++++++++ include/GafferImageBindings/ShuffleBinding.h | 49 ++++++++++++++++++ 5 files changed, 247 insertions(+) create mode 100644 include/GafferImageBindings/Export.h create mode 100644 include/GafferImageBindings/ImageProcessorBinding.h create mode 100644 include/GafferImageBindings/ResampleBinding.h create mode 100644 include/GafferImageBindings/ResizeBinding.h create mode 100644 include/GafferImageBindings/ShuffleBinding.h diff --git a/include/GafferImageBindings/Export.h b/include/GafferImageBindings/Export.h new file mode 100644 index 00000000000..a382c2e45f6 --- /dev/null +++ b/include/GafferImageBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGEBINDINGS_EXPORT_H +#define GAFFERIMAGEBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERIMAGEBINDINGS_API macro based on whether or not we are compiling +// GafferImageBindings, or including headers for linking to it. the GAFFERIMAGEBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferImageBindings_EXPORTS + #define GAFFERIMAGEBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERIMAGEBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERIMAGEBINDINGS_EXPORT_H diff --git a/include/GafferImageBindings/ImageProcessorBinding.h b/include/GafferImageBindings/ImageProcessorBinding.h new file mode 100644 index 00000000000..d404abffc59 --- /dev/null +++ b/include/GafferImageBindings/ImageProcessorBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGEBINDINGS_IMAGEPROCESSORBINDING_H +#define GAFFERIMAGEBINDINGS_IMAGEPROCESSORBINDING_H + +#include "GafferImageBindings/Export.h" + +namespace GafferImageBindings +{ + +GAFFERIMAGEBINDINGS_API void bindImageProcessor(); + +} // namespace GafferImageBindings + +#endif // GAFFERIMAGEBINDINGS_IMAGEPROCESSORBINDING_H diff --git a/include/GafferImageBindings/ResampleBinding.h b/include/GafferImageBindings/ResampleBinding.h new file mode 100644 index 00000000000..260f48b768c --- /dev/null +++ b/include/GafferImageBindings/ResampleBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGEBINDINGS_RESAMPLEBINDING_H +#define GAFFERIMAGEBINDINGS_RESAMPLEBINDING_H + +#include "GafferImageBindings/Export.h" + +namespace GafferImageBindings +{ + +GAFFERIMAGEBINDINGS_API void bindResample(); + +}; // namespace GafferImageBindings + +#endif // GAFFERIMAGEBINDINGS_RESAMPLEBINDING_H diff --git a/include/GafferImageBindings/ResizeBinding.h b/include/GafferImageBindings/ResizeBinding.h new file mode 100644 index 00000000000..ec266eb6e4d --- /dev/null +++ b/include/GafferImageBindings/ResizeBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGEBINDINGS_RESIZEEBINDING_H +#define GAFFERIMAGEBINDINGS_RESIZEEBINDING_H + +#include "GafferImageBindings/Export.h" + +namespace GafferImageBindings +{ + +GAFFERIMAGEBINDINGS_API void bindResize(); + +}; // namespace GafferImageBindings + +#endif // GAFFERIMAGEBINDINGS_RESIZEEBINDING_H diff --git a/include/GafferImageBindings/ShuffleBinding.h b/include/GafferImageBindings/ShuffleBinding.h new file mode 100644 index 00000000000..56787224945 --- /dev/null +++ b/include/GafferImageBindings/ShuffleBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGEBINDINGS_SHUFFLEBINDING_H +#define GAFFERIMAGEBINDINGS_SHUFFLEBINDING_H + +#include "GafferImageBindings/Export.h" + +namespace GafferImageBindings +{ + +GAFFERIMAGEBINDINGS_API void bindShuffle(); + +}; // namespace GafferImageBindings + +#endif // GAFFERIMAGEBINDINGS_SHUFFLEBINDING_H From 7a206c578b909f5e24781a360b52ea24240e50a5 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:02:22 -0700 Subject: [PATCH 010/243] Exported symbols for src/GafferImageTest --- include/GafferImageTest/Export.h | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/GafferImageTest/Export.h diff --git a/include/GafferImageTest/Export.h b/include/GafferImageTest/Export.h new file mode 100644 index 00000000000..552341dbee7 --- /dev/null +++ b/include/GafferImageTest/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGETEST_EXPORT_H +#define GAFFERIMAGETEST_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERIMAGETEST_API macro based on whether or not we are compiling +// GafferImageTest, or including headers for linking to it. the GAFFERIMAGETEST_API +// macro is the one that is used in the class definitions. +#ifdef GafferImageTest_EXPORTS + #define GAFFERIMAGETEST_API GAFFER_EXPORT +#else + #define GAFFERIMAGETEST_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERIMAGETEST_EXPORT_H From 03c4c1768167950bfc903167a4ba2036acd8692b Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:04:40 -0700 Subject: [PATCH 011/243] Exported symbols for src/GafferUI --- include/GafferUI/ButtonEvent.h | 1 + include/GafferUI/ContainerGadget.h | 1 + include/GafferUI/DragDropEvent.h | 1 + include/GafferUI/Frame.h | 1 + include/GafferUI/Handle.h | 5 +- include/GafferUI/IndividualContainer.h | 1 + include/GafferUI/KeyEvent.h | 1 + include/GafferUI/LinearContainer.h | 1 + include/GafferUI/ModifiableEvent.h | 1 + include/GafferUI/NameGadget.h | 1 + include/GafferUI/NodeGadget.h | 1 + include/GafferUI/PlugGadget.h | 1 + include/GafferUI/Pointer.h | 2 + include/GafferUI/RenderableGadget.h | 157 +++++++++++++++++++++++++ include/GafferUI/RotateHandle.h | 1 + include/GafferUI/ScaleHandle.h | 1 + include/GafferUI/SpacerGadget.h | 1 + include/GafferUI/SplinePlugGadget.h | 109 +++++++++++++++++ include/GafferUI/StandardGraphLayout.h | 1 + include/GafferUI/TextGadget.h | 1 + include/GafferUI/TranslateHandle.h | 1 + 21 files changed, 288 insertions(+), 2 deletions(-) create mode 100644 include/GafferUI/RenderableGadget.h create mode 100644 include/GafferUI/SplinePlugGadget.h diff --git a/include/GafferUI/ButtonEvent.h b/include/GafferUI/ButtonEvent.h index 8b46fc0139d..51eb3ec19f7 100644 --- a/include/GafferUI/ButtonEvent.h +++ b/include/GafferUI/ButtonEvent.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_BUTTONEVENT_H #define GAFFERUI_BUTTONEVENT_H +#include "GafferUI/Export.h" #include "GafferUI/ModifiableEvent.h" #include "IECore/LineSegment.h" diff --git a/include/GafferUI/ContainerGadget.h b/include/GafferUI/ContainerGadget.h index 726b874f6bf..45d6b1b1461 100644 --- a/include/GafferUI/ContainerGadget.h +++ b/include/GafferUI/ContainerGadget.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_CONTAINERGADGET_H #define GAFFERUI_CONTAINERGADGET_H +#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" namespace GafferUI diff --git a/include/GafferUI/DragDropEvent.h b/include/GafferUI/DragDropEvent.h index a920ea4ddb1..ebf176d52a1 100644 --- a/include/GafferUI/DragDropEvent.h +++ b/include/GafferUI/DragDropEvent.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_DRAGDROPEVENT_H #define GAFFERUI_DRAGDROPEVENT_H +#include "GafferUI/Export.h" #include "GafferUI/ButtonEvent.h" #include "IECore/RunTimeTyped.h" diff --git a/include/GafferUI/Frame.h b/include/GafferUI/Frame.h index cb00e573320..163e99a0038 100644 --- a/include/GafferUI/Frame.h +++ b/include/GafferUI/Frame.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_FRAME_H #define GAFFERUI_FRAME_H +#include "GafferUI/Export.h" #include "GafferUI/IndividualContainer.h" namespace GafferUI diff --git a/include/GafferUI/Handle.h b/include/GafferUI/Handle.h index cf618838daf..f7de0275fc8 100644 --- a/include/GafferUI/Handle.h +++ b/include/GafferUI/Handle.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_HANDLE_H #define GAFFERUI_HANDLE_H +#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" #include "GafferUI/Style.h" @@ -84,7 +85,7 @@ class GAFFERUI_API Handle : public Gadget // Helper for performing linear drags. Should be constructed // in `dragBegin()` and then `position()` should be used // to measure the progress of the drag. - struct LinearDrag + struct GAFFERUI_API LinearDrag { LinearDrag( bool processModifiers = true ); @@ -116,7 +117,7 @@ class GAFFERUI_API Handle : public Gadget }; // Helper for performing drags in a plane. - struct PlanarDrag + struct GAFFERUI_API PlanarDrag { PlanarDrag( bool processModifiers = true ); diff --git a/include/GafferUI/IndividualContainer.h b/include/GafferUI/IndividualContainer.h index 3480f3d2bab..9fb55b8dbb1 100644 --- a/include/GafferUI/IndividualContainer.h +++ b/include/GafferUI/IndividualContainer.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_INDIVIDUALCONTAINER_H #define GAFFERUI_INDIVIDUALCONTAINER_H +#include "GafferUI/Export.h" #include "GafferUI/ContainerGadget.h" namespace GafferUI diff --git a/include/GafferUI/KeyEvent.h b/include/GafferUI/KeyEvent.h index 20a16e23f18..d12a7e2a70f 100644 --- a/include/GafferUI/KeyEvent.h +++ b/include/GafferUI/KeyEvent.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_KEYEVENT_H #define GAFFERUI_KEYEVENT_H +#include "GafferUI/Export.h" #include "GafferUI/ModifiableEvent.h" #include "IECore/Export.h" diff --git a/include/GafferUI/LinearContainer.h b/include/GafferUI/LinearContainer.h index 4a516548d2f..be23338ee25 100644 --- a/include/GafferUI/LinearContainer.h +++ b/include/GafferUI/LinearContainer.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_LINEARCONTAINER_H #define GAFFERUI_LINEARCONTAINER_H +#include "GafferUI/Export.h" #include "GafferUI/ContainerGadget.h" namespace GafferUI diff --git a/include/GafferUI/ModifiableEvent.h b/include/GafferUI/ModifiableEvent.h index 604f387f2a6..84fa2b95766 100644 --- a/include/GafferUI/ModifiableEvent.h +++ b/include/GafferUI/ModifiableEvent.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_MODIFIABLEEVENT_H #define GAFFERUI_MODIFIABLEEVENT_H +#include "GafferUI/Export.h" #include "GafferUI/Event.h" namespace GafferUI diff --git a/include/GafferUI/NameGadget.h b/include/GafferUI/NameGadget.h index c85377ce499..a4bd11efcfd 100644 --- a/include/GafferUI/NameGadget.h +++ b/include/GafferUI/NameGadget.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_NAMEGADGET_H #define GAFFERUI_NAMEGADGET_H +#include "GafferUI/Export.h" #include "GafferUI/TextGadget.h" #include "IECoreScene/Font.h" diff --git a/include/GafferUI/NodeGadget.h b/include/GafferUI/NodeGadget.h index 6ee50db2d0c..0996c94c82e 100644 --- a/include/GafferUI/NodeGadget.h +++ b/include/GafferUI/NodeGadget.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_NODEGADGET_H #define GAFFERUI_NODEGADGET_H +#include "GafferUI/Export.h" #include "GafferUI/IndividualContainer.h" #include "Gaffer/Set.h" diff --git a/include/GafferUI/PlugGadget.h b/include/GafferUI/PlugGadget.h index f10e6df6377..b56e92eed3d 100644 --- a/include/GafferUI/PlugGadget.h +++ b/include/GafferUI/PlugGadget.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_PLUGGADGET_H #define GAFFERUI_PLUGGADGET_H +#include "GafferUI/Export.h" #include "GafferUI/ContainerGadget.h" namespace Gaffer diff --git a/include/GafferUI/Pointer.h b/include/GafferUI/Pointer.h index ab19d0e68b3..e8fd55afcef 100644 --- a/include/GafferUI/Pointer.h +++ b/include/GafferUI/Pointer.h @@ -43,6 +43,8 @@ #include "boost/signals.hpp" +#include "GafferUI/Export.h" + namespace GafferUI { diff --git a/include/GafferUI/RenderableGadget.h b/include/GafferUI/RenderableGadget.h new file mode 100644 index 00000000000..7294c5a1be9 --- /dev/null +++ b/include/GafferUI/RenderableGadget.h @@ -0,0 +1,157 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011-2012, John Haddon. All rights reserved. +// Copyright (c) 2012-2013, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUI_RENDERABLEGADGET_H +#define GAFFERUI_RENDERABLEGADGET_H + +#include "IECore/VisibleRenderable.h" + +#include "GafferUI/Export.h" +#include "GafferUI/Gadget.h" + +namespace IECoreGL +{ + +IE_CORE_FORWARDDECLARE( Scene ) +IE_CORE_FORWARDDECLARE( State ) +IE_CORE_FORWARDDECLARE( Group ) +IE_CORE_FORWARDDECLARE( StateComponent ) + +} // namespace IECoreGL + +namespace GafferUI +{ + +IE_CORE_FORWARDDECLARE( RenderableGadget ); + +/// \todo Either remove this or move it to GafferCortexUI. +class GAFFERUI_API RenderableGadget : public Gadget +{ + + public : + + RenderableGadget( IECore::VisibleRenderablePtr renderable = 0 ); + virtual ~RenderableGadget(); + + IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferUI::RenderableGadget, RenderableGadgetTypeId, Gadget ); + + virtual Imath::Box3f bound() const; + + void setRenderable( IECore::ConstVisibleRenderablePtr renderable ); + IECore::ConstVisibleRenderablePtr getRenderable() const; + + /// Returns the IECoreGL::State object used as the base display + /// style for the Renderable. This may be modified freely to + /// change the display style. + IECoreGL::State *baseState(); + + /// Returns the name of the frontmost object intersecting the specified line + /// through gadget space, or "" if there is no such object. + std::string objectAt( const IECore::LineSegment3f &lineInGadgetSpace ) const; + /// Fills objectNames with all objects intersected by a rectangle in screen space, + /// defined by two corners in gadget space (as required for drag selection). + size_t objectsAt( + const Imath::V3f &corner0InGadgetSpace, + const Imath::V3f &corner1InGadgetSpace, + std::vector &objectNames + ) const; + + /// @name Selection + /// The RenderableGadget maintains a set of selected object, based + /// on object name. The user can manipulate the selection with the + /// mouse, and the selected objects are drawn in a highlighted fashion. + /// The selection may be queried and set programatically, and the + /// SelectionChangedSignal can be used to provide notifications of + /// such changes. + //////////////////////////////////////////////////////////////////// + //@{ + /// The selection is simply stored as a set of object names. + typedef std::set Selection; + /// Returns the selection. + Selection &getSelection(); + const Selection &getSelection() const; + /// Sets the selection, triggering selectionChangedSignal() if + /// necessary. + void setSelection( const std::set &selection ); + /// A signal emitted when the selection has changed, either through + /// a call to setSelection() or through user action. + typedef boost::signal SelectionChangedSignal; + SelectionChangedSignal &selectionChangedSignal(); + /// Returns the bounding box of all the selected objects. + Imath::Box3f selectionBound() const; + //@} + + /// Implemented to return the name of the object under the mouse as + /// a tooltip. + virtual std::string getToolTip( const IECore::LineSegment3f &line ) const; + + protected : + + virtual void doRender( const Style *style ) const; + + private : + + bool buttonPress( GadgetPtr gadget, const ButtonEvent &event ); + IECore::RunTimeTypedPtr dragBegin( GadgetPtr gadget, const DragDropEvent &event ); + bool dragEnter( GadgetPtr gadget, const DragDropEvent &event ); + bool dragMove( GadgetPtr gadget, const DragDropEvent &event ); + bool dragEnd( GadgetPtr gadget, const DragDropEvent &event ); + + void applySelection( IECoreGL::Group *group = 0 ); + Imath::Box3f selectionBound( IECoreGL::Group *group ) const; + + IECore::ConstVisibleRenderablePtr m_renderable; + IECoreGL::ScenePtr m_scene; + IECoreGL::StatePtr m_baseState; + IECoreGL::StateComponentPtr m_selectionColor; + IECoreGL::StateComponentPtr m_wireframeOn; + + Selection m_selection; + SelectionChangedSignal m_selectionChangedSignal; + + Imath::V3f m_dragStartPosition; + Imath::V3f m_lastDragPosition; + bool m_dragSelecting; + +}; + +typedef Gaffer::FilteredChildIterator > RenderableGadgetIterator; +typedef Gaffer::FilteredRecursiveChildIterator > RecursiveRenderableGadgetIterator; + +} // namespace GafferUI + +#endif // GAFFERUI_RenderableGadget_H diff --git a/include/GafferUI/RotateHandle.h b/include/GafferUI/RotateHandle.h index cb9c8777938..3e40c9ebe03 100644 --- a/include/GafferUI/RotateHandle.h +++ b/include/GafferUI/RotateHandle.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_ROTATEHANDLE_H #define GAFFERUI_ROTATEHANDLE_H +#include "GafferUI/Export.h" #include "GafferUI/Handle.h" IECORE_PUSH_DEFAULT_VISIBILITY diff --git a/include/GafferUI/ScaleHandle.h b/include/GafferUI/ScaleHandle.h index 21327862ee0..c8ba6a1aaf9 100644 --- a/include/GafferUI/ScaleHandle.h +++ b/include/GafferUI/ScaleHandle.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_SCALEHANDLE_H #define GAFFERUI_SCALEHANDLE_H +#include "GafferUI/Export.h" #include "GafferUI/Handle.h" namespace GafferUI diff --git a/include/GafferUI/SpacerGadget.h b/include/GafferUI/SpacerGadget.h index 9998ab527a1..d211bab4413 100644 --- a/include/GafferUI/SpacerGadget.h +++ b/include/GafferUI/SpacerGadget.h @@ -37,6 +37,7 @@ #ifndef GAFFERUI_SPACERGADGET_H #define GAFFERUI_SPACERGADGET_H +#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" namespace GafferUI diff --git a/include/GafferUI/SplinePlugGadget.h b/include/GafferUI/SplinePlugGadget.h new file mode 100644 index 00000000000..5ce658ca1b5 --- /dev/null +++ b/include/GafferUI/SplinePlugGadget.h @@ -0,0 +1,109 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011-2012, John Haddon. All rights reserved. +// Copyright (c) 2011-2012, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUI_SPLINEPLUGGADGET_H +#define GAFFERUI_SPLINEPLUGGADGET_H + +#include "GafferUI/Export.h" +#include "GafferUI/Gadget.h" + +#include "Gaffer/SplinePlug.h" +#include "Gaffer/StandardSet.h" + +namespace GafferUI +{ + +/// \todo I think this should work with any sort of Set for the splines. +class GAFFERUI_API SplinePlugGadget : public Gadget +{ + + public : + + SplinePlugGadget( const std::string &name=defaultName() ); + virtual ~SplinePlugGadget(); + + IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferUI::SplinePlugGadget, SplinePlugGadgetTypeId, Gadget ); + + /// The splines to be edited + Gaffer::StandardSetPtr splines(); + Gaffer::ConstStandardSetPtr splines() const; + + /// The selected spline points + Gaffer::StandardSetPtr selection(); + Gaffer::ConstStandardSetPtr selection() const; + + virtual Imath::Box3f bound() const; + + protected : + + virtual void doRender( const Style *style ) const; + + private : + + void splineAdded( Gaffer::SetPtr splineSet, IECore::RunTimeTypedPtr splinePlug ); + void splineRemoved( Gaffer::SetPtr splineSet, IECore::RunTimeTypedPtr splinePlug ); + void plugSet( Gaffer::Plug *plug ); + Gaffer::StandardSetPtr m_splines; + Gaffer::StandardSetPtr m_selection; + + void pointAdded( Gaffer::GraphComponentPtr spline, Gaffer::GraphComponentPtr point ); + void pointRemoved( Gaffer::GraphComponentPtr spline, Gaffer::GraphComponentPtr point ); + + bool selectionAcceptance( Gaffer::ConstStandardSetPtr selection, IECore::ConstRunTimeTypedPtr point ); + + struct UI; + typedef std::map SplineUIMap; + mutable SplineUIMap m_uis; + void updateCurve( SplineUIMap::iterator it ) const; + + bool buttonPress( GadgetPtr gadget, const ButtonEvent &event ); + IECore::RunTimeTypedPtr dragBegin( GadgetPtr gadget, const ButtonEvent &event ); + bool dragMove( GadgetPtr gadget, const ButtonEvent &event ); + Imath::V2f m_lastDragPosition; + + bool keyPress( GadgetPtr gadget, const KeyEvent &event ); + +}; + +IE_CORE_DECLAREPTR( SplinePlugGadget ) + +typedef Gaffer::FilteredChildIterator > SplinePlugGadgetIterator; +typedef Gaffer::FilteredRecursiveChildIterator > RecursiveSplinePlugGadgetIterator; + +} // namespace GafferUI + +#endif // GAFFERUI_SPLINEPLUGGADGET_H diff --git a/include/GafferUI/StandardGraphLayout.h b/include/GafferUI/StandardGraphLayout.h index 800263d54d4..6e0a128ee1d 100644 --- a/include/GafferUI/StandardGraphLayout.h +++ b/include/GafferUI/StandardGraphLayout.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_STANDARDGRAPHLAYOUT_H #define GAFFERUI_STANDARDGRAPHLAYOUT_H +#include "GafferUI/Export.h" #include "GafferUI/GraphLayout.h" namespace Gaffer diff --git a/include/GafferUI/TextGadget.h b/include/GafferUI/TextGadget.h index 17c16d6e783..84aecc3ba0a 100644 --- a/include/GafferUI/TextGadget.h +++ b/include/GafferUI/TextGadget.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_TEXTGADGET_H #define GAFFERUI_TEXTGADGET_H +#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" #include "IECoreScene/Font.h" diff --git a/include/GafferUI/TranslateHandle.h b/include/GafferUI/TranslateHandle.h index 145ca42f8c8..d53fd30bab7 100644 --- a/include/GafferUI/TranslateHandle.h +++ b/include/GafferUI/TranslateHandle.h @@ -38,6 +38,7 @@ #ifndef GAFFERUI_TRANSLATEHANDLE_H #define GAFFERUI_TRANSLATEHANDLE_H +#include "GafferUI/Export.h" #include "GafferUI/Handle.h" namespace GafferUI From 8159bba5e449ce388757da377d9e1f11dcae9b02 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:06:44 -0700 Subject: [PATCH 012/243] Exported symbols for src/GafferUIBindings --- include/GafferUIBindings/Export.h | 51 +++++++++++++++++++ .../GafferUIBindings/ModifiableEventBinding.h | 49 ++++++++++++++++++ .../RenderableGadgetBinding.h | 49 ++++++++++++++++++ .../SplinePlugGadgetBinding.h | 49 ++++++++++++++++++ .../StandardNodeGadgetBinding.h | 49 ++++++++++++++++++ 5 files changed, 247 insertions(+) create mode 100644 include/GafferUIBindings/Export.h create mode 100644 include/GafferUIBindings/ModifiableEventBinding.h create mode 100644 include/GafferUIBindings/RenderableGadgetBinding.h create mode 100644 include/GafferUIBindings/SplinePlugGadgetBinding.h create mode 100644 include/GafferUIBindings/StandardNodeGadgetBinding.h diff --git a/include/GafferUIBindings/Export.h b/include/GafferUIBindings/Export.h new file mode 100644 index 00000000000..bddaf8e5bba --- /dev/null +++ b/include/GafferUIBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUIBINDINGS_EXPORT_H +#define GAFFERUIBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERUIBINDINGS_API macro based on whether or not we are compiling +// GafferUIBindings, or including headers for linking to it. the GAFFERUIBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferUIBindings_EXPORTS + #define GAFFERUIBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERUIBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERUIBINDINGS_EXPORT_H diff --git a/include/GafferUIBindings/ModifiableEventBinding.h b/include/GafferUIBindings/ModifiableEventBinding.h new file mode 100644 index 00000000000..d596f4e0459 --- /dev/null +++ b/include/GafferUIBindings/ModifiableEventBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011, John Haddon. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUIBINDINGS_MODIFIABLEEVENTBINDING_H +#define GAFFERUIBINDINGS_MODIFIABLEEVENTBINDING_H + +#include "GafferUIBindings/Export.h" + +namespace GafferUIBindings +{ + +GAFFERUIBINDINGS_API void bindModifiableEvent(); + +} // namespace GafferUIBindings + +#endif // GAFFERUIBINDINGS_MODIFIABLEEVENTBINDING_H diff --git a/include/GafferUIBindings/RenderableGadgetBinding.h b/include/GafferUIBindings/RenderableGadgetBinding.h new file mode 100644 index 00000000000..9180639f856 --- /dev/null +++ b/include/GafferUIBindings/RenderableGadgetBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011, John Haddon. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUIBINDINGS_RENDERABLEGADGETBINDING_H +#define GAFFERUIBINDINGS_RENDERABLEGADGETBINDING_H + +#include "GafferUIBindings/Export.h" + +namespace GafferUIBindings +{ + +GAFFERUIBINDINGS_API void bindRenderableGadget(); + +} // namespace GafferUIBindings + +#endif // GAFFERUIBINDINGS_RENDERABLEGADGETBINDING_H diff --git a/include/GafferUIBindings/SplinePlugGadgetBinding.h b/include/GafferUIBindings/SplinePlugGadgetBinding.h new file mode 100644 index 00000000000..1734b1132a2 --- /dev/null +++ b/include/GafferUIBindings/SplinePlugGadgetBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011, John Haddon. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUIBINDINGS_SPLINEPLUGGADGETBINDING_H +#define GAFFERUIBINDINGS_SPLINEPLUGGADGETBINDING_H + +#include "GafferUIBindings/Export.h" + +namespace GafferUIBindings +{ + +GAFFERUIBINDINGS_API void bindSplinePlugGadget(); + +} // namespace GafferUIBindings + +#endif // GAFFERUIBINDINGS_SPLINEPLUGGADGETBINDING_H diff --git a/include/GafferUIBindings/StandardNodeGadgetBinding.h b/include/GafferUIBindings/StandardNodeGadgetBinding.h new file mode 100644 index 00000000000..794cd360304 --- /dev/null +++ b/include/GafferUIBindings/StandardNodeGadgetBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011, John Haddon. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERUIBINDINGS_STANDARDNODEGADGETBINDING_H +#define GAFFERUIBINDINGS_STANDARDNODEGADGETBINDING_H + +#include "GafferUIBindings/Export.h" + +namespace GafferUIBindings +{ + +GAFFERUIBINDINGS_API void bindStandardNodeGadget(); + +} // namespace GafferUIBindings + +#endif // GAFFERUIBINDINGS_STANDARDNODEGADGETBINDING_H From 19099f6ba0156b6c9ef9a7fa07bebbcaef1ba324 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:10:21 -0700 Subject: [PATCH 013/243] Exported symbols for src/GafferImageUIBindings --- include/GafferImageUIBindings/Export.h | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/GafferImageUIBindings/Export.h diff --git a/include/GafferImageUIBindings/Export.h b/include/GafferImageUIBindings/Export.h new file mode 100644 index 00000000000..e7e535e2d19 --- /dev/null +++ b/include/GafferImageUIBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERIMAGEUIBINDINGS_EXPORT_H +#define GAFFERIMAGEUIBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERIMAGEUIBINDINGS_API macro based on whether or not we are compiling +// GafferImageUIBindings, or including headers for linking to it. the GAFFERIMAGEUIBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferImageUIBindings_EXPORTS + #define GAFFERIMAGEUIBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERIMAGEUIBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERIMAGEUIBINDINGS_EXPORT_H From af834ea324e02673bd507ae91a98b8192c7d169d Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:14:59 -0700 Subject: [PATCH 014/243] Exported symbols for src/GafferScene --- include/GafferScene/AimConstraint.h | 1 + include/GafferScene/AlembicSource.h | 109 ++++++ include/GafferScene/AttributeProcessor.h | 10 +- include/GafferScene/Camera.h | 2 + include/GafferScene/ClippingPlane.h | 1 + include/GafferScene/Constraint.h | 1 + include/GafferScene/CoordinateSystem.h | 1 + include/GafferScene/CustomAttributes.h | 1 + include/GafferScene/DeleteAttributes.h | 1 + include/GafferScene/DeleteGlobals.h | 1 + include/GafferScene/DeleteOptions.h | 1 + include/GafferScene/DeleteOutputs.h | 1 + .../GafferScene/DeletePrimitiveVariables.h | 1 + include/GafferScene/DeleteSets.h | 1 + include/GafferScene/FilterProcessor.h | 3 +- include/GafferScene/FreezeTransform.h | 1 + include/GafferScene/GlobalsProcessor.h | 1 + include/GafferScene/Group.h | 1 + include/GafferScene/Instancer.h | 1 + include/GafferScene/Isolate.h | 1 + include/GafferScene/Light.h | 1 + include/GafferScene/LightToCamera.h | 1 + include/GafferScene/MapOffset.h | 1 + include/GafferScene/MeshTangents.h | 1 + include/GafferScene/MeshToPoints.h | 1 + include/GafferScene/MeshType.h | 1 + include/GafferScene/ObjectToScene.h | 2 +- include/GafferScene/OpenGLAttributes.h | 1 + include/GafferScene/OpenGLShader.h | 1 + include/GafferScene/Parent.h | 1 + include/GafferScene/PathMatcher.h | 337 ++++++++++++++++++ include/GafferScene/PointConstraint.h | 1 + include/GafferScene/PointsType.h | 2 + .../GafferScene/Preview/InteractiveRender.h | 148 ++++++++ include/GafferScene/Preview/RendererAlgo.h | 128 +++++++ include/GafferScene/Prune.h | 1 + include/GafferScene/SceneElementProcessor.h | 1 + include/GafferScene/SceneProcedural.h | 157 ++++++++ include/GafferScene/SceneProcessor.h | 1 + include/GafferScene/Seeds.h | 1 + include/GafferScene/ShaderAssignment.h | 1 + include/GafferScene/StandardAttributes.h | 1 + include/GafferScene/StandardOptions.h | 1 + include/GafferScene/SubTree.h | 1 + include/GafferScene/Text.h | 1 + include/GafferScene/UnionFilter.h | 1 + 46 files changed, 931 insertions(+), 3 deletions(-) create mode 100644 include/GafferScene/AlembicSource.h create mode 100644 include/GafferScene/PathMatcher.h create mode 100644 include/GafferScene/Preview/InteractiveRender.h create mode 100644 include/GafferScene/Preview/RendererAlgo.h create mode 100644 include/GafferScene/SceneProcedural.h diff --git a/include/GafferScene/AimConstraint.h b/include/GafferScene/AimConstraint.h index 0032b79d952..b070d201b9d 100644 --- a/include/GafferScene/AimConstraint.h +++ b/include/GafferScene/AimConstraint.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_AIMCONSTRAINT_H #define GAFFERSCENE_AIMCONSTRAINT_H +#include "GafferScene/Export.h" #include "GafferScene/Constraint.h" namespace GafferScene diff --git a/include/GafferScene/AlembicSource.h b/include/GafferScene/AlembicSource.h new file mode 100644 index 00000000000..643e5a9b7fc --- /dev/null +++ b/include/GafferScene/AlembicSource.h @@ -0,0 +1,109 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2012-2014, John Haddon. All rights reserved. +// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENE_ALEMBICSOURCE_H +#define GAFFERSCENE_ALEMBICSOURCE_H + +#include "IECoreAlembic/AlembicInput.h" + +#include "GafferScene/Export.h" +#include "GafferScene/SceneNode.h" + +namespace Gaffer +{ + +IE_CORE_FORWARDDECLARE( StringPlug ) + +} // namespace Gaffer + +namespace GafferScene +{ + +class GAFFERSCENE_API AlembicSource : public SceneNode +{ + + public : + + AlembicSource( const std::string &name=defaultName() ); + virtual ~AlembicSource(); + + IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferScene::AlembicSource, AlembicSourceTypeId, SceneNode ) + + /// Holds the name of the file to be loaded. + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; + + /// Number of times the node has been refreshed. + Gaffer::IntPlug *refreshCountPlug(); + const Gaffer::IntPlug *refreshCountPlug() const; + + /// Implemented to specify that fileNamePlug() affects all the scene output. + virtual void affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const; + + private : + + void plugSet( Gaffer::Plug *plug ); + + virtual void hashBound( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashTransform( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashAttributes( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashObject( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashChildNames( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashGlobals( const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashSetNames( const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + virtual void hashSet( const IECore::InternedString &setName, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; + + virtual Imath::Box3f computeBound( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual Imath::M44f computeTransform( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual IECore::ConstCompoundObjectPtr computeAttributes( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual IECore::ConstObjectPtr computeObject( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual IECore::ConstInternedStringVectorDataPtr computeChildNames( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual IECore::ConstCompoundObjectPtr computeGlobals( const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual IECore::ConstInternedStringVectorDataPtr computeSetNames( const Gaffer::Context *context, const ScenePlug *parent ) const; + virtual GafferScene::ConstPathMatcherDataPtr computeSet( const IECore::InternedString &setName, const Gaffer::Context *context, const ScenePlug *parent ) const; + + IECoreAlembic::AlembicInputPtr inputForPath( const ScenePath &path ) const; + + static size_t g_firstPlugIndex; + +}; + +IE_CORE_DECLAREPTR( AlembicSource ) + +} // namespace GafferScene + +#endif // GAFFERSCENE_ALEMBICSOURCE_H diff --git a/include/GafferScene/AttributeProcessor.h b/include/GafferScene/AttributeProcessor.h index cf5332afac1..f48d829b671 100644 --- a/include/GafferScene/AttributeProcessor.h +++ b/include/GafferScene/AttributeProcessor.h @@ -37,7 +37,15 @@ #ifndef GAFFERSCENE_ATTRIBUTEPROCESSOR_H #define GAFFERSCENE_ATTRIBUTEPROCESSOR_H -#include "GafferScene/FilteredSceneProcessor.h" +#include "GafferScene/SceneElementProcessor.h" +#include "GafferScene/Export.h" + +namespace Gaffer +{ + +IE_CORE_FORWARDDECLARE( StringPlug ) + +} // namespace Gaffer namespace GafferScene { diff --git a/include/GafferScene/Camera.h b/include/GafferScene/Camera.h index cc7facbdf0b..523e73aaa2b 100644 --- a/include/GafferScene/Camera.h +++ b/include/GafferScene/Camera.h @@ -38,6 +38,8 @@ #ifndef GAFFERSCENE_CAMERA_H #define GAFFERSCENE_CAMERA_H +#include "GafferScene/Export.h" + #include "Gaffer/CompoundDataPlug.h" #include "GafferScene/ObjectSource.h" diff --git a/include/GafferScene/ClippingPlane.h b/include/GafferScene/ClippingPlane.h index 1c65a65cabb..d421942520e 100644 --- a/include/GafferScene/ClippingPlane.h +++ b/include/GafferScene/ClippingPlane.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_CLIPPINGPLANE_H #define GAFFERSCENE_CLIPPINGPLANE_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/Constraint.h b/include/GafferScene/Constraint.h index d8e7f0e82f6..4b21d4ec916 100644 --- a/include/GafferScene/Constraint.h +++ b/include/GafferScene/Constraint.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_CONSTRAINT_H #define GAFFERSCENE_CONSTRAINT_H +#include "GafferScene/Export.h" #include "GafferScene/SceneElementProcessor.h" namespace Gaffer diff --git a/include/GafferScene/CoordinateSystem.h b/include/GafferScene/CoordinateSystem.h index fbdf7ef6d6b..68797871d55 100644 --- a/include/GafferScene/CoordinateSystem.h +++ b/include/GafferScene/CoordinateSystem.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_COORDINATESYSTEM_H #define GAFFERSCENE_COORDINATESYSTEM_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/CustomAttributes.h b/include/GafferScene/CustomAttributes.h index 2befbd9ed77..1c28d79729f 100644 --- a/include/GafferScene/CustomAttributes.h +++ b/include/GafferScene/CustomAttributes.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_CUSTOMATTRIBUTES_H #define GAFFERSCENE_CUSTOMATTRIBUTES_H +#include "GafferScene/Export.h" #include "GafferScene/Attributes.h" namespace GafferScene diff --git a/include/GafferScene/DeleteAttributes.h b/include/GafferScene/DeleteAttributes.h index 4805292183f..dce31fa32b6 100644 --- a/include/GafferScene/DeleteAttributes.h +++ b/include/GafferScene/DeleteAttributes.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_DELETEATTRIBUTES_H #define GAFFERSCENE_DELETEATTRIBUTES_H +#include "GafferScene/Export.h" #include "GafferScene/AttributeProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferScene/DeleteGlobals.h b/include/GafferScene/DeleteGlobals.h index 6abeba90766..49bcf74fa98 100644 --- a/include/GafferScene/DeleteGlobals.h +++ b/include/GafferScene/DeleteGlobals.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_DELETEGLOBALS_H #define GAFFERSCENE_DELETEGLOBALS_H +#include "GafferScene/Export.h" #include "GafferScene/GlobalsProcessor.h" namespace Gaffer diff --git a/include/GafferScene/DeleteOptions.h b/include/GafferScene/DeleteOptions.h index a1580b552b7..06393d873df 100644 --- a/include/GafferScene/DeleteOptions.h +++ b/include/GafferScene/DeleteOptions.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_DELETEOPTIONS_H #define GAFFERSCENE_DELETEOPTIONS_H +#include "GafferScene/Export.h" #include "GafferScene/DeleteGlobals.h" namespace GafferScene diff --git a/include/GafferScene/DeleteOutputs.h b/include/GafferScene/DeleteOutputs.h index a07f23a0157..434721f5768 100644 --- a/include/GafferScene/DeleteOutputs.h +++ b/include/GafferScene/DeleteOutputs.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_DELETEOUTPUTS_H #define GAFFERSCENE_DELETEOUTPUTS_H +#include "GafferScene/Export.h" #include "GafferScene/DeleteGlobals.h" namespace GafferScene diff --git a/include/GafferScene/DeletePrimitiveVariables.h b/include/GafferScene/DeletePrimitiveVariables.h index 618b42e0fd7..ea2e0fa3d92 100644 --- a/include/GafferScene/DeletePrimitiveVariables.h +++ b/include/GafferScene/DeletePrimitiveVariables.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_DELETEPRIMITIVEVARIABLE_H #define GAFFERSCENE_DELETEPRIMITIVEVARIABLE_H +#include "GafferScene/Export.h" #include "GafferScene/PrimitiveVariableProcessor.h" namespace GafferScene diff --git a/include/GafferScene/DeleteSets.h b/include/GafferScene/DeleteSets.h index 8a6f51e30d7..807cbb70f1c 100644 --- a/include/GafferScene/DeleteSets.h +++ b/include/GafferScene/DeleteSets.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_DELETESETS_H #define GAFFERSCENE_DELETESETS_H +#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/FilterProcessor.h b/include/GafferScene/FilterProcessor.h index c1457d3710c..848ab63e377 100644 --- a/include/GafferScene/FilterProcessor.h +++ b/include/GafferScene/FilterProcessor.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_FILTERPROCESSOR_H #define GAFFERSCENE_FILTERPROCESSOR_H +#include "GafferScene/Export.h" #include "GafferScene/Filter.h" namespace Gaffer @@ -62,7 +63,7 @@ class GAFFERSCENE_API FilterProcessor : public Filter /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - FilterProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); + FilterProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); ~FilterProcessor() override; diff --git a/include/GafferScene/FreezeTransform.h b/include/GafferScene/FreezeTransform.h index c6528b5bc70..50b89356304 100644 --- a/include/GafferScene/FreezeTransform.h +++ b/include/GafferScene/FreezeTransform.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_FREEZETRANSFORM_H #define GAFFERSCENE_FREEZETRANSFORM_H +#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/GlobalsProcessor.h b/include/GafferScene/GlobalsProcessor.h index 00af82622cf..3f3f290efe5 100644 --- a/include/GafferScene/GlobalsProcessor.h +++ b/include/GafferScene/GlobalsProcessor.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_GLOBALSPROCESSOR_H #define GAFFERSCENE_GLOBALSPROCESSOR_H +#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/Group.h b/include/GafferScene/Group.h index 19e526beba1..da3d8d22a33 100644 --- a/include/GafferScene/Group.h +++ b/include/GafferScene/Group.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_GROUP_H #define GAFFERSCENE_GROUP_H +#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Instancer.h b/include/GafferScene/Instancer.h index 3b79d4df45f..de98404282f 100644 --- a/include/GafferScene/Instancer.h +++ b/include/GafferScene/Instancer.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_INSTANCER_H #define GAFFERSCENE_INSTANCER_H +#include "GafferScene/Export.h" #include "GafferScene/BranchCreator.h" namespace GafferScene diff --git a/include/GafferScene/Isolate.h b/include/GafferScene/Isolate.h index ec0b17c8f94..e544d8882b8 100644 --- a/include/GafferScene/Isolate.h +++ b/include/GafferScene/Isolate.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_ISOLATE_H #define GAFFERSCENE_ISOLATE_H +#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Light.h b/include/GafferScene/Light.h index 51eb90778f4..ad5ae413328 100644 --- a/include/GafferScene/Light.h +++ b/include/GafferScene/Light.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_LIGHT_H #define GAFFERSCENE_LIGHT_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" #include "Gaffer/CompoundDataPlug.h" diff --git a/include/GafferScene/LightToCamera.h b/include/GafferScene/LightToCamera.h index dac0314842e..67bf6c69171 100644 --- a/include/GafferScene/LightToCamera.h +++ b/include/GafferScene/LightToCamera.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_LIGHTTOCAMERA_H #define GAFFERSCENE_LIGHTTOCAMERA_H +#include "GafferScene/Export.h" #include "GafferScene/SceneElementProcessor.h" namespace GafferScene diff --git a/include/GafferScene/MapOffset.h b/include/GafferScene/MapOffset.h index d3aabe73af9..ef775cbfaaa 100644 --- a/include/GafferScene/MapOffset.h +++ b/include/GafferScene/MapOffset.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_MAPOFFSET_H #define GAFFERSCENE_MAPOFFSET_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/MeshTangents.h b/include/GafferScene/MeshTangents.h index 95a61cbd431..f5419ec530d 100644 --- a/include/GafferScene/MeshTangents.h +++ b/include/GafferScene/MeshTangents.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_MESHTANGENTS_H #define GAFFERSCENE_MESHTANGENTS_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferScene/MeshToPoints.h b/include/GafferScene/MeshToPoints.h index e3d3d868f7e..3ca243b5570 100644 --- a/include/GafferScene/MeshToPoints.h +++ b/include/GafferScene/MeshToPoints.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_MESHTOPOINTS_H #define GAFFERSCENE_MESHTOPOINTS_H +#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/MeshType.h b/include/GafferScene/MeshType.h index 1e48983fb3b..dedfba609c3 100644 --- a/include/GafferScene/MeshType.h +++ b/include/GafferScene/MeshType.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_MESHTYPE_H #define GAFFERSCENE_MESHTYPE_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/ObjectToScene.h b/include/GafferScene/ObjectToScene.h index 25299b1a5c0..fee894643d7 100644 --- a/include/GafferScene/ObjectToScene.h +++ b/include/GafferScene/ObjectToScene.h @@ -37,7 +37,7 @@ #ifndef GAFFERSCENE_OBJECTTOSCENE_H #define GAFFERSCENE_OBJECTTOSCENE_H -#include "GafferImage/Export.h" +#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/OpenGLAttributes.h b/include/GafferScene/OpenGLAttributes.h index 798df8aa35c..3628d5f3128 100644 --- a/include/GafferScene/OpenGLAttributes.h +++ b/include/GafferScene/OpenGLAttributes.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_OPENGLATTRIBUTES_H #define GAFFERSCENE_OPENGLATTRIBUTES_H +#include "GafferScene/Export.h" #include "GafferScene/Attributes.h" namespace GafferScene diff --git a/include/GafferScene/OpenGLShader.h b/include/GafferScene/OpenGLShader.h index f3786213362..282a26b9902 100644 --- a/include/GafferScene/OpenGLShader.h +++ b/include/GafferScene/OpenGLShader.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_OPENGLSHADER_H #define GAFFERSCENE_OPENGLSHADER_H +#include "GafferScene/Export.h" #include "GafferScene/Shader.h" namespace GafferScene diff --git a/include/GafferScene/Parent.h b/include/GafferScene/Parent.h index a661357793e..da565e0cbce 100644 --- a/include/GafferScene/Parent.h +++ b/include/GafferScene/Parent.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_PARENT_H #define GAFFERSCENE_PARENT_H +#include "GafferScene/Export.h" #include "GafferScene/BranchCreator.h" #include "Gaffer/ArrayPlug.h" diff --git a/include/GafferScene/PathMatcher.h b/include/GafferScene/PathMatcher.h new file mode 100644 index 00000000000..deb257f5e84 --- /dev/null +++ b/include/GafferScene/PathMatcher.h @@ -0,0 +1,337 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2012, John Haddon. All rights reserved. +// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFER_PATHMATCHER_H +#define GAFFER_PATHMATCHER_H + +#include "IECore/TypedData.h" + +#include "GafferScene/Export.h" +#include "GafferScene/Filter.h" + +namespace GafferScene +{ + +/// The PathMatcher class provides an acceleration structure for matching +/// paths against a sequence of reference paths. It provides the internal +/// implementation for the PathFilter. +class GAFFERSCENE_API PathMatcher +{ + + public : + + PathMatcher(); + /// Copy constructor. Uses lazy-copy-on-write so + /// that copies are cheap until edited. + PathMatcher( const PathMatcher &other ); + + template + PathMatcher( PathIterator pathsBegin, PathIterator pathsEnd ); + + template + void init( PathIterator pathsBegin, PathIterator pathsEnd ); + + /// Returns true if the path was added, false if + /// it was already there. + bool addPath( const std::string &path ); + bool addPath( const std::vector &path ); + /// Returns true if the path was removed, false if + /// it was not there. + bool removePath( const std::string &path ); + bool removePath( const std::vector &path ); + + /// Adds all paths from the other PathMatcher, returning true if + /// any were added, and false if they were all already present. + bool addPaths( const PathMatcher &paths ); + /// As above, but prefixing the paths that are added. + bool addPaths( const PathMatcher &paths, const std::vector &prefix ); + /// Removes all specified paths, returning true if any paths + /// were removed, and false if none existed anyway. + bool removePaths( const PathMatcher &paths ); + + /// Returns a PathMatcher for objects matching both this and the given PathMatcher + PathMatcher intersection( const PathMatcher &paths ); + + /// Removes the specified path and all descendant paths. + /// Returns true if something was removed, false otherwise. + bool prune( const std::string &path ); + bool prune( const std::vector &path ); + + /// Constructs a new PathMatcher by rerooting all the paths + /// below prefix to /. + PathMatcher subTree( const std::string &root ) const; + PathMatcher subTree( const std::vector &root ) const; + + void clear(); + + bool isEmpty() const; + + /// Fills the paths container with all the paths held + /// within this matcher. Iterators should be preferred + /// over this method. + void paths( std::vector &paths ) const; + + /// Result is a bitwise or of the relevant values + /// from Filter::Result. + unsigned match( const std::string &path ) const; + unsigned match( const std::vector &path ) const; + + bool operator == ( const PathMatcher &other ) const; + bool operator != ( const PathMatcher &other ) const; + + class RawIterator; + class Iterator; + + /// Returns an iterator to the start of the + /// tree of paths. + RawIterator begin() const; + /// Returns an iterator to the end of the + /// tree of paths. + RawIterator end() const; + /// Returns an iterator to the specified path, + /// or end() if it does not exist. + RawIterator find( const std::vector &path ) const; + + private : + + IE_CORE_FORWARDDECLARE( Node ) + + PathMatcher( const NodePtr &root ); + + // Struct used to store the name for each node in the tree of paths. + // This is just an InternedString with an extra field used to separate + // names containing wildcards from plain names - since they need to + // be used with `match()` or the special ellipsis matching code. + struct Name + { + + enum Type + { + Plain = 0, // No wildcards + Boundary = 1, // Marker between plain and wildcarded + Wildcarded = 2 // Has wildcards or ... + }; + + Name( IECore::InternedString name ); + // Allows explicit instantiation of the type member - + // use with care! + Name( IECore::InternedString name, Type type ); + + // Less than implemented to do a lexicographical comparison, + // first on type and then on the name. This has the effect of + // segregating plain strings from wildcarded strings with the + // Boundary type providing a marker between them. The comparison + // of the name uses the InternedString operator which compares + // via pointer rather than string content, which gives improved + // performance. + bool operator < ( const Name &other ) const; + + const IECore::InternedString name; + const unsigned char type; + + }; + + class Node : public IECore::RefCounted + { + + public : + + // Container used to store all the children of the node. + // We need two things out of this structure - quick access + // to the child with a specific name, and also partitioning + // between names with wildcards and those without. This is + // achieved by using an ordered container, and having the + // less than operation for Names sort first on hasWildcards + // and second on the name. + typedef std::map ChildMap; + typedef ChildMap::iterator ChildMapIterator; + typedef ChildMap::value_type ChildMapValue; + typedef ChildMap::const_iterator ConstChildMapIterator; + + Node( bool terminator = false ); + // Shallow copy. + Node( const Node &other ); + ~Node(); + + // Returns an iterator to the first child whose name contains wildcards. + // All children between here and children.end() will also contain wildcards. + ConstChildMapIterator wildcardsBegin() const; + + Node *child( const Name &name ); + const Node *child( const Name &name ) const; + + bool operator == ( const Node &other ) const; + + bool operator != ( const Node &other ); + + bool clearChildren(); + bool isEmpty(); + + ChildMap children; + bool terminator; + + // For most Node trees, the number of leaf nodes + // exceeds the number of branch nodes. Since by + // definition all leaf nodes are terminators with + // no children, we can save memory by always using + // this single shared node instance when adding a + // leaf node. + static Node *leaf(); + + }; + + typedef std::vector::const_iterator NameIterator; + + // Utility used in lazy-copy-on-write. + PathMatcher::Node *writable( Node *node, NodePtr &writableCopy, bool shared ); + + // Recursive method used to add a path to a Node tree. Since nodes may be shared among multiple + // trees, we perform lazy-copy-on-write when needing to edit a shared node. When we do this, + // the copy is returned so that it can be used to replace the old child. + NodePtr addWalk( Node *node, const NameIterator &start, const NameIterator &end, bool shared, bool &added ); + NodePtr removeWalk( Node *node, const NameIterator &start, const NameIterator &end, bool shared, const bool prune, bool &removed ); + NodePtr addPathsWalk( Node *node, const Node *srcNode, bool shared, bool &added ); + NodePtr addPrefixedPathsWalk( Node *node, const Node *srcNode, const NameIterator &start, const NameIterator &end, bool shared, bool &added ); + NodePtr removePathsWalk( Node *node, const Node *srcNode, bool shared, bool &removed ); + + void matchWalk( const Node *node, const NameIterator &start, const NameIterator &end, unsigned &result ) const; + + NodePtr m_root; + +}; + +/// Iterates over the tree of paths in a PathMatcher, visiting not only the locations +/// explicitly added with addPath(), but also their ancestor locations. Iteration is +/// guaranteed to be depth-first recursive, but the order of iteration over siblings +/// at the same depth is not guaranteed. For an iterator which ignores ancestor +/// locations, see the PathMatcher::Iterator class. +class PathMatcher::RawIterator : public boost::iterator_facade, boost::forward_traversal_tag> +{ + + public : + + /// Calling prune() causes the next increment to skip any recursion + /// that it would normally perform. + void prune(); + + /// Returns true if this path is in the matcher because it + /// has been explicitly added with addPath(), and will therefore + /// yield an exact match. If this returns false, then this + /// path exists in the matcher only as the ancestor of descendant + /// paths for which exactMatch() will be true. + const bool exactMatch() const; + + private : + + friend class boost::iterator_core_access; + friend class PathMatcher; + friend class Iterator; + + // Private constructor, called by PathMatcher::begin() and PathMatcher::end(). + RawIterator( const PathMatcher &matcher, bool atEnd ); + // Private constructor, called by PathPatcher::find(). + RawIterator( const PathMatcher &matcher, const std::vector &path ); + + ////////////////////////////////////////////////// + // Methods required by boost::iterator_facade + ////////////////////////////////////////////////// + + void increment(); + bool equal( const RawIterator &other ) const; + const std::vector &dereference() const; + + ////////////////////////////////////////////////// + // Our own internal methods. + ////////////////////////////////////////////////// + + Node *node() const; + + // Keeps track of our iteration at a given depth in + // the hierarchy. We keep a stack of these to allow + // us to perform recursion. + struct Level + { + + Level( const Node::ChildMap &children, Node::ConstChildMapIterator it ); + + bool operator == ( const Level &other ) const; + + Node::ConstChildMapIterator end; + Node::ConstChildMapIterator it; + + }; + + typedef std::vector Levels; + Levels m_stack; + std::vector m_path; + // Because there is no ChildMapIterator for the root + // node, we have to store it explicitly. The value + // will be non-null only when we're pointing at the root. + Node *m_nodeIfRoot; + bool m_pruned; + +}; + +/// Iterates over the tree of paths in a PathMatcher, visiting only the locations +/// explicitly added with addPath(). Iteration is guaranteed to be depth-first recursive, +/// but the order of iteration over siblings at the same depth is not guaranteed. +class PathMatcher::Iterator : public boost::iterator_adaptor +{ + + public : + + Iterator( const RawIterator &it ); + + bool operator==( const RawIterator &rhs ) const; + bool operator!=( const RawIterator &rhs ) const; + + void prune(); + + private : + + friend class boost::iterator_core_access; + + void increment(); + void satisfyTerminatorRequirement(); + +}; + +} // namespace GafferScene + +#include "GafferScene/PathMatcher.inl" + +#endif // GAFFER_PATHMATCHER_H diff --git a/include/GafferScene/PointConstraint.h b/include/GafferScene/PointConstraint.h index f5068f1d377..ff68bd26ac8 100644 --- a/include/GafferScene/PointConstraint.h +++ b/include/GafferScene/PointConstraint.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_POINTCONSTRAINT_H #define GAFFERSCENE_POINTCONSTRAINT_H +#include "GafferScene/Export.h" #include "GafferScene/Constraint.h" namespace GafferScene diff --git a/include/GafferScene/PointsType.h b/include/GafferScene/PointsType.h index 81c57ce4e38..aac6176acf5 100644 --- a/include/GafferScene/PointsType.h +++ b/include/GafferScene/PointsType.h @@ -37,6 +37,8 @@ #ifndef GAFFERSCENE_POINTSTYPE_H #define GAFFERSCENE_POINTSTYPE_H +#include "GafferScene/Export.h" + #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Preview/InteractiveRender.h b/include/GafferScene/Preview/InteractiveRender.h new file mode 100644 index 00000000000..7cc424c75a8 --- /dev/null +++ b/include/GafferScene/Preview/InteractiveRender.h @@ -0,0 +1,148 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENE_PREVIEW_INTERACTIVERENDER_H +#define GAFFERSCENE_PREVIEW_INTERACTIVERENDER_H + +#include "Gaffer/Node.h" + +#include "GafferScene/Export.h" +#include "GafferScene/ScenePlug.h" +#include "GafferScene/Preview/RendererAlgo.h" +#include "GafferScene/Private/IECoreScenePreview/Renderer.h" + +namespace Gaffer +{ + +IE_CORE_FORWARDDECLARE( Context ) +IE_CORE_FORWARDDECLARE( StringPlug ) + +} // namespace Gaffer + +namespace GafferScene +{ + +namespace Preview +{ + +class GAFFERSCENE_API InteractiveRender : public Gaffer::Node +{ + + public : + + InteractiveRender( const std::string &name=defaultName() ); + virtual ~InteractiveRender(); + + IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferScene::Preview::InteractiveRender, GafferScene::PreviewInteractiveRenderTypeId, Gaffer::Node ); + + enum State + { + Stopped, + Running, + Paused + }; + + GafferScene::ScenePlug *inPlug(); + const GafferScene::ScenePlug *inPlug() const; + + Gaffer::StringPlug *rendererPlug(); + const Gaffer::StringPlug *rendererPlug() const; + + Gaffer::IntPlug *statePlug(); + const Gaffer::IntPlug *statePlug() const; + + GafferScene::ScenePlug *outPlug(); + const GafferScene::ScenePlug *outPlug() const; + + /// Specifies a context in which the InteractiveRender should operate. + /// The default is NULL, meaning that the context of the ancestor + /// ScriptNode will be used, or failing that, a default context. + void setContext( Gaffer::ContextPtr context ); + Gaffer::Context *getContext(); + const Gaffer::Context *getContext() const; + + protected : + + // Constructor for derived classes which wish to hardcode the renderer type. Perhaps + // at some point we won't even have derived classes, but instead will always use the + // base class? At the moment the main purpose of the derived classes is to force the + // loading of the module which registers the required renderer type. + InteractiveRender( const IECore::InternedString &rendererType, const std::string &name ); + + private : + + void construct( const IECore::InternedString &rendererType = IECore::InternedString() ); + + ScenePlug *adaptedInPlug(); + const ScenePlug *adaptedInPlug() const; + + void plugDirtied( const Gaffer::Plug *plug ); + void contextChanged( const IECore::InternedString &name ); + + void update(); + void updateEffectiveContext(); + void updateDefaultCamera(); + void stop(); + + class SceneGraph; + class SceneGraphUpdateTask; + + std::vector > m_sceneGraphs; + IECoreScenePreview::RendererPtr m_renderer; + State m_state; + unsigned m_dirtyComponents; + IECore::ConstCompoundObjectPtr m_globals; + GafferScene::Preview::RendererAlgo::RenderSets m_renderSets; + IECoreScenePreview::Renderer::ObjectInterfacePtr m_defaultCamera; + + Gaffer::ContextPtr m_context; // Accessed with setContext()/getContext() + Gaffer::ContextPtr m_effectiveContext; // Base context actually used for rendering + boost::signals::scoped_connection m_contextChangedConnection; + + static size_t g_firstPlugIndex; + +}; + +IE_CORE_DECLAREPTR( InteractiveRender ); + +typedef Gaffer::FilteredChildIterator > InteractiveRenderIterator; +typedef Gaffer::FilteredRecursiveChildIterator > RecursiveInteractiveRenderIterator; + +} // namespace Preview + +} // namespace GafferScene + +#endif // GAFFERSCENE_PREVIEW_INTERACTIVERENDER_H diff --git a/include/GafferScene/Preview/RendererAlgo.h b/include/GafferScene/Preview/RendererAlgo.h new file mode 100644 index 00000000000..f6a7dc8a039 --- /dev/null +++ b/include/GafferScene/Preview/RendererAlgo.h @@ -0,0 +1,128 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENE_PREVIEW_RENDERERALGO_H +#define GAFFERSCENE_PREVIEW_RENDERERALGO_H + +#include "boost/container/flat_map.hpp" + +#include "IECore/VectorTypedData.h" + +#include "GafferScene/Export.h" +#include "GafferScene/PathMatcher.h" +#include "GafferScene/Private/IECoreScenePreview/Renderer.h" + +namespace GafferScene +{ + +IE_CORE_FORWARDDECLARE( ScenePlug ) + +namespace Preview +{ + +namespace RendererAlgo +{ + +void outputOptions( const IECore::CompoundObject *globals, IECoreScenePreview::Renderer *renderer ); +void outputOptions( const IECore::CompoundObject *globals, const IECore::CompoundObject *previousGlobals, IECoreScenePreview::Renderer *renderer ); + +void outputOutputs( const IECore::CompoundObject *globals, IECoreScenePreview::Renderer *renderer ); +void outputOutputs( const IECore::CompoundObject *globals, const IECore::CompoundObject *previousGlobals, IECoreScenePreview::Renderer *renderer ); + +/// Utility class to handle all the set computations needed for a render. +class GAFFERSCENE_API RenderSets : boost::noncopyable +{ + + public : + + RenderSets(); + RenderSets( const ScenePlug *scene ); + + enum Changed + { + NothingChanged = 0, + CamerasSetChanged = 1, + LightsSetChanged = 2, + RenderSetsChanged = 4 + }; + + /// Returns a bitmask describing which sets + /// changed. + unsigned update( const ScenePlug *scene ); + void clear(); + + const PathMatcher &camerasSet() const; + const PathMatcher &lightsSet() const; + + IECore::ConstInternedStringVectorDataPtr setsAttribute( const std::vector &path ) const; + + private : + + struct Set + { + IECore::InternedString unprefixedName; // With "render:" stripped off + IECore::MurmurHash hash; + PathMatcher set; + }; + + typedef boost::container::flat_map Sets; + + struct Updater; + + // Stores all the "render:" sets. + Sets m_sets; + Set m_camerasSet; + Set m_lightsSet; + +}; + +void outputCameras( const ScenePlug *scene, const IECore::CompoundObject *globals, const RenderSets &renderSets, IECoreScenePreview::Renderer *renderer ); +void outputLights( const ScenePlug *scene, const IECore::CompoundObject *globals, const RenderSets &renderSets, IECoreScenePreview::Renderer *renderer ); +void outputObjects( const ScenePlug *scene, const IECore::CompoundObject *globals, const RenderSets &renderSets, IECoreScenePreview::Renderer *renderer ); + +/// Applies the resolution, aspect ratio etc from the globals to the camera. +void applyCameraGlobals( IECore::Camera *camera, const IECore::CompoundObject *globals ); + +} // namespace RendererAlgo + +/// \todo Remove this temporary backwards compatibility. +using namespace RendererAlgo; + +} // namespace Preview + +} // namespace GafferScene + +#endif // GAFFERSCENE_PREVIEW_RENDERERALGO_H diff --git a/include/GafferScene/Prune.h b/include/GafferScene/Prune.h index b10e7af62c7..66fa8c49004 100644 --- a/include/GafferScene/Prune.h +++ b/include/GafferScene/Prune.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_PRUNE_H #define GAFFERSCENE_PRUNE_H +#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/SceneElementProcessor.h b/include/GafferScene/SceneElementProcessor.h index a832f027749..3e3ed7ecc78 100644 --- a/include/GafferScene/SceneElementProcessor.h +++ b/include/GafferScene/SceneElementProcessor.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_SCENEELEMENTPROCESSOR_H #define GAFFERSCENE_SCENEELEMENTPROCESSOR_H +#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/SceneProcedural.h b/include/GafferScene/SceneProcedural.h new file mode 100644 index 00000000000..7a625e2000f --- /dev/null +++ b/include/GafferScene/SceneProcedural.h @@ -0,0 +1,157 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2012, John Haddon. All rights reserved. +// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENE_SCENEPROCEDURAL_H +#define GAFFERSCENE_SCENEPROCEDURAL_H + +#include "tbb/atomic.h" +#include "tbb/mutex.h" + +#include "IECore/Renderer.h" + +#include "GafferScene/Export.h" +#include "GafferScene/ScenePlug.h" + +namespace Gaffer +{ + +IE_CORE_FORWARDDECLARE( Context ) +IE_CORE_FORWARDDECLARE( ScriptNode ) + +} // namespace Gaffer + +namespace GafferScene +{ + +/// The SceneProcedural class passes the output from a ScenePlug to an IECore::Renderer +/// in a tree of nested deferred procedurals. See the python ScriptProcedural for +/// a procedural which will load a gaffer script and generate geometry from a named +/// node. +/// \todo There is useful functionality in here for calculating bounds and outputting things +/// to Renderers that should probably be moved to RendererAlgo.h and/or SceneAlgo.h. +class GAFFERSCENE_API SceneProcedural : public IECore::Renderer::Procedural +{ + + public : + + IE_CORE_DECLAREMEMBERPTR( SceneProcedural ); + + /// A copy of context is taken. + SceneProcedural( ConstScenePlugPtr scenePlug, const Gaffer::Context *context, const ScenePlug::ScenePath &scenePath=ScenePlug::ScenePath(), bool computeBound = true ); + virtual ~SceneProcedural(); + + virtual IECore::MurmurHash hash() const; + /// Returns an accurate computed bound if `computeBound=true` + /// was passed to the constructor, otherwise returns + /// Procedural::noBound. + virtual Imath::Box3f bound() const; + virtual void render( IECore::Renderer *renderer ) const; + + typedef boost::signal AllRenderedSignal; + + /// A signal emitted when all pending SceneProcedurals have been rendered or destroyed + static AllRenderedSignal &allRenderedSignal(); + + protected : + + SceneProcedural( const SceneProcedural &other, const ScenePlug::ScenePath &scenePath ); + + // This class must hold a reference to the script node, to prevent it from being + // destroyed mid-render. + Gaffer::ConstScriptNodePtr m_scriptNode; + ConstScenePlugPtr m_scenePlug; + Gaffer::ContextPtr m_context; + ScenePlug::ScenePath m_scenePath; + + struct Options + { + bool transformBlur; + bool deformationBlur; + Imath::V2f shutter; + }; + + Options m_options; + + struct Attributes + { + bool transformBlur; + unsigned transformBlurSegments; + bool deformationBlur; + unsigned deformationBlurSegments; + }; + + Attributes m_attributes; + IECore::ConstCompoundObjectPtr m_attributesObject; + + private : + + void updateAttributes(); + void initBound( bool compute ); + void motionTimes( unsigned segments, std::set × ) const; + + // A global counter of all the scene procedurals that are hanging around but haven't been rendered yet, which + // gets incremented in the constructor and decremented in doRender() or the destructor, whichever happens first. + // When this counter falls to zero, a signal is emitted, so you can eg clear the cache when procedural expansion + // has finished during a render. + static tbb::atomic g_pendingSceneProcedurals; + + + // Indicates if SceneProcedural::doRender() has been called. If not, g_pendingSceneProcedurals is decremented in the + // destructor + mutable bool m_rendered; + + void decrementPendingProcedurals() const; + + // We use this variable for caching the bound computation, so we can compute bounds for + // a SceneProcedural's children in parallel, and avoid computing them again when we send + // them all to the renderer in serial + Imath::Box3f m_bound; + + // struct for creating child procedurals in parallel and computing their bounds, using + // tbb::parallel_for: + class SceneProceduralCreate; + + static tbb::mutex g_allRenderedMutex; + static AllRenderedSignal g_allRenderedSignal; + +}; + +IE_CORE_DECLAREPTR( SceneProcedural ); + +} // namespace GafferScene + +#endif // GAFFERSCENE_SCENEPROCEDURAL_H diff --git a/include/GafferScene/SceneProcessor.h b/include/GafferScene/SceneProcessor.h index 9ba6f50dbe7..0176d52c07d 100644 --- a/include/GafferScene/SceneProcessor.h +++ b/include/GafferScene/SceneProcessor.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_SCENEPROCESSOR_H #define GAFFERSCENE_SCENEPROCESSOR_H +#include "GafferScene/Export.h" #include "GafferScene/SceneNode.h" namespace Gaffer diff --git a/include/GafferScene/Seeds.h b/include/GafferScene/Seeds.h index d3bfd9e31b9..788a3ae4865 100644 --- a/include/GafferScene/Seeds.h +++ b/include/GafferScene/Seeds.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_SEEDS_H #define GAFFERSCENE_SEEDS_H +#include "GafferScene/Export.h" #include "GafferScene/BranchCreator.h" namespace GafferScene diff --git a/include/GafferScene/ShaderAssignment.h b/include/GafferScene/ShaderAssignment.h index ce626efc40f..0bbc0d2c103 100644 --- a/include/GafferScene/ShaderAssignment.h +++ b/include/GafferScene/ShaderAssignment.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_SHADERASSIGNMENT_H #define GAFFERSCENE_SHADERASSIGNMENT_H +#include "GafferScene/Export.h" #include "GafferScene/AttributeProcessor.h" #include "GafferScene/ShaderPlug.h" diff --git a/include/GafferScene/StandardAttributes.h b/include/GafferScene/StandardAttributes.h index 77cb597794a..37337c078db 100644 --- a/include/GafferScene/StandardAttributes.h +++ b/include/GafferScene/StandardAttributes.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_STANDARDATTRIBUTES_H #define GAFFERSCENE_STANDARDATTRIBUTES_H +#include "GafferScene/Export.h" #include "GafferScene/Attributes.h" namespace GafferScene diff --git a/include/GafferScene/StandardOptions.h b/include/GafferScene/StandardOptions.h index 914b6cd2647..35f7a9f70fb 100644 --- a/include/GafferScene/StandardOptions.h +++ b/include/GafferScene/StandardOptions.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_STANDARDOPTIONS_H #define GAFFERSCENE_STANDARDOPTIONS_H +#include "GafferScene/Export.h" #include "GafferScene/Options.h" namespace GafferScene diff --git a/include/GafferScene/SubTree.h b/include/GafferScene/SubTree.h index fc7a391a81f..203c26d9e8d 100644 --- a/include/GafferScene/SubTree.h +++ b/include/GafferScene/SubTree.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_SUBTREE_H #define GAFFERSCENE_SUBTREE_H +#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferScene/Text.h b/include/GafferScene/Text.h index 5dd48a527f6..80018c08afa 100644 --- a/include/GafferScene/Text.h +++ b/include/GafferScene/Text.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_TEXT_H #define GAFFERSCENE_TEXT_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/UnionFilter.h b/include/GafferScene/UnionFilter.h index 3bb46dabe75..f4d9c5b1fff 100644 --- a/include/GafferScene/UnionFilter.h +++ b/include/GafferScene/UnionFilter.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_UNIONFILTER_H #define GAFFERSCENE_UNIONFILTER_H +#include "GafferScene/Export.h" #include "GafferScene/FilterProcessor.h" namespace GafferScene From 4335e64c436b6d8af2a4c025217139cb0ac17d2e Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:17:33 -0700 Subject: [PATCH 015/243] Exported symbols for src/GafferSceneBindings --- include/GafferSceneBindings/Export.h | 51 +++++++++++++++++++ .../GafferSceneBindings/MeshToPointsBinding.h | 49 ++++++++++++++++++ .../SceneFilterPathFilterBinding.h | 49 ++++++++++++++++++ .../SceneProcessorBinding.h | 49 ++++++++++++++++++ .../GafferSceneBindings/SceneReaderBinding.h | 49 ++++++++++++++++++ 5 files changed, 247 insertions(+) create mode 100644 include/GafferSceneBindings/Export.h create mode 100644 include/GafferSceneBindings/MeshToPointsBinding.h create mode 100644 include/GafferSceneBindings/SceneFilterPathFilterBinding.h create mode 100644 include/GafferSceneBindings/SceneProcessorBinding.h create mode 100644 include/GafferSceneBindings/SceneReaderBinding.h diff --git a/include/GafferSceneBindings/Export.h b/include/GafferSceneBindings/Export.h new file mode 100644 index 00000000000..8a4a8325bcd --- /dev/null +++ b/include/GafferSceneBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENEBINDINGS_EXPORT_H +#define GAFFERSCENEBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERSCENEBINDINGS_API macro based on whether or not we are compiling +// GafferSceneBindings, or including headers for linking to it. the GAFFERSCENEBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferSceneBindings_EXPORTS + #define GAFFERSCENEBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERSCENEBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERSCENEBINDINGS_EXPORT_H diff --git a/include/GafferSceneBindings/MeshToPointsBinding.h b/include/GafferSceneBindings/MeshToPointsBinding.h new file mode 100644 index 00000000000..4c2362f888e --- /dev/null +++ b/include/GafferSceneBindings/MeshToPointsBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENEBINDINGS_MESHTOPOINTSBINDING_H +#define GAFFERSCENEBINDINGS_MESHTOPOINTSBINDING_H + +#include "GafferSceneBindings/Export.h" + +namespace GafferSceneBindings +{ + +GAFFERSCENEBINDINGS_API void bindMeshToPoints(); + +} // namespace GafferSceneBindings + +#endif // GAFFERSCENEBINDINGS_MESHTOPOINTSBINDING_H diff --git a/include/GafferSceneBindings/SceneFilterPathFilterBinding.h b/include/GafferSceneBindings/SceneFilterPathFilterBinding.h new file mode 100644 index 00000000000..19b77003e77 --- /dev/null +++ b/include/GafferSceneBindings/SceneFilterPathFilterBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENEBINDINGS_SCENEFILTERPATHFILTERBINDING_H +#define GAFFERSCENEBINDINGS_SCENEFILTERPATHFILTERBINDING_H + +#include "GafferSceneBindings/Export.h" + +namespace GafferSceneBindings +{ + +GAFFERSCENEBINDINGS_API void bindSceneFilterPathFilter(); + +} // namespace GafferSceneBindings + +#endif // GAFFERSCENEBINDINGS_SCENEFILTERPATHFILTERBINDING_H diff --git a/include/GafferSceneBindings/SceneProcessorBinding.h b/include/GafferSceneBindings/SceneProcessorBinding.h new file mode 100644 index 00000000000..225feed31f9 --- /dev/null +++ b/include/GafferSceneBindings/SceneProcessorBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENEBINDINGS_SCENEPROCESSORBINDING_H +#define GAFFERSCENEBINDINGS_SCENEPROCESSORBINDING_H + +#include "GafferSceneBindings/Export.h" + +namespace GafferSceneBindings +{ + +GAFFERSCENEBINDINGS_API void bindSceneProcessor(); + +} // namespace GafferSceneBindings + +#endif // GAFFERSCENEBINDINGS_SCENEPROCESSORBINDING_H diff --git a/include/GafferSceneBindings/SceneReaderBinding.h b/include/GafferSceneBindings/SceneReaderBinding.h new file mode 100644 index 00000000000..618cef4d72c --- /dev/null +++ b/include/GafferSceneBindings/SceneReaderBinding.h @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENEBINDINGS_SCENEREADERBINDING_H +#define GAFFERSCENEBINDINGS_SCENEREADERBINDING_H + +#include "GafferSceneBindings/Export.h" + +namespace GafferSceneBindings +{ + +GAFFERSCENEBINDINGS_API void bindSceneReader(); + +} // namespace GafferSceneBindings + +#endif // GAFFERSCENEBINDINGS_SCENEREADERBINDING_H From 83a8f9f7e108dbf8c3bcf43a40b81962ffb186e7 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:20:18 -0700 Subject: [PATCH 016/243] Exported symbols for src/GafferSceneUIBindings --- include/GafferSceneUIBindings/Export.h | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/GafferSceneUIBindings/Export.h diff --git a/include/GafferSceneUIBindings/Export.h b/include/GafferSceneUIBindings/Export.h new file mode 100644 index 00000000000..037405154e2 --- /dev/null +++ b/include/GafferSceneUIBindings/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERSCENEUIBINDINGS_EXPORT_H +#define GAFFERSCENEUIBINDINGS_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERSCENEUIBINDINGS_API macro based on whether or not we are compiling +// GafferSceneUIBindings, or including headers for linking to it. the GAFFERSCENEUIBINDINGS_API +// macro is the one that is used in the class definitions. +#ifdef GafferSceneUIBindings_EXPORTS + #define GAFFERSCENEUIBINDINGS_API GAFFER_EXPORT +#else + #define GAFFERSCENEUIBINDINGS_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERSCENEUIBINDINGS_EXPORT_H From 74d570136dca920f651481e867ac1973b018cf8f Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:22:04 -0700 Subject: [PATCH 017/243] Exported symbols for src/GafferOSL --- include/GafferOSL/OSLCode.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/GafferOSL/OSLCode.h b/include/GafferOSL/OSLCode.h index 539c094e2c7..c4774a55011 100644 --- a/include/GafferOSL/OSLCode.h +++ b/include/GafferOSL/OSLCode.h @@ -37,6 +37,7 @@ #ifndef GAFFEROSL_OSLCODE_H #define GAFFEROSL_OSLCODE_H +#include "GafferOSL/Export.h" #include "GafferOSL/OSLShader.h" namespace GafferOSL From 20053072fed7dc4da275a97472592885025f8edc Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:22:51 -0700 Subject: [PATCH 018/243] Exported symbols for src/GafferArnold --- include/GafferArnold/ArnoldMeshLight.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/GafferArnold/ArnoldMeshLight.h b/include/GafferArnold/ArnoldMeshLight.h index 00a4d51f903..3168fe356ee 100644 --- a/include/GafferArnold/ArnoldMeshLight.h +++ b/include/GafferArnold/ArnoldMeshLight.h @@ -42,6 +42,8 @@ #include "GafferScene/FilteredSceneProcessor.h" +#include "GafferArnold/Export.h" + namespace GafferArnold { From 6776667a1cbac211758c46f4e396382589da3d1b Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 10 May 2017 00:23:17 -0700 Subject: [PATCH 019/243] Exported symbols for src/GafferRenderMan --- include/GafferRenderMan/Export.h | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/GafferRenderMan/Export.h diff --git a/include/GafferRenderMan/Export.h b/include/GafferRenderMan/Export.h new file mode 100644 index 00000000000..96d9a9f6166 --- /dev/null +++ b/include/GafferRenderMan/Export.h @@ -0,0 +1,51 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERRENDERMAN_EXPORT_H +#define GAFFERRENDERMAN_EXPORT_H + +#include "Gaffer/Export.h" + +// define GAFFERRENDERMAN_API macro based on whether or not we are compiling +// GafferRenderman, or including headers for linking to it. the GAFFERRENDERMAN_API +// macro is the one that is used in the class definitions. +#ifdef GafferRenderMan_EXPORTS + #define GAFFERRENDERMAN_API GAFFER_EXPORT +#else + #define GAFFERRENDERMAN_API GAFFER_IMPORT +#endif + +#endif // #ifndef GAFFERRENDERMAN_EXPORT_H From aa484135039efe8a95907c5e459ab381d1b4ddd9 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Mon, 3 Jul 2017 22:13:50 -0700 Subject: [PATCH 020/243] Add missing exports --- include/GafferCortex/ParameterisedHolder.h | 2 +- .../IECoreDelightPreview/NodeAlgo.h | 14 +- .../IECoreDelightPreview/ParameterList.h | 6 +- include/GafferDispatch/Dispatcher.h | 2 +- include/GafferDispatch/TaskNode.h | 4 +- include/GafferImage/BufferAlgo.h | 2 +- include/GafferImage/Catalogue.h | 2 +- include/GafferImage/Dilate.h | 1 + include/GafferImage/Erode.h | 1 + include/GafferImage/Shuffle.h | 2 +- include/GafferScene/CollectScenes.h | 1 + include/GafferScene/DeleteCurves.h | 1 + include/GafferScene/DeleteFaces.h | 1 + include/GafferScene/DeletePoints.h | 1 + include/GafferScene/Encapsulate.h | 1 + include/GafferScene/FilterPlug.h | 2 +- .../Private/IECoreScenePreview/Geometry.h | 4 +- .../Private/IECoreScenePreview/Procedural.h | 4 +- .../Private/IECoreScenePreview/Renderer.h | 4 +- .../GafferScene/ResamplePrimitiveVariables.h | 1 + include/GafferScene/SceneProcessor.h | 4 +- include/GafferUI/ViewportGadget.h | 4 +- include/GafferVDB/VDBObject.h | 134 ++++++++++++++++++ src/GafferBindings/SignalBinding.cpp | 4 +- src/GafferImage/FormatData.cpp | 7 +- src/GafferImageUI/ImageView.cpp | 2 +- src/GafferSceneUI/ContextAlgo.cpp | 2 + 27 files changed, 188 insertions(+), 25 deletions(-) create mode 100644 include/GafferVDB/VDBObject.h diff --git a/include/GafferCortex/ParameterisedHolder.h b/include/GafferCortex/ParameterisedHolder.h index f963aac96f0..ae12dffc2e4 100644 --- a/include/GafferCortex/ParameterisedHolder.h +++ b/include/GafferCortex/ParameterisedHolder.h @@ -86,7 +86,7 @@ class GAFFERCORTEX_API ParameterisedHolder : public BaseType void setParameterisedValues(); /// \todo Is this even needed? Can we just use an UndoScope instead? - class ParameterModificationContext + class GAFFERCORTEX_API ParameterModificationContext { public : ParameterModificationContext( Ptr parameterisedHolder ); diff --git a/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h b/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h index f16463d9cbe..dfaebb35217 100644 --- a/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h +++ b/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h @@ -44,6 +44,10 @@ #include +// Change this to "IECoreDelight/Export.h" and remove the define when it goes into Cortex. +#include "GafferDelight/Export.h" +#define IECOREDELIGHT_API GAFFERDELIGHT_API + namespace IECoreDelight { @@ -55,10 +59,10 @@ namespace NodeAlgo /// Converts the specified IECore::Object into an equivalent /// NSI node with the specified handle, returning true on /// success and false on failure. -bool convert( const IECore::Object *object, NSIContext_t context, const char *handle ); +IECOREDELIGHT_API bool convert( const IECore::Object *object, NSIContext_t context, const char *handle ); /// As above, but converting a moving object. If no motion converter /// is available, the first sample is converted instead. -bool convert( const std::vector &samples, const std::vector &sampleTimes, NSIContext_t context, const char *handle ); +IECOREDELIGHT_API bool convert( const std::vector &samples, const std::vector &sampleTimes, NSIContext_t context, const char *handle ); /// Signature of a function which can convert an IECore::Object /// into an NSI node. @@ -68,7 +72,7 @@ typedef bool (*MotionConverter)( const std::vector &samp /// Registers a converter for a specific type. /// Use the ConverterDescription utility class in preference to /// this, since it provides additional type safety. -void registerConverter( IECore::TypeId fromType, Converter converter, MotionConverter motionConverter = nullptr ); +IECOREDELIGHT_API void registerConverter( IECore::TypeId fromType, Converter converter, MotionConverter motionConverter = nullptr ); /// Class which registers a converter for type T automatically /// when instantiated. @@ -94,10 +98,10 @@ class ConverterDescription }; /// Adds all PrimitiveVariables into a ParameterList for use with NSISetAttribute. -void primitiveVariableParameterList( const IECoreScene::Primitive *primitive, ParameterList ¶meters, const IECore::IntVectorData *vertexIndices = nullptr ); +IECOREDELIGHT_API void primitiveVariableParameterList( const IECoreScene::Primitive *primitive, ParameterList ¶meters, const IECore::IntVectorData *vertexIndices = nullptr ); /// As above, but splits out animated primitive variables into a separate vector of ParameterLists /// for use with NSISetAttributeAtTime. -void primitiveVariableParameterLists( const std::vector &primitives, ParameterList &staticParameters, std::vector &animatedParameters, const IECore::IntVectorData *vertexIndices = nullptr ); +IECOREDELIGHT_API void primitiveVariableParameterLists( const std::vector &primitives, ParameterList &staticParameters, std::vector &animatedParameters, const IECore::IntVectorData *vertexIndices = nullptr ); } // namespace NodeAlgo diff --git a/include/GafferDelight/IECoreDelightPreview/ParameterList.h b/include/GafferDelight/IECoreDelightPreview/ParameterList.h index 7303d0f0686..fa247394e98 100644 --- a/include/GafferDelight/IECoreDelightPreview/ParameterList.h +++ b/include/GafferDelight/IECoreDelightPreview/ParameterList.h @@ -44,6 +44,10 @@ #include +// Change this to "IECoreDelight/Export.h" and remove the define when it goes into Cortex. +#include "GafferDelight/Export.h" +#define IECOREDELIGHT_API GAFFERDELIGHT_API + namespace IECoreDelight { @@ -51,7 +55,7 @@ namespace IECoreDelight /// NSI API. The ParameterList does not copy any of the data passed /// to it; it is the caller's responsibility to keep all data alive /// for as long as the ParameterList is used. -class ParameterList +class IECOREDELIGHT_API ParameterList { public : diff --git a/include/GafferDispatch/Dispatcher.h b/include/GafferDispatch/Dispatcher.h index 7d37543dcc4..08cd4b686b0 100644 --- a/include/GafferDispatch/Dispatcher.h +++ b/include/GafferDispatch/Dispatcher.h @@ -224,7 +224,7 @@ class GAFFERDISPATCH_API Dispatcher : public Gaffer::Node /// All tasks within a batch are from the same plug /// and have identical contexts except for the frame /// number. - class TaskBatch : public IECore::RefCounted + class GAFFERDISPATCH_API TaskBatch : public IECore::RefCounted { public : diff --git a/include/GafferDispatch/TaskNode.h b/include/GafferDispatch/TaskNode.h index 8425adbd024..16696d4ca38 100644 --- a/include/GafferDispatch/TaskNode.h +++ b/include/GafferDispatch/TaskNode.h @@ -85,7 +85,7 @@ class GAFFERDISPATCH_API TaskNode : public Gaffer::DependencyNode /// the context in which it should be executed. See TaskPlug /// for the main public interface for the execution of /// individual tasks. - class Task + class GAFFERDISPATCH_API Task { public : @@ -121,7 +121,7 @@ class GAFFERDISPATCH_API TaskNode : public Gaffer::DependencyNode /// Plug type used to represent tasks within the /// node graph. This provides the primary public /// interface for querying and executing tasks. - class TaskPlug : public Gaffer::Plug + class GAFFERDISPATCH_API TaskPlug : public Gaffer::Plug { public : diff --git a/include/GafferImage/BufferAlgo.h b/include/GafferImage/BufferAlgo.h index 3bd7b2b040c..45e58ac6cf3 100644 --- a/include/GafferImage/BufferAlgo.h +++ b/include/GafferImage/BufferAlgo.h @@ -37,7 +37,7 @@ #ifndef GAFFERIMAGE_BUFFERALGO_H #define GAFFERIMAGE_BUFFERALGO_H -#include "IECore/Export.h" +#include "GafferImage/Export.h" IECORE_PUSH_DEFAULT_VISIBILITY #include "OpenEXR/ImathBox.h" diff --git a/include/GafferImage/Catalogue.h b/include/GafferImage/Catalogue.h index a41ed993baf..32bbf8946d2 100644 --- a/include/GafferImage/Catalogue.h +++ b/include/GafferImage/Catalogue.h @@ -68,7 +68,7 @@ class GAFFERIMAGE_API Catalogue : public ImageNode ~Catalogue() override; /// Plug type used to represent an image in the catalogue. - class Image : public Gaffer::Plug + class GAFFERIMAGE_API Image : public Gaffer::Plug { public : diff --git a/include/GafferImage/Dilate.h b/include/GafferImage/Dilate.h index 3d88a97e715..7f0f5320e29 100644 --- a/include/GafferImage/Dilate.h +++ b/include/GafferImage/Dilate.h @@ -37,6 +37,7 @@ #ifndef GAFFERIMAGE_DILATE_H #define GAFFERIMAGE_DILATE_H +#include "GafferImage/Export.h" #include "GafferImage/RankFilter.h" namespace GafferImage diff --git a/include/GafferImage/Erode.h b/include/GafferImage/Erode.h index 9bfab274e54..243939eed7b 100644 --- a/include/GafferImage/Erode.h +++ b/include/GafferImage/Erode.h @@ -37,6 +37,7 @@ #ifndef GAFFERIMAGE_ERODE_H #define GAFFERIMAGE_ERODE_H +#include "GafferImage/Export.h" #include "GafferImage/RankFilter.h" namespace GafferImage diff --git a/include/GafferImage/Shuffle.h b/include/GafferImage/Shuffle.h index 1491600bb86..3140413174c 100644 --- a/include/GafferImage/Shuffle.h +++ b/include/GafferImage/Shuffle.h @@ -58,7 +58,7 @@ class GAFFERIMAGE_API Shuffle : public ImageProcessor /// A custom plug to hold the name of an output channel and the /// name of an input channel to shuffle into it. Add instances /// of these to the Shuffle::channelsPlug() to define the shuffle. - class ChannelPlug : public Gaffer::ValuePlug + class GAFFERIMAGE_API ChannelPlug : public Gaffer::ValuePlug { public : diff --git a/include/GafferScene/CollectScenes.h b/include/GafferScene/CollectScenes.h index 2f8f91fbdea..38b09611d23 100644 --- a/include/GafferScene/CollectScenes.h +++ b/include/GafferScene/CollectScenes.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_COLLECTSCENES_H #define GAFFERSCENE_COLLECTSCENES_H +#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/DeleteCurves.h b/include/GafferScene/DeleteCurves.h index 1442dd0901d..79cf955caa3 100644 --- a/include/GafferScene/DeleteCurves.h +++ b/include/GafferScene/DeleteCurves.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_DELETECURVES_H #define GAFFERSCENE_DELETECURVES_H +#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/DeleteFaces.h b/include/GafferScene/DeleteFaces.h index 8bba02e4b5b..ac9e706c911 100644 --- a/include/GafferScene/DeleteFaces.h +++ b/include/GafferScene/DeleteFaces.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_DELETEFACES_H #define GAFFERSCENE_DELETEFACES_H +#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/DeletePoints.h b/include/GafferScene/DeletePoints.h index e5e34233f30..feb4d0462ed 100644 --- a/include/GafferScene/DeletePoints.h +++ b/include/GafferScene/DeletePoints.h @@ -38,6 +38,7 @@ #ifndef GAFFERSCENE_DELETEPOINTS_H #define GAFFERSCENE_DELETEPOINTS_H +#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/Encapsulate.h b/include/GafferScene/Encapsulate.h index e550174099a..f10b2d1168a 100644 --- a/include/GafferScene/Encapsulate.h +++ b/include/GafferScene/Encapsulate.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_ENCAPSULATE_H #define GAFFERSCENE_ENCAPSULATE_H +#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/FilterPlug.h b/include/GafferScene/FilterPlug.h index 408c5081b4b..29b35ce8ed9 100644 --- a/include/GafferScene/FilterPlug.h +++ b/include/GafferScene/FilterPlug.h @@ -97,7 +97,7 @@ class GAFFERSCENE_API FilterPlug : public Gaffer::IntPlug static const IECore::InternedString inputSceneContextName; /// Provides the input scene for a filter evaluation - struct SceneScope : public Gaffer::Context::EditableScope + struct GAFFERSCENE_API SceneScope : public Gaffer::Context::EditableScope { SceneScope( const Gaffer::Context *context, const ScenePlug *scenePlug ); }; diff --git a/include/GafferScene/Private/IECoreScenePreview/Geometry.h b/include/GafferScene/Private/IECoreScenePreview/Geometry.h index 416bcc91d02..3944e861026 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Geometry.h +++ b/include/GafferScene/Private/IECoreScenePreview/Geometry.h @@ -35,6 +35,8 @@ #ifndef IECORE_GEOMETRY_H #define IECORE_GEOMETRY_H +#include "GafferScene/Export.h" + #include "GafferScene/TypeIds.h" #include "IECoreScene/VisibleRenderable.h" @@ -44,7 +46,7 @@ namespace IECoreScenePreview /// Class used to represent additional geometry types supported /// by specific renderers but not present in Cortex (think RiGeometry). -class IECORESCENE_API Geometry : public IECoreScene::VisibleRenderable +class GAFFERSCENE_API Geometry : public IECoreScene::VisibleRenderable { public: diff --git a/include/GafferScene/Private/IECoreScenePreview/Procedural.h b/include/GafferScene/Private/IECoreScenePreview/Procedural.h index 6dddf0c8a84..c882ce14b3d 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Procedural.h +++ b/include/GafferScene/Private/IECoreScenePreview/Procedural.h @@ -37,6 +37,8 @@ #ifndef IECORESCENEPREVIEW_PROCEDURAL_H #define IECORESCENEPREVIEW_PROCEDURAL_H +#include "GafferScene/Export.h" + #include "GafferScene/TypeIds.h" #include "IECoreScene/VisibleRenderable.h" @@ -48,7 +50,7 @@ class Renderer; /// \todo Would it be useful to have a virtual function that returns an /// ExternalProcedural, for use when serialising scenes? -class IECORESCENE_API Procedural : public IECoreScene::VisibleRenderable +class GAFFERSCENE_API Procedural : public IECoreScene::VisibleRenderable { public : diff --git a/include/GafferScene/Private/IECoreScenePreview/Renderer.h b/include/GafferScene/Private/IECoreScenePreview/Renderer.h index a4cb355a2d0..eaab58d1b9e 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Renderer.h +++ b/include/GafferScene/Private/IECoreScenePreview/Renderer.h @@ -37,6 +37,8 @@ #ifndef IECORESCENEPREVIEW_RENDERER_H #define IECORESCENEPREVIEW_RENDERER_H +#include "GafferScene/Export.h" + #include "IECoreScene/Camera.h" #include "IECoreScene/Output.h" @@ -70,7 +72,7 @@ namespace IECoreScenePreview /// - Change the python bindings so that the lifetime of the object /// handles and the renderer are tied together, or have the object /// handles keep the renderer alive on the C++ side anyway. -class IECORESCENE_API Renderer : public IECore::RefCounted +class GAFFERSCENE_API Renderer : public IECore::RefCounted { public : diff --git a/include/GafferScene/ResamplePrimitiveVariables.h b/include/GafferScene/ResamplePrimitiveVariables.h index 9fab1cfed03..e05a26f1012 100644 --- a/include/GafferScene/ResamplePrimitiveVariables.h +++ b/include/GafferScene/ResamplePrimitiveVariables.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_RESAMPLEPRIMITIVEVARIABLES_H #define GAFFERSCENE_RESAMPLEPRIMITIVEVARIABLES_H +#include "GafferScene/Export.h" #include "GafferScene/PrimitiveVariableProcessor.h" namespace GafferScene diff --git a/include/GafferScene/SceneProcessor.h b/include/GafferScene/SceneProcessor.h index 0176d52c07d..2c02c49126d 100644 --- a/include/GafferScene/SceneProcessor.h +++ b/include/GafferScene/SceneProcessor.h @@ -38,6 +38,8 @@ #ifndef GAFFERSCENE_SCENEPROCESSOR_H #define GAFFERSCENE_SCENEPROCESSOR_H +#include + #include "GafferScene/Export.h" #include "GafferScene/SceneNode.h" @@ -64,7 +66,7 @@ class GAFFERSCENE_API SceneProcessor : public SceneNode /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - SceneProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); + SceneProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); ~SceneProcessor() override; diff --git a/include/GafferUI/ViewportGadget.h b/include/GafferUI/ViewportGadget.h index 124fba4aa41..4c380fa9ff4 100644 --- a/include/GafferUI/ViewportGadget.h +++ b/include/GafferUI/ViewportGadget.h @@ -176,7 +176,7 @@ class GAFFERUI_API ViewportGadget : public Gadget /// The SelectionScope class can be used by child Gadgets to perform /// OpenGL selection from event signal callbacks. - class SelectionScope : boost::noncopyable + class GAFFERUI_API SelectionScope : boost::noncopyable { public : @@ -218,7 +218,7 @@ class GAFFERUI_API ViewportGadget : public Gadget }; /// The RasterScope class can be used to perform drawing in raster space. - class RasterScope : boost::noncopyable + class GAFFERUI_API RasterScope : boost::noncopyable { public : diff --git a/include/GafferVDB/VDBObject.h b/include/GafferVDB/VDBObject.h new file mode 100644 index 00000000000..350f8e7e7a5 --- /dev/null +++ b/include/GafferVDB/VDBObject.h @@ -0,0 +1,134 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2017, John Haddon. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERVDB_VDBOBJECT_H +#define GAFFERVDB_VDBOBJECT_H + +#include + +#include "openvdb/openvdb.h" + +#include "OpenEXR/ImathBox.h" + +#include "IECore/Object.h" +#include "IECore/CompoundObject.h" +#include "IECoreScene/VisibleRenderable.h" +#include "IECore/VectorTypedData.h" + +#include "GafferVDB/Export.h" +#include "GafferVDB/TypeIds.h" + +namespace GafferVDB +{ + +class GAFFERVDB_API VDBObject : public IECoreScene::VisibleRenderable +{ + + public : + + VDBObject(); + + //! initialise VDBObject from a vdb file + VDBObject( const std::string &filename ); + + IE_CORE_DECLAREEXTENSIONOBJECT( GafferVDB::VDBObject, VDBObjectTypeId, IECoreScene::VisibleRenderable ); + + void insertGrid( openvdb::GridBase::Ptr grid ); + void removeGrid( const std::string &name ); + + openvdb::GridBase::ConstPtr findGrid( const std::string &name ) const; + openvdb::GridBase::Ptr findGrid( const std::string &name ); + + std::vector gridNames() const; + + Imath::Box3f bound() const override; + void render( IECoreScene::Renderer *renderer ) const override; + + IECore::CompoundObjectPtr metadata( const std::string &name ); + + //! Are the grids in this VDBObject unmodified from the vdb file in filename? + //! Useful for passing VDB objects to renders by filename instead of memory buffer + bool unmodifiedFromFile() const; + + //! path to VDB file used to initialise this object + //! empty for procedurally generated VDBs + std::string fileName() const + { + return m_fileName; + } + + protected : + + virtual ~VDBObject(); + + private : + + static const unsigned int m_ioVersion; + + class GAFFERVDB_API HashedGrid + { + public: + HashedGrid() : m_hashValid( false ), m_unmodifiedFromFile( false ) + { + } + + HashedGrid( openvdb::GridBase::Ptr grid, bool initFromFile = false ) : m_grid( grid ), m_hashValid( false ), m_unmodifiedFromFile( initFromFile ) + { + } + + IECore::MurmurHash hash() const; + openvdb::GridBase::Ptr grid() const; + bool unmodifiedFromFile() const; + void markedAsEdited(); + + private: + openvdb::GridBase::Ptr m_grid; + mutable bool m_hashValid; + mutable IECore::MurmurHash m_hash; + bool m_unmodifiedFromFile; + }; + + std::unordered_map m_grids; + + //! store the filename incase we need don't modify the vdb and we can pass it on to clients who can only deal with file VDBs + std::string m_fileName; +}; + +IE_CORE_DECLAREPTR( VDBObject ) + +} // namespace GafferVDB + +#endif // GAFFERVDB_VDBOBJECT_H diff --git a/src/GafferBindings/SignalBinding.cpp b/src/GafferBindings/SignalBinding.cpp index edcf4774c16..38bd86822f5 100644 --- a/src/GafferBindings/SignalBinding.cpp +++ b/src/GafferBindings/SignalBinding.cpp @@ -41,6 +41,8 @@ #include "boost/signals.hpp" +#include "GafferBindings/Export.h" + using namespace boost::python; namespace GafferBindings @@ -49,7 +51,7 @@ namespace GafferBindings namespace Detail { -boost::python::object pythonConnection( const boost::signals::connection &connection, bool scoped ) +GAFFERBINDINGS_API boost::python::object pythonConnection( const boost::signals::connection &connection, bool scoped ) { if( scoped ) { diff --git a/src/GafferImage/FormatData.cpp b/src/GafferImage/FormatData.cpp index a202a834be3..ea39d71e63d 100644 --- a/src/GafferImage/FormatData.cpp +++ b/src/GafferImage/FormatData.cpp @@ -36,6 +36,7 @@ #include "GafferImage/FormatData.h" +#include "GafferImage/Export.h" #include "GafferImage/TypeIds.h" #include "IECore/TypedData.h" @@ -48,7 +49,7 @@ namespace IECore IECORE_RUNTIMETYPED_DEFINETEMPLATESPECIALISATION( GafferImage::FormatData, GafferImage::FormatDataTypeId ) -template<> +template<> GAFFERIMAGE_API void FormatData::save( SaveContext *context ) const { Data::save( context ); @@ -58,7 +59,7 @@ void FormatData::save( SaveContext *context ) const container->write( "pixelAspect", readable().getPixelAspect() ); } -template<> +template<> GAFFERIMAGE_API void FormatData::load( LoadContextPtr context ) { Data::load( context ); @@ -75,7 +76,7 @@ void FormatData::load( LoadContextPtr context ) writable().setPixelAspect( pixelAspect ); } -template<> +template<> GAFFERIMAGE_API void SimpleDataHolder::hash( MurmurHash &h ) const { const GafferImage::Format &f = readable(); diff --git a/src/GafferImageUI/ImageView.cpp b/src/GafferImageUI/ImageView.cpp index 34bc4aeb91a..b044e08ca82 100644 --- a/src/GafferImageUI/ImageView.cpp +++ b/src/GafferImageUI/ImageView.cpp @@ -353,7 +353,7 @@ class ImageView::ColorInspector : public boost::signals::trackable GAFFER_NODE_DEFINE_TYPE( ImageView ); -ImageView::ViewDescription ImageView::g_viewDescription( GafferImage::ImagePlug::staticTypeId() ); +GAFFERIMAGEUI_API ImageView::ViewDescription ImageView::g_viewDescription( GafferImage::ImagePlug::staticTypeId() ); ImageView::ImageView( const std::string &name ) : View( name, new GafferImage::ImagePlug() ), diff --git a/src/GafferSceneUI/ContextAlgo.cpp b/src/GafferSceneUI/ContextAlgo.cpp index b0100eaadef..9dd1fdcc5c6 100644 --- a/src/GafferSceneUI/ContextAlgo.cpp +++ b/src/GafferSceneUI/ContextAlgo.cpp @@ -42,6 +42,8 @@ #include "IECore/VectorTypedData.h" +#include "GafferSceneUI/ContextAlgo.h" + using namespace IECore; using namespace Gaffer; using namespace GafferScene; From 01678aca064cd34f8e48e58252b999cdb61a6b21 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 10:57:09 -0800 Subject: [PATCH 021/243] GafferBindings exports --- include/GafferBindings/MetadataBinding.h | 2 ++ include/GafferBindings/Serialisation.h | 2 +- include/GafferBindings/SignalBinding.inl | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/GafferBindings/MetadataBinding.h b/include/GafferBindings/MetadataBinding.h index e6ba89a40f2..5de3ef528a5 100644 --- a/include/GafferBindings/MetadataBinding.h +++ b/include/GafferBindings/MetadataBinding.h @@ -41,6 +41,8 @@ #include "Gaffer/Node.h" +#include "GafferBindings/Export.h" + namespace GafferBindings { diff --git a/include/GafferBindings/Serialisation.h b/include/GafferBindings/Serialisation.h index 941113fa0bc..1b309bb3908 100644 --- a/include/GafferBindings/Serialisation.h +++ b/include/GafferBindings/Serialisation.h @@ -100,7 +100,7 @@ class GAFFERBINDINGS_API Serialisation /// The Serialiser class may be implemented differently for specific types to customise /// their serialisation. - class Serialiser : public IECore::RefCounted + class GAFFERBINDINGS_API Serialiser : public IECore::RefCounted { public : diff --git a/include/GafferBindings/SignalBinding.inl b/include/GafferBindings/SignalBinding.inl index dec3b2ca227..1b7eac40ef3 100644 --- a/include/GafferBindings/SignalBinding.inl +++ b/include/GafferBindings/SignalBinding.inl @@ -45,6 +45,8 @@ #include "boost/signals.hpp" #include "boost/version.hpp" +#include "GafferBindings/Export.h" + namespace GafferBindings { From b8165472cc32e79850af5cd2408e5a566f8a2f28 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 10:58:35 -0800 Subject: [PATCH 022/243] GafferImage exports --- include/GafferImage/Format.h | 2 ++ include/GafferImage/ImageAlgo.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/GafferImage/Format.h b/include/GafferImage/Format.h index d52e01ec2b1..63aecea5198 100644 --- a/include/GafferImage/Format.h +++ b/include/GafferImage/Format.h @@ -50,6 +50,8 @@ IECORE_POP_DEFAULT_VISIBILITY #include "GafferImage/Export.h" +#include "GafferImage/Export.h" + namespace GafferImage { diff --git a/include/GafferImage/ImageAlgo.h b/include/GafferImage/ImageAlgo.h index d5209b7a091..3111d0001e2 100644 --- a/include/GafferImage/ImageAlgo.h +++ b/include/GafferImage/ImageAlgo.h @@ -52,6 +52,8 @@ IECORE_POP_DEFAULT_VISIBILITY #include "GafferImage/Export.h" +#include "GafferImage/Export.h" + namespace GafferImage { From b9ed2344545ada45377bb289512238ddb4c3f958 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 11:00:15 -0800 Subject: [PATCH 023/243] GafferScene exports --- include/GafferScene/MapProjection.h | 1 + include/GafferScene/OpenGLRender.h | 1 + 2 files changed, 2 insertions(+) diff --git a/include/GafferScene/MapProjection.h b/include/GafferScene/MapProjection.h index 333576478c3..1fbac650573 100644 --- a/include/GafferScene/MapProjection.h +++ b/include/GafferScene/MapProjection.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_MAPPROJECTION_H #define GAFFERSCENE_MAPPROJECTION_H +#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/OpenGLRender.h b/include/GafferScene/OpenGLRender.h index 52c49294355..301d4cdfac0 100644 --- a/include/GafferScene/OpenGLRender.h +++ b/include/GafferScene/OpenGLRender.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENE_OPENGLRENDER_H #define GAFFERSCENE_OPENGLRENDER_H +#include "GafferScene/Export.h" #include "GafferScene/Render.h" namespace GafferScene From 884eb579402f84d718a773910b0c924d71c7a116 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 11:05:35 -0800 Subject: [PATCH 024/243] GafferCortex exports --- include/GafferCortex/ParameterHandler.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/GafferCortex/ParameterHandler.h b/include/GafferCortex/ParameterHandler.h index de842eb30db..61a1feee398 100644 --- a/include/GafferCortex/ParameterHandler.h +++ b/include/GafferCortex/ParameterHandler.h @@ -48,6 +48,8 @@ #include "GafferCortex/Export.h" +#include "GafferCortex/Export.h" + namespace GafferCortex { From daee19d7a0dd6e966eb7dd205786b5fd4e7de4c6 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 11:22:35 -0800 Subject: [PATCH 025/243] Missing header --- src/GafferSceneUI/ContextAlgo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/GafferSceneUI/ContextAlgo.cpp b/src/GafferSceneUI/ContextAlgo.cpp index 9dd1fdcc5c6..058933234cd 100644 --- a/src/GafferSceneUI/ContextAlgo.cpp +++ b/src/GafferSceneUI/ContextAlgo.cpp @@ -44,6 +44,8 @@ #include "GafferSceneUI/ContextAlgo.h" +#include "GafferSceneUI/ContextAlgo.h" + using namespace IECore; using namespace Gaffer; using namespace GafferScene; From 796a2577186c5c61f741fecf42ce87c16c2bffb1 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 20:52:45 -0800 Subject: [PATCH 026/243] Added CMake files and batch file to build on windows --- contrib/cmake/CMakeLists.txt | 209 ++++++++++++++++----------- contrib/cmake/buildWindows.bat | 13 ++ contrib/cmake/cmake/FindCortex.cmake | 9 ++ 3 files changed, 144 insertions(+), 87 deletions(-) create mode 100644 contrib/cmake/buildWindows.bat diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index a43c515b602..1991d662a70 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -96,9 +96,9 @@ find_package( Cortex REQUIRED ) find_package( OpenColorIO REQUIRED ) find_package( OpenImageIO REQUIRED ) find_package( OSL REQUIRED ) -find_package( Freetype REQUIRED ) +find_package( FreeType REQUIRED ) find_package( PNG REQUIRED ) # For freetype linking -find_package( Arnold REQUIRED ) +find_package( Arnold ) find_package( OpenGL REQUIRED ) find_package( GLEW REQUIRED ) find_package( Qt5 5.6 REQUIRED Core Gui OpenGL ) @@ -113,7 +113,9 @@ include_directories( ${ILMBASE_INCLUDE_DIR} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) include_directories( ${Cortex_INCLUDE_DIRS} ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) -include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) +if (Arnold_FOUND) + include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) +endif() include_directories( ${APPLESEED_INCLUDE_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} ) @@ -162,11 +164,9 @@ set( BASE_PYTHON_LIBS # Includes include_directories( ${CMAKE_SOURCE_DIR}/include ) -set( GAFFER_LIB_NAMES +set( GAFFER_LIB_NAMES Gaffer GafferAppleseed - GafferArnold - GafferArnoldUI GafferCortex GafferDispatch GafferImage @@ -180,6 +180,9 @@ set( GAFFER_LIB_NAMES GafferVDBUI GafferOSLUI ) +if (Arnold_FOUND) + SET(GAFFER_LIB_NAMES ${GAFFER_LIB_NAMES} GafferArnold GafferArnoldUI) +endif() set( GAFFERBINDINGS_LIB_NAMES Gaffer @@ -193,7 +196,6 @@ set( GAFFERTEST_LIB_NAMES set( GAFFER_PYTHON_NAMES Gaffer GafferAppleseed - GafferArnold GafferCortex GafferDispatch GafferImage @@ -203,6 +205,9 @@ set( GAFFER_PYTHON_NAMES GafferTractor GafferVDB ) +if (Arnold_FOUND) + SET(GAFFER_PYTHON_NAMES ${GAFFER_PYTHON_NAMES} GafferArnold) +endif() # Get lists of files foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) @@ -235,35 +240,59 @@ foreach( GAFFER_LIB ${GAFFER_PYTHON_NAMES} ) python/${GAFFER_LIB}Test/*.py python/${GAFFER_LIB}UI/*.py python/${GAFFER_LIB}UITest/*.py ) endforeach() +# Substitute version info +if ( NOT WINDOWS ) + set(sedSubstitutions "s/!GAFFER_MILESTONE_VERSION!/${GAFFER_MILESTONE_VERSION}/g\;s/!GAFFER_MAJOR_VERSION!/${GAFFER_MAJOR_VERSION}/g\;s/!GAFFER_MINOR_VERSION!/${GAFFER_MINOR_VERSION}/g\;s/!GAFFER_PATCH_VERSION!/${GAFFER_PATCH_VERSION}/g") -set(sedSubstitutions "s/!GAFFER_MILESTONE_VERSION!/${GAFFER_MILESTONE_VERSION}/g\;s/!GAFFER_MAJOR_VERSION!/${GAFFER_MAJOR_VERSION}/g\;s/!GAFFER_MINOR_VERSION!/${GAFFER_MINOR_VERSION}/g\;s/!GAFFER_PATCH_VERSION!/${GAFFER_PATCH_VERSION}/g") - - -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/About.py - COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/python/Gaffer/About.py > ${CMAKE_CURRENT_BINARY_DIR}/About.py - DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg - WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} -) -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h - COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/include/Gaffer/Version.h > ${CMAKE_CURRENT_BINARY_DIR}/Version.h - DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg - WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} -) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/About.py + COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/python/Gaffer/About.py > ${CMAKE_CURRENT_BINARY_DIR}/About.py + DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg + WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} + ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h + COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/include/Gaffer/Version.h > ${CMAKE_CURRENT_BINARY_DIR}/Version.h + DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg + WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} + ) +else() + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/About.py + COMMAND powershell -Command "\ + (Get-Content ${GAFFER_SOURCE_DIR}/python/Gaffer/About.py).replace('!GAFFER_MILESTONE_VERSION!', '${GAFFER_MILESTONE_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py;\ + (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py).replace('!GAFFER_MAJOR_VERSION!', '${GAFFER_MAJOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py;\ + (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py).replace('!GAFFER_MINOR_VERSION!', '${GAFFER_MINOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py;\ + (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py).replace('!GAFFER_PATCH_VERSION!', '${GAFFER_PATCH_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py" + DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg + WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} + ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h + COMMAND powershell -Command "\ + (Get-Content ${GAFFER_SOURCE_DIR}/include/Gaffer/Version.h).replace('!GAFFER_MILESTONE_VERSION!', '${GAFFER_MILESTONE_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h;\ + (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h).replace('!GAFFER_MAJOR_VERSION!', '${GAFFER_MAJOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h;\ + (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h).replace('!GAFFER_MINOR_VERSION!', '${GAFFER_MINOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h;\ + (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h).replace('!GAFFER_PATCH_VERSION!', '${GAFFER_PATCH_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h" + DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg + WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} + ) +endif() # Build Graphics # ============== +set( INKSCAPE_COMMAND "C:/Program Files/Inkscape/inkscape") -file( GLOB GAFFER_SVG_FILES ${GAFFER_SOURCE_DIR}/resources/*.svg) -set(outputPNGs "") - -foreach(srcSvgFile ${GAFFER_SVG_FILES}) - # generate an object list from the svg file - execute_process( COMMAND inkscape --query-all ${srcSvgFile} OUTPUT_VARIABLE svgContents) +macro( build_svg_exports SVG_FILE) + # generate an object list from the svg + execute_process( + COMMAND ${INKSCAPE_COMMAND} --query-all ${SVG_FILE} + OUTPUT_VARIABLE svgContents + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) STRING(REGEX REPLACE ";" "\\\\;" svgContents "${svgContents}") STRING(REGEX REPLACE "\n" ";" svgContents "${svgContents}") @@ -273,7 +302,7 @@ foreach(srcSvgFile ${GAFFER_SVG_FILES}) foreach(svg ${svgContents}) string(FIND ${svg} "forExport:" a) if("${a}" STREQUAL "0") - list(APPEND svgExport ${svg}) + list(APPEND svgExport ${svg}) endif() endforeach() @@ -285,16 +314,24 @@ foreach(srcSvgFile ${GAFFER_SVG_FILES}) list(GET svg 4 height) list(APPEND outputPNGs ${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png) + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/graphics/ - COMMAND inkscape --export-png=${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png --export-id=forExport:${name} --export-width=${width} --export-height=${height} --export-background-opacity=0 ${srcSvgFile} - DEPENDS ${srcSvgFile} + COMMAND ${INKSCAPE_COMMAND} --export-png=${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png --export-id=forExport:${name} --export-width=${width} --export-height=${height} --export-background-opacity=0 ${SVG_FILE} + DEPENDS ${SVG_FILE} WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} ) endforeach() -endforeach() +endmacro() +execute_process( + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/graphics/ +) + +set(outputPNGs "") +build_svg_exports( ${CMAKE_CURRENT_BINARY_DIR}/resources/graphics.svg ) +build_svg_exports( ${CMAKE_CURRENT_BINARY_DIR}/resources/GafferLogo.svg ) +build_svg_exports( ${CMAKE_CURRENT_BINARY_DIR}/resources/GafferLogoMini.svg ) add_custom_target(Graphics ALL DEPENDS ${outputPNGs}) @@ -328,13 +365,13 @@ add_library( _GafferUI MODULE ${GAFFERUI_CXX_MODULE_FILES} ${GAFFERUI_H_MODULE_F target_link_libraries( _GafferUI GafferUI GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} Qt5::Core Qt5::Gui Qt5::OpenGL ) target_compile_definitions( _GafferUI PRIVATE -DQT_NO_KEYWORDS -DQ_COMPILER_CONSTEXPR ) -# GafferDisptach +# GafferDispatch add_library( GafferDispatch SHARED ${GAFFERDISPATCH_CXX_FILES} ${GAFFERDISPATCH_H_FILES} ) target_link_libraries( GafferDispatch ${BASE_LIBS} Gaffer ) # GafferDispatch Python Module add_library( _GafferDispatch MODULE ${GAFFERDISPATCH_CXX_MODULE_FILES} ) -target_link_libraries( _GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferBindings ) +target_link_libraries( _GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferBindings ) # GafferImage add_library( GafferImage SHARED ${GAFFERIMAGE_CXX_FILES} ${GAFFERIMAGE_H_FILES} ) @@ -361,7 +398,7 @@ target_link_libraries( GafferScene ${BASE_LIBS} Gaffer ${ILMBASE_IEX_LIBRARY} ${ # GafferScene Python Module add_library( _GafferScene MODULE ${GAFFERSCENE_CXX_MODULE_FILES} ${GAFFERSCENE_H_MODULE_FILES} ) -target_link_libraries( _GafferScene GafferScene GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) +target_link_libraries( _GafferScene GafferScene GafferBindings GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) # GafferScene Test add_library( GafferSceneTest SHARED ${GAFFERSCENETEST_CXX_FILES} ${GAFFERIMAGETEST_H_FILES} ) @@ -397,11 +434,12 @@ target_link_libraries( _GafferOSL ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBinding # GafferVDB add_library( GafferVDB SHARED ${GAFFERVDB_CXX_FILES} ${GAFFERVDB_H_FILES} ) -target_link_libraries( GafferVDB ${BASE_LIBS} Gaffer GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ) +target_link_libraries( GafferVDB ${BASE_LIBS} Gaffer GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ${Cortex_IECOREVDB_LIBRARY} ) +target_compile_options( GafferVDB PRIVATE ) # GafferVDB Python Module add_library( _GafferVDB MODULE ${GAFFERVDB_CXX_MODULE_FILES} ) -target_link_libraries( _GafferVDB GafferVDB ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBindings GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ) +target_link_libraries( _GafferVDB GafferVDB ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBindings GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ${Cortex_IECOREVDB_LIBRARY} ) # GafferVDBUI add_library( GafferVDBUI SHARED ${GAFFERVDBUI_CXX_FILES} ${GAFFERVDBUI_H_FILES} ) @@ -423,22 +461,27 @@ add_library( _GafferAppleseed MODULE ${GAFFERAPPLESEED_CXX_MODULE_FILES} ) target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferScene GafferBindings GafferAppleseed ) target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) -# GafferArnold -file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) -add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) -target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) -# GafferArnold Python Module -add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) -target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) +if (Arnold_FOUND) + # GafferArnold + file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${CMAKE_SOURCE_DIR} src/GafferArnold/IECoreArnoldPreview/*.cpp ) + add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) + target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) + target_compile_options( GafferArnold PRIVATE ) -# GafferArnoldUI -add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) -target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) -# GafferArnoldUI Python Module -add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) -target_link_libraries( _GafferArnoldUI GafferArnoldUI ) + # GafferArnold Python Module + add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) + target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) + + # GafferArnoldUI + add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) + target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) + + # GafferArnoldUI Python Module + add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) + target_link_libraries( _GafferArnoldUI GafferArnoldUI ) +endif() # GafferDelight add_library( GafferDelight SHARED ${GAFFERDELIGHT_CXX_FILES} ${GAFFERDELIGHT_H_FILES} ) @@ -472,14 +515,14 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) if( DARWIN ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".so" ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) - elif( WINDOWS ) + elif( WINDOWS ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) endif() endforeach() - # Gaffer OSL Shaders file( GLOB_RECURSE OSL_HEADER_FILES ${GAFFER_SOURCE_DIR}/shaders/*.h) file( GLOB_RECURSE OSL_SOURCE_FILES ${GAFFER_SOURCE_DIR}/shaders/*.osl) @@ -501,9 +544,16 @@ foreach(shaderFileName ${OSL_SOURCE_FILES}) get_filename_component(SHADER_OUTPUT_DIR ${SHADER_OUTPUT} "DIRECTORY") list(APPEND COMPILED_OSL_SHADERS ${SHADER_OUTPUT} ) + # Windows needs to have libraries in PATH, Linux in LD_LIBRARY_PATH + if( WINDOWS ) + set( PATH_COMMAND "PATH=${OSL_LIBRARY_PATH};$ENV{PATH}" ) + else() + set (PATH_COMMAND "LD_LIBRARY_PATH=${OSL_LIBRARY_PATH}:$ENV{LD_LIBRARY_PATH}") + endif() + add_custom_command(OUTPUT "${SHADER_OUTPUT}" COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADER_OUTPUT_DIR} - COMMAND ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${OSL_LIBRARY_PATH}:$ENV{LD_LIBRARY_PATH}" ${OSL_COMPILER} -I./shaders -o ${SHADER_OUTPUT} ${shaderFileName} + COMMAND ${CMAKE_COMMAND} -E env "${PATH_COMMAND}" ${OSL_COMPILER} -I./shaders -o ${SHADER_OUTPUT} ${shaderFileName} DEPENDS ${shaderFileName} WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} ) @@ -511,33 +561,12 @@ endforeach() add_custom_target(Shaders ALL DEPENDS ${COMPILED_OSL_SHADERS}) - -# Python modules need special naming -if( WIN32 ) - set_target_properties( _Gaffer PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferAppleseed PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferArnold PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferArnoldUI PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferCortex PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferDispatch PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferImage PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferImageUI PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferOSL PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferDelight PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferScene PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferSceneUI PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferUI PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferTest PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferSceneTest PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferImageTest PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferVDB PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _GafferVDBUI PROPERTIES SUFFIX ".pyd" ) -endif() - # Dependencies add_dependencies( GafferAppleseed Gaffer GafferDispatch GafferScene ) -add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) -add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) +if (Arnold_FOUND) + add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) + add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) +endif() add_dependencies( GafferCortex Gaffer GafferDispatch ) add_dependencies( GafferDispatch Gaffer ) add_dependencies( GafferImage Gaffer GafferDispatch ) @@ -549,7 +578,7 @@ add_dependencies( GafferSceneUI Gaffer GafferUI GafferImage GafferImageUI Gaffer add_dependencies( GafferUI Gaffer GafferScene ) # Binding Dependencies -add_dependencies( GafferBindings Gaffer Graphics) +add_dependencies( GafferBindings Gaffer Graphics ) # Test Dependencies add_dependencies( GafferTest Gaffer ) @@ -566,8 +595,10 @@ add_dependencies( _GafferSceneUI Gaffer GafferSceneUI GafferImageUI GafferBindin add_dependencies( _GafferUI Gaffer GafferUI GafferBindings ) add_dependencies( _GafferOSL GafferBindings GafferScene GafferImage GafferOSL ) add_dependencies( _GafferAppleseed GafferDispatch GafferScene GafferBindings GafferAppleseed ) -add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) -add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) +if (Arnold_FOUND) + add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) + add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) +endif() add_dependencies( _GafferDelight Gaffer GafferScene GafferBindings GafferDispatch GafferDelight ) add_dependencies( _GafferTest Gaffer GafferBindings GafferTest ) @@ -612,8 +643,10 @@ endforeach() # Install Gaffer Files install( DIRECTORY ${GAFFER_SOURCE_DIR}/apps DESTINATION . ) -install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold +if (Arnold_FOUND) + install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) +endif() install( DIRECTORY ${GAFFER_SOURCE_DIR}/bin DESTINATION . FILES_MATCHING PATTERN "*gaffer*" @@ -623,12 +656,14 @@ install( DIRECTORY ${GAFFER_SOURCE_DIR}/glsl DESTINATION . ) install( DIRECTORY ${GAFFER_SOURCE_DIR}/python DESTINATION . ) -install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold - DESTINATION . ) -install( DIRECTORY ${GAFFER_SOURCE_DIR}/shaders +if (Arnold_FOUND) + install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) +endif() + install( DIRECTORY ${GAFFER_SOURCE_DIR}/startup DESTINATION . ) + install( FILES ${GAFFER_SOURCE_DIR}/LICENSE DESTINATION .) @@ -636,4 +671,4 @@ install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/graphics DESTINATION . ) install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/shaders DESTINATION . ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/About.py DESTINATION python/Gaffer) -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Version.h DESTINATION include/Gaffer) \ No newline at end of file +install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Version.h DESTINATION include/Gaffer) diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildWindows.bat new file mode 100644 index 00000000000..e3b89acbed0 --- /dev/null +++ b/contrib/cmake/buildWindows.bat @@ -0,0 +1,13 @@ +rem We hide the CMakeLists.txt here and copy it to root so it works correctly +set ROOT_DIR=%~dp0%..\.. +cd %ROOT_DIR% +xcopy /s /y contrib\cmake\* . + +del /f CMakeCache.txt + +cmake -Wno-dev -G %CMAKE_GENERATOR% -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_INSTALL_PREFIX=%BUILD_DIR% -DCMAKE_PREFIX_PATH=%BUILD_DIR% -DPYTHON_LIBRARY=%BUILD_DIR%\lib -DPYTHON_INCLUDE_DIR=%BUILD_DIR%\include -DCORTEX_LOCATION=%BUILD_DIR% -DBOOST_ROOT=%BUILD_DIR% -DILMBASE_LOCATION=%BUILD_DIR% -DOPENEXR_LOCATION=%BUILD_DIR% -DOSL_INCLUDE_DIR=%BUILD_DIR%\include -DOSL_EXEC_LIBRARY=%BUILD_DIR%\lib\oslexec.lib -DOSL_COMP_LIBRARY=%BUILD_DIR%\lib\oslcomp.lib -DOSL_QUERY_LIBRARY=%BUILD_DIR%\lib\oslquery.lib -DAPPLESEED_INCLUDE_DIR=%BUILD_DIR%\appleseed\include -DAPPLESEED_LIBRARY=%BUILD_DIR%\appleseed\lib\appleseed.lib -DOPENVDB_LOCATION=%BUILD_DIR% -DARNOLD_ROOT=%ARNOLD_ROOT% . +if %ERRORLEVEL% NEQ 0 (exit /b %ERRORLEVEL%) +cmake --build . --config %BUILD_TYPE% --target install +if %ERRORLEVEL% NEQ 0 (exit /b %ERRORLEVEL%) + +REM cd .. diff --git a/contrib/cmake/cmake/FindCortex.cmake b/contrib/cmake/cmake/FindCortex.cmake index 0926b5c3fe2..62877ce2f23 100644 --- a/contrib/cmake/cmake/FindCortex.cmake +++ b/contrib/cmake/cmake/FindCortex.cmake @@ -13,6 +13,7 @@ # Cortex_IECOREALEMBIC_LIBRARY # Cortex_IECOREAPPLESEED_LIBRARY # Cortex_IECOREARNOLD_LIBRARY +# Cortex_IECOREVDB_LIBRARY FIND_PACKAGE ( PackageHandleStandardArgs ) @@ -37,6 +38,7 @@ IF ( CORTEX_FOUND ) SET ( IECOREALEMBIC_LIBRARY_NAME IECoreAlembic ) SET ( IECOREAPPLESEED_LIBRARY_NAME IECoreAppleseed ) SET ( IECOREARNOLD_LIBRARY_NAME IECoreArnold ) + SET ( IECOREVDB_LIBRARY_NAME IECoreVDB ) SET ( Cortex_INCLUDE_DIRS ${CORTEX_LOCATION}/include @@ -56,6 +58,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ELSEIF (WIN32) # Link library SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") @@ -67,6 +70,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ELSE () # MESSAGE ( "CMAKE_FIND_LIBRARY_SUFFIXES = " ${CMAKE_FIND_LIBRARY_SUFFIXES}) SET ( ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) @@ -79,6 +83,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) SET ( CMAKE_FIND_LIBRARY_SUFFIXES ${ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES}) ENDIF () ELSE () @@ -92,6 +97,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ELSEIF (WIN32) # Link library SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") @@ -103,6 +109,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) # Load library SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") FIND_LIBRARY ( Cortex_IECORE_LIBRARY ${IECORE_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) @@ -113,6 +120,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) # MUST reset SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") ELSE () @@ -124,6 +132,7 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) + FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ENDIF () ENDIF () From d0f951aea8373c47718866a7785ff6e756ce19a4 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 20:59:00 -0800 Subject: [PATCH 027/243] Using std::numeric_limits instead of Imath::limits due to MSVC linkage problem Representative error from MSVC: error LNK2019: unresolved external symbol "public: static unsigned __int64 __cdecl Imath_2_2::limits::max(void)" (?m ax@?$limits@_K@Imath_2_2@@SA_KXZ) referenced in function "public: void __cdecl Gaffer::Switch::setup(class Gaffer::Plug co nst *)" --- include/GafferImage/ImageProcessor.h | 4 +++- include/GafferUI/GraphGadget.h | 12 ++++++------ src/Gaffer/Switch.cpp | 2 +- src/GafferImageModule/ImageProcessorBinding.cpp | 4 +++- src/GafferModule/ArrayPlugBinding.cpp | 4 ++-- src/GafferSceneModule/CoreBinding.cpp | 2 +- src/GafferUI/GraphGadget.cpp | 2 +- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/include/GafferImage/ImageProcessor.h b/include/GafferImage/ImageProcessor.h index bab80804f18..695f74f8f99 100644 --- a/include/GafferImage/ImageProcessor.h +++ b/include/GafferImage/ImageProcessor.h @@ -38,6 +38,8 @@ #ifndef GAFFERIMAGE_IMAGEPROCESSOR_H #define GAFFERIMAGE_IMAGEPROCESSOR_H +#include + #include "GafferImage/Export.h" #include "GafferImage/ImageNode.h" @@ -65,7 +67,7 @@ class GAFFERIMAGE_API ImageProcessor : public ImageNode /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - ImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); + ImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); ~ImageProcessor() override; GAFFER_NODE_DECLARE_TYPE( GafferImage::ImageProcessor, ImageProcessorTypeId, ImageNode ); diff --git a/include/GafferUI/GraphGadget.h b/include/GafferUI/GraphGadget.h index b13188d93ee..3c94909703d 100644 --- a/include/GafferUI/GraphGadget.h +++ b/include/GafferUI/GraphGadget.h @@ -131,24 +131,24 @@ class GAFFERUI_API GraphGadget : public ContainerGadget /// \note Here "upstream" nodes are defined as nodes at the end of input /// connections as shown in the graph - auxiliary connections and /// invisible nodes are not considered at all. - size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ); - size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ) const; + size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ); + size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ) const; /// Finds all the downstream NodeGadgets connected to the specified node /// and appends them to the specified vector. Returns the new size of the vector. /// \note Here "downstream" nodes are defined as nodes at the end of output /// connections as shown in the graph - auxiliary connections and /// invisible nodes are not considered at all. - size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ); - size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ) const; + size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ); + size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ) const; /// Finds all the NodeGadgets connected to the specified node /// and appends them to the specified vector. Returns the new size of the vector. /// \note Here "connected" nodes are defined as nodes at the end of /// connections as shown in the graph - auxiliary connections and /// invisible nodes are not considered at all. - size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = Imath::limits::max() ); - size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = Imath::limits::max() ) const; + size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = std::numeric_limits::max() ); + size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = std::numeric_limits::max() ) const; /// Finds all the NodeGadgets which haven't been given an explicit position /// using setNodePosition(). diff --git a/src/Gaffer/Switch.cpp b/src/Gaffer/Switch.cpp index a7044ddc78d..dd40dc556f4 100644 --- a/src/Gaffer/Switch.cpp +++ b/src/Gaffer/Switch.cpp @@ -89,7 +89,7 @@ void Switch::setup( const Plug *plug ) Plug::In, inElement, 0, - Imath::limits::max() + std::numeric_limits::max() ); addChild( in ); diff --git a/src/GafferImageModule/ImageProcessorBinding.cpp b/src/GafferImageModule/ImageProcessorBinding.cpp index a0531045151..391b34f807c 100644 --- a/src/GafferImageModule/ImageProcessorBinding.cpp +++ b/src/GafferImageModule/ImageProcessorBinding.cpp @@ -32,6 +32,8 @@ // ////////////////////////////////////////////////////////////////////////// +#include + #include "boost/python.hpp" #include "ImageProcessorBinding.h" @@ -64,7 +66,7 @@ void GafferImageModule::bindImageProcessor() ( arg( "name" ) = GraphComponent::defaultName(), arg( "minInputs" ), - arg( "maxInputs" ) = Imath::limits::max() + arg( "maxInputs" ) = std::numeric_limits::max() ) ) ) diff --git a/src/GafferModule/ArrayPlugBinding.cpp b/src/GafferModule/ArrayPlugBinding.cpp index f6b4e215dc5..ca7aedc0546 100644 --- a/src/GafferModule/ArrayPlugBinding.cpp +++ b/src/GafferModule/ArrayPlugBinding.cpp @@ -68,7 +68,7 @@ std::string repr( const ArrayPlug *plug ) result += boost::str( boost::format( "minSize = %d, " ) % plug->minSize() ); } - if( plug->maxSize() != Imath::limits::max() ) + if( plug->maxSize() != std::numeric_limits::max() ) { result += boost::str( boost::format( "maxSize = %d, " ) % plug->maxSize() ); } @@ -144,7 +144,7 @@ void GafferModule::bindArrayPlug() arg( "direction" ) = Plug::In, arg( "element" ) = PlugPtr(), arg( "minSize" ) = 1, - arg( "maxSize" ) = Imath::limits::max(), + arg( "maxSize" ) = std::numeric_limits::max(), arg( "flags" ) = Plug::Default, arg( "resizeWhenInputsChange" ) = true ) diff --git a/src/GafferSceneModule/CoreBinding.cpp b/src/GafferSceneModule/CoreBinding.cpp index 010c999fd29..bc45e3b37d9 100644 --- a/src/GafferSceneModule/CoreBinding.cpp +++ b/src/GafferSceneModule/CoreBinding.cpp @@ -399,7 +399,7 @@ void GafferSceneModule::bindCore() ( arg( "name" ) = GraphComponent::defaultName(), arg( "minInputs" ), - arg( "maxInputs" ) = Imath::limits::max() + arg( "maxInputs" ) = std::numeric_limits::max() ) ) ) diff --git a/src/GafferUI/GraphGadget.cpp b/src/GafferUI/GraphGadget.cpp index 1b7f0ec83b4..0729667477d 100644 --- a/src/GafferUI/GraphGadget.cpp +++ b/src/GafferUI/GraphGadget.cpp @@ -1212,7 +1212,7 @@ bool GraphGadget::dragMove( GadgetPtr gadget, const DragDropEvent &event ) const std::vector &snapOffsets = m_dragSnapOffsets[axis]; float offset = pos[axis] - m_dragStartPosition[axis]; - float snappedDist = Imath::limits::max(); + float snappedDist = std::numeric_limits::max(); float snappedOffset = offset; vector::const_iterator it = lower_bound( snapOffsets.begin(), snapOffsets.end(), offset ); if( it != snapOffsets.end() ) From 2189f2460379e18a81e72cb713c4f037ce781637 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 20:59:40 -0800 Subject: [PATCH 028/243] 'and' to '&&' --- src/GafferUI/StandardGraphLayout.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferUI/StandardGraphLayout.cpp b/src/GafferUI/StandardGraphLayout.cpp index c589df947f8..175d6afa970 100644 --- a/src/GafferUI/StandardGraphLayout.cpp +++ b/src/GafferUI/StandardGraphLayout.cpp @@ -1473,7 +1473,7 @@ size_t StandardGraphLayout::unconnectedInputPlugs( NodeGadget *nodeGadget, std:: plugs.clear(); for( RecursiveInputPlugIterator it( nodeGadget->node() ); !it.done(); it++ ) { - if( (*it)->getInput() == nullptr and nodeGadget->nodule( it->get() ) ) + if( (*it)->getInput() == nullptr && nodeGadget->nodule( it->get() ) ) { plugs.push_back( it->get() ); } From 0dfe5e264d30e85b83a9954c1a25cfa9f859dd02 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 21:00:01 -0800 Subject: [PATCH 029/243] Various MSVC fixes --- src/Gaffer/Context.cpp | 1 + src/GafferSceneUI/CameraVisualiser.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/Gaffer/Context.cpp b/src/Gaffer/Context.cpp index c0201005959..a16e52167a7 100644 --- a/src/Gaffer/Context.cpp +++ b/src/Gaffer/Context.cpp @@ -47,6 +47,7 @@ #ifdef __APPLE__ #include static char **environ = *_NSGetEnviron(); +#elif _MSC_VER #else #include #endif diff --git a/src/GafferSceneUI/CameraVisualiser.cpp b/src/GafferSceneUI/CameraVisualiser.cpp index 9e0d6e75f6c..f86c9402304 100644 --- a/src/GafferSceneUI/CameraVisualiser.cpp +++ b/src/GafferSceneUI/CameraVisualiser.cpp @@ -44,6 +44,15 @@ #include "IECore/AngleConversion.h" #include "IECore/SimpleTypedData.h" +#ifdef _MSC_VER +#ifdef near +#undef near +#endif +#ifdef far +#undef far +#endif +#endif + using namespace std; using namespace Imath; using namespace IECoreGLPreview; From 9d669e87f173ac6239d44237964b8527e9b2a23e Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 21:00:19 -0800 Subject: [PATCH 030/243] Public/private workaround for MSVC error C2248: 'GafferImageUI::ImageGadget::TileIndex': cannot access private struct declared in class 'GafferImageUI::ImageGadget' --- include/GafferImageUI/ImageGadget.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/GafferImageUI/ImageGadget.h b/include/GafferImageUI/ImageGadget.h index 96e7d784712..7162da1eaf5 100644 --- a/include/GafferImageUI/ImageGadget.h +++ b/include/GafferImageUI/ImageGadget.h @@ -240,6 +240,7 @@ class GAFFERIMAGEUI_API ImageGadget : public GafferUI::Gadget // be inserted/updated in parallel in a multithreaded // update step. + public: struct TileIndex { TileIndex( const Imath::V2i &tileOrigin, IECore::InternedString channelName ) @@ -256,6 +257,7 @@ class GAFFERIMAGEUI_API ImageGadget : public GafferUI::Gadget IECore::InternedString channelName; }; + private: struct Tile { From 7df2c13f037057cf658a7d7e41cb9408a0a85ab4 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 12 Apr 2018 22:35:20 -0400 Subject: [PATCH 031/243] add cross-platform path separators --- python/GafferArnoldTest/ArnoldShaderTest.py | 6 +++--- python/GafferOSLTest/OSLTestCase.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/GafferArnoldTest/ArnoldShaderTest.py b/python/GafferArnoldTest/ArnoldShaderTest.py index 5e2905ea2de..e02eb19430f 100644 --- a/python/GafferArnoldTest/ArnoldShaderTest.py +++ b/python/GafferArnoldTest/ArnoldShaderTest.py @@ -429,7 +429,7 @@ def testColorParameterMetadata( self ) : self.assertTrue( isinstance( p, Gaffer.Color4fPlug ) ) self.addCleanup( os.environ.__setitem__, "ARNOLD_PLUGIN_PATH", os.environ["ARNOLD_PLUGIN_PATH"] ) - os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + ":" + os.path.join( os.path.dirname( __file__ ), "metadata" ) + os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + os.pathsep + os.path.join( os.path.dirname( __file__ ), "metadata" ) self.__forceArnoldRestart() @@ -452,7 +452,7 @@ def testFloatParameterMetadata( self ) : self.assertTrue( isinstance( n["parameters"]["slidemap"], Gaffer.Color3fPlug ) ) self.addCleanup( os.environ.__setitem__, "ARNOLD_PLUGIN_PATH", os.environ["ARNOLD_PLUGIN_PATH"] ) - os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + ":" + os.path.join( os.path.dirname( __file__ ), "metadata" ) + os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + os.pathsep + os.path.join( os.path.dirname( __file__ ), "metadata" ) self.__forceArnoldRestart() @@ -470,7 +470,7 @@ def testEmptyPlugTypeMetadata( self ) : self.assertTrue( "diffuse_roughness" in n["parameters"] ) self.addCleanup( os.environ.__setitem__, "ARNOLD_PLUGIN_PATH", os.environ["ARNOLD_PLUGIN_PATH"] ) - os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + ":" + os.path.join( os.path.dirname( __file__ ), "metadata" ) + os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + os.pathsep + os.path.join( os.path.dirname( __file__ ), "metadata" ) self.__forceArnoldRestart() diff --git a/python/GafferOSLTest/OSLTestCase.py b/python/GafferOSLTest/OSLTestCase.py index 93beb96495a..59b3214947e 100644 --- a/python/GafferOSLTest/OSLTestCase.py +++ b/python/GafferOSLTest/OSLTestCase.py @@ -47,7 +47,7 @@ def compileShader( self, sourceFileName ) : subprocess.check_call( [ "oslc", "-q" ] + - [ "-I" + p for p in os.environ.get( "OSL_SHADER_PATHS", "" ).split( ":" ) ] + + [ "-I" + p for p in os.environ.get( "OSL_SHADER_PATHS", "" ).split( os.pathsep ) ] + [ "-o", outputFileName, sourceFileName ] ) From 033b08abaf9db705581e161fdeaafdd307fb4bc0 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Thu, 28 Dec 2017 16:57:17 -0800 Subject: [PATCH 032/243] Startup fixes for windows, added batch launcher and env setup --- bin/gaffer.bat | 1 + bin/gaffer_env.bat | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 bin/gaffer.bat create mode 100644 bin/gaffer_env.bat diff --git a/bin/gaffer.bat b/bin/gaffer.bat new file mode 100644 index 00000000000..c9b96294619 --- /dev/null +++ b/bin/gaffer.bat @@ -0,0 +1 @@ +python %GAFFER_ROOT%/bin/gaffer.py %1 %2 %3 %4 %5 %6 %7 %8 \ No newline at end of file diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat new file mode 100644 index 00000000000..bfe40576d8d --- /dev/null +++ b/bin/gaffer_env.bat @@ -0,0 +1,56 @@ +set GAFFER_ROOT=%~dp0%.. + +set HOME=%USERPROFILE% + +set IECOREGL_SHADER_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_PATHS% +set IECOREGL_SHADER_INCLUDE_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_INCLUDE_PATHS% + +set IECORE_FONT_PATHS=%GAFFER_ROOT%\fonts;%IECORE_FONT_PATHS% +set IECORE_OP_PATHS=%GAFFER_ROOT%\ops;%IECORE_OP_PATHS% + +set IECORE_OP_PRESET_PATHS=%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets;%IECORE_OP_PRESET_PATHS% +set IECORE_PROCEDURAL_PATHS=%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals;%IECORE_PROCEDURAL_PATHS% +set IECORE_PROCEDURAL_PRESET_PATHS=%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets;%IECORE_PROCEDURAL_PRESET_PATHS% + +set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat + +set GAFFER_APP_PATHS=%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps;%GAFFER_APP_PATHS% + +set GAFFER_STARTUP_PATHS=%USERPROFILE%\gaffer\startup;%GAFFER_STARTUP_PATHS%;%GAFFER_ROOT%\startup + +set GAFFERUI_IMAGE_PATHS=%GAFFER_ROOT%\graphics;%GAFFERUI_IMAGE_PATHS% + +set OSLHOME=%GAFFER_ROOT% + +set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% + +set GAFFEROSL_CODE_DIRECTORY=%OSL_SHADER_PATHS%;%USERPROFILE%\gaffer\oslCode + +set PYTHONHOME=%GAFFER_ROOT% + +set PYTHONPATH=%GAFFER_ROOT%\python;%PYTHONPATH% + +set PATH=%GAFFER_ROOT%\lib;%PATH% + +set QT_OPENGL=desktop +set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins + +set PATH=%GAFFER_ROOT%\bin;%PATH% + +rem Appleseed +set APPLESEED=%GAFFER_ROOT%\appleseed +set PATH=%APPLESEED%\lib;%PATH% +set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% +set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% +set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% +set PATH=%APPLESEED%\bin;%PATH% + + +rem Arnold +set ARNOLD_PLUGIN_PATH=%GAFFER_ROOT%\arnold\plugins;%ARNOLD_PLUGIN_PATH% +set PATH=%PATH%;%ARNOLD_ROOT%\bin +set PYTHONPATH=%PYTHONPATH%;%ARNOLD_ROOT%\python + + +rem Run Gaffer +rem python %GAFFER_ROOT%/bin/gaffer.py %1 %2 From 36bba3884cbd9e62d67ba664ec5b91e520aac649 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Thu, 28 Dec 2017 16:58:41 -0800 Subject: [PATCH 033/243] Python fixes/workarounds for windows --- python/GafferUI/GLWidget.py | 6 ++++-- python/GafferUI/_StyleSheet.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/python/GafferUI/GLWidget.py b/python/GafferUI/GLWidget.py index 9ece1f99357..806af0049fb 100644 --- a/python/GafferUI/GLWidget.py +++ b/python/GafferUI/GLWidget.py @@ -35,6 +35,7 @@ # ########################################################################## +import os import sys import logging import collections @@ -255,8 +256,9 @@ def resizeEvent( self, event ) : # clear any existing errors that may trigger # error checking code in _resize implementations. - while GL.glGetError() : - pass + if os.name == 'posix': + while GL.glGetError() : + pass owner._makeCurrent() diff --git a/python/GafferUI/_StyleSheet.py b/python/GafferUI/_StyleSheet.py index 6895f2f96a4..f6f3deae5ca 100644 --- a/python/GafferUI/_StyleSheet.py +++ b/python/GafferUI/_StyleSheet.py @@ -138,7 +138,7 @@ } substitutions = { - "GAFFER_ROOT" : os.environ["GAFFER_ROOT"] + "GAFFER_ROOT" : os.environ["GAFFER_ROOT"] if os.name == 'posix' else os.environ["GAFFER_ROOT"].replace("\\", "/"), } for k, v in _styleColors.items() : From 4c9aed9b77183c11a86d04398bf7e4e9ab2446f8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 18 May 2018 13:02:48 -0400 Subject: [PATCH 034/243] msvc can't compile with IMath ArrayPlug.obj : error LNK2019: unresolved external symbol "public: static unsigned __int64 __cdecl Imath_2_2::limits::max(void)" (?max@?$limits@_K@Imath_2_2@@SA_KXZ) referenced in function "public: void __cdecl Gaffer::ArrayPlug::`default constructor closure'(void)" --- include/Gaffer/ArrayPlug.h | 2 +- src/GafferUIModule/GraphGadgetBinding.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/Gaffer/ArrayPlug.h b/include/Gaffer/ArrayPlug.h index ddf0063c632..37fd3707cb4 100644 --- a/include/Gaffer/ArrayPlug.h +++ b/include/Gaffer/ArrayPlug.h @@ -64,7 +64,7 @@ class GAFFER_API ArrayPlug : public Plug Direction direction = In, PlugPtr element = nullptr, size_t minSize = 1, - size_t maxSize = Imath::limits::max(), + size_t maxSize = std::numeric_limits::max(), unsigned flags = Default, bool resizeWhenInputsChange = true ); diff --git a/src/GafferUIModule/GraphGadgetBinding.cpp b/src/GafferUIModule/GraphGadgetBinding.cpp index a21c305f794..bd0cc07dd42 100644 --- a/src/GafferUIModule/GraphGadgetBinding.cpp +++ b/src/GafferUIModule/GraphGadgetBinding.cpp @@ -232,9 +232,9 @@ void GafferUIModule::bindGraphGadget() .def( "connectionGadgets", &connectionGadgets1, ( arg_( "plug" ), arg_( "excludedNodes" ) = object() ) ) .def( "connectionGadgets", &connectionGadgets2, ( arg_( "node" ), arg_( "excludedNodes" ) = object() ) ) .def( "auxiliaryConnectionsGadget", (AuxiliaryConnectionsGadget *(GraphGadget::*)())&GraphGadget::auxiliaryConnectionsGadget, return_value_policy() ) - .def( "upstreamNodeGadgets", &upstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = Imath::limits::max() ) ) - .def( "downstreamNodeGadgets", &downstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = Imath::limits::max() ) ) - .def( "connectedNodeGadgets", &connectedNodeGadgets, ( arg( "node" ), arg( "direction" ) = Gaffer::Plug::Invalid, arg( "degreesOfSeparation" ) = Imath::limits::max() ) ) + .def( "upstreamNodeGadgets", &upstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = std::numeric_limits::max() ) ) + .def( "downstreamNodeGadgets", &downstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = std::numeric_limits::max() ) ) + .def( "connectedNodeGadgets", &connectedNodeGadgets, ( arg( "node" ), arg( "direction" ) = Gaffer::Plug::Invalid, arg( "degreesOfSeparation" ) = std::numeric_limits::max() ) ) .def( "unpositionedNodeGadgets", &unpositionedNodeGadgets ) .def( "setNodePosition", &setNodePosition ) .def( "getNodePosition", &GraphGadget::getNodePosition ) From 89f9063e7eaac399952852d960d41ba288af9b76 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 18 May 2018 13:06:06 -0400 Subject: [PATCH 035/243] Windows doesn't support getpwuid and getgrgid --- src/Gaffer/FileSystemPath.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index faf918becef..b6f2ad30e93 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -51,8 +51,11 @@ #include "boost/filesystem.hpp" #include "boost/filesystem/operations.hpp" -#include -#include +#ifndef _MSC_VER + #include + #include +#endif + #include using namespace std; @@ -184,8 +187,12 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr { struct stat s; stat( it->c_str(), &s ); + #ifndef _MSC_VER struct passwd *pw = getpwuid( s.st_uid ); std::string value = pw ? pw->pw_name : ""; + #else + std::string value = ""; + #endif std::pair::iterator,bool> oIt = ownerCounter.insert( std::pair( value, 0 ) ); oIt.first->second++; if( oIt.first->second > maxCount ) @@ -201,8 +208,12 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr std::string n = this->string(); struct stat s; stat( n.c_str(), &s ); + #ifndef _MSC_VER struct passwd *pw = getpwuid( s.st_uid ); return new StringData( pw ? pw->pw_name : "" ); + #else + return new StringData( "" ); + #endif } else if( name == g_groupPropertyName ) { @@ -221,8 +232,12 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr { struct stat s; stat( it->c_str(), &s ); + #ifndef _MSC_VER struct group *gr = getgrgid( s.st_gid ); std::string value = gr ? gr->gr_name : ""; + #else + std::string value = ""; + #endif std::pair::iterator,bool> oIt = ownerCounter.insert( std::pair( value, 0 ) ); oIt.first->second++; if( oIt.first->second > maxCount ) @@ -238,8 +253,12 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr std::string n = this->string(); struct stat s; stat( n.c_str(), &s ); + #ifndef _MSC_VER struct group *gr = getgrgid( s.st_gid ); return new StringData( gr ? gr->gr_name : "" ); + #else + return new StringData( "" ); + #endif } else if( name == g_modificationTimePropertyName ) { From 7807a26dee34e68e581aba892ee2b3d69aa4b487 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 25 Mar 2018 11:34:27 -0400 Subject: [PATCH 036/243] change readonly testing to be cross-platform --- src/Gaffer/ScriptNode.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index 085a16a0de3..882a177f11d 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -59,8 +59,6 @@ #include -#include - using namespace Gaffer; ////////////////////////////////////////////////////////////////////////// @@ -830,9 +828,18 @@ void ScriptNode::plugSet( Plug *plug ) { const boost::filesystem::path fileName( fileNamePlug()->getValue() ); context()->set( g_scriptName, fileName.stem().string() ); + + bool isReadOnly = false; + if( boost::filesystem::exists( fileName ) ) + { + std::ofstream testOpen( fileName.c_str() ); + isReadOnly = !testOpen.is_open(); + testOpen.close(); + } + MetadataAlgo::setReadOnly( this, - boost::filesystem::exists( fileName ) && 0 != access( fileName.c_str(), W_OK ), + isReadOnly, /* persistent = */ false ); } From e8f4d6ab4b72f2a57d21e08675375998b7a3ccb6 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 10 Apr 2018 20:44:24 -0400 Subject: [PATCH 037/243] make path separators cross platform --- include/GafferImage/Text.h | 6 ++++++ include/GafferScene/Text.h | 6 ++++++ src/GafferImage/Text.cpp | 4 ++++ src/GafferScene/Text.cpp | 4 ++++ 4 files changed, 20 insertions(+) diff --git a/include/GafferImage/Text.h b/include/GafferImage/Text.h index c0d6e63eaeb..da3419bc5be 100644 --- a/include/GafferImage/Text.h +++ b/include/GafferImage/Text.h @@ -52,6 +52,12 @@ IE_CORE_FORWARDDECLARE( Transform2DPlug ) namespace GafferImage { +#ifdef _WIN32 + #define ENVSEP ";" +#else + #define ENVSEP ":" +#endif + class GAFFERIMAGE_API Text : public Shape { diff --git a/include/GafferScene/Text.h b/include/GafferScene/Text.h index 80018c08afa..a559327602f 100644 --- a/include/GafferScene/Text.h +++ b/include/GafferScene/Text.h @@ -43,6 +43,12 @@ namespace GafferScene { +#ifdef _WIN32 + #define ENVSEP ";" +#else + #define ENVSEP ":" +#endif + class GAFFERSCENE_API Text : public ObjectSource { diff --git a/src/GafferImage/Text.cpp b/src/GafferImage/Text.cpp index 5d8695b46c5..b4f8a50bae4 100644 --- a/src/GafferImage/Text.cpp +++ b/src/GafferImage/Text.cpp @@ -94,7 +94,11 @@ typedef std::shared_ptr FacePtr; FacePtr faceLoader( const std::string &font, size_t &cost ) { const char *e = getenv( "IECORE_FONT_PATHS" ); +<<<<<<< HEAD IECore::SearchPath sp( e ? e : "" ); +======= + IECore::SearchPath sp( e ? e : "", ENVSEP ); +>>>>>>> make path separators cross platform std::string file = sp.find( font ).string(); if( !file.size() ) diff --git a/src/GafferScene/Text.cpp b/src/GafferScene/Text.cpp index 4d99b7c6048..0b92540ce3e 100644 --- a/src/GafferScene/Text.cpp +++ b/src/GafferScene/Text.cpp @@ -63,7 +63,11 @@ namespace Detail FontPtr fontGetter( const std::string &fileName, size_t &cost ) { const char *e = getenv( "IECORE_FONT_PATHS" ); +<<<<<<< HEAD IECore::SearchPath sp( e ? e : "" ); +======= + IECore::SearchPath sp( e ? e : "", ENVSEP ); +>>>>>>> make path separators cross platform std::string resolvedFileName = sp.find( fileName ).string(); if( !resolvedFileName.size() ) From 93ac4b2316fb7de93c3923c2530cb260da3bd8a2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 10 Apr 2018 20:44:41 -0400 Subject: [PATCH 038/243] make machine name cross platform --- src/GafferImage/ImageWriter.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/GafferImage/ImageWriter.cpp b/src/GafferImage/ImageWriter.cpp index ca4527f7fa6..8fa7f8c7dee 100644 --- a/src/GafferImage/ImageWriter.cpp +++ b/src/GafferImage/ImageWriter.cpp @@ -35,6 +35,8 @@ // ////////////////////////////////////////////////////////////////////////// +#include "boost/asio/ip/host_name.hpp" + #include "GafferImage/ImageWriter.h" #include "GafferImage/BufferAlgo.h" @@ -64,7 +66,6 @@ #include -#include #include OIIO_NAMESPACE_USING @@ -1224,11 +1225,9 @@ ImageSpec createImageSpec( const ImageWriter *node, const ImageOutput *out, cons // Add common attribs to the spec std::string software = ( boost::format( "Gaffer %d.%d.%d.%d" ) % GAFFER_MILESTONE_VERSION % GAFFER_MAJOR_VERSION % GAFFER_MINOR_VERSION % GAFFER_PATCH_VERSION ).str(); spec.attribute( "Software", software ); - struct utsname info; - if ( !uname( &info ) ) - { - spec.attribute( "HostComputer", info.nodename ); - } + + spec.attribute( "HostComputer", boost::asio::ip::host_name() ); + if ( const char *artist = getenv( "USER" ) ) { spec.attribute( "Artist", artist ); From 1b78236c5049920d8a2e9cd66dc20d9d28c6cde0 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 11 Apr 2018 14:32:39 -0400 Subject: [PATCH 039/243] add symbol exports and WIN32 specific includes --- include/GafferScene/Private/IECoreScenePreview/Renderer.h | 4 ++-- include/GafferScene/ScenePlug.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/GafferScene/Private/IECoreScenePreview/Renderer.h b/include/GafferScene/Private/IECoreScenePreview/Renderer.h index eaab58d1b9e..718a7795d34 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Renderer.h +++ b/include/GafferScene/Private/IECoreScenePreview/Renderer.h @@ -121,7 +121,7 @@ class GAFFERSCENE_API Renderer : public IECore::RefCounted /// A handle to a block of attributes. Currently all /// AttributesInterfaces _must_ be destroyed prior /// to destruction of the renderer itself. - class AttributesInterface : public IECore::RefCounted + class GAFFERSCENE_API AttributesInterface : public IECore::RefCounted { public : @@ -169,7 +169,7 @@ class GAFFERSCENE_API Renderer : public IECore::RefCounted /// /// Currently all ObjectInterfaces _must_ be destroyed prior to destruction /// of the renderer itself. - class ObjectInterface : public IECore::RefCounted + class GAFFERSCENE_API ObjectInterface : public IECore::RefCounted { public : diff --git a/include/GafferScene/ScenePlug.h b/include/GafferScene/ScenePlug.h index 98c9e9e1484..c7a98e3f2c0 100644 --- a/include/GafferScene/ScenePlug.h +++ b/include/GafferScene/ScenePlug.h @@ -153,7 +153,7 @@ class GAFFERSCENE_API ScenePlug : public Gaffer::ValuePlug /// Utility class to scope a temporary copy of a context, /// specifying the scene path. - struct PathScope : public Gaffer::Context::EditableScope + struct GAFFERSCENE_API PathScope : public Gaffer::Context::EditableScope { /// Standard constructors, for modifying context on the current thread. PathScope( const Gaffer::Context *context ); @@ -169,7 +169,7 @@ class GAFFERSCENE_API ScenePlug : public Gaffer::ValuePlug /// Utility class to scope a temporary copy of a context, /// specifying the set name. - struct SetScope : public Gaffer::Context::EditableScope + struct GAFFERSCENE_API SetScope : public Gaffer::Context::EditableScope { /// Standard constructors, for modifying context on the current thread. SetScope( const Gaffer::Context *context ); @@ -188,7 +188,7 @@ class GAFFERSCENE_API ScenePlug : public Gaffer::ValuePlug /// when evaluating plugs which must not be sensitive /// to such variables, and can improve performance by /// reducing pressure on the hash cache. - struct GlobalScope : public Gaffer::Context::EditableScope + struct GAFFERSCENE_API GlobalScope : public Gaffer::Context::EditableScope { /// Standard constructor, for modifying context on the current thread. GlobalScope( const Gaffer::Context *context ); @@ -290,6 +290,6 @@ typedef Gaffer::FilteredRecursiveChildIterator Date: Thu, 12 Apr 2018 10:11:06 -0400 Subject: [PATCH 040/243] cross-platform environment path separators --- include/GafferUI/ImageGadget.h | 6 ++++++ src/GafferImage/Text.cpp | 4 ---- src/GafferScene/Text.cpp | 5 +---- src/GafferUI/ImageGadget.cpp | 4 ++-- src/GafferUIModule/PathListingWidgetBinding.cpp | 4 ++-- src/GafferUIModule/PathListingWidgetBinding.h | 6 ++++++ 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/include/GafferUI/ImageGadget.h b/include/GafferUI/ImageGadget.h index 0360207db0f..103f3a197bc 100644 --- a/include/GafferUI/ImageGadget.h +++ b/include/GafferUI/ImageGadget.h @@ -54,6 +54,12 @@ IE_CORE_FORWARDDECLARE( Texture ) namespace GafferUI { +#ifdef _WIN32 + #define ENVSEP ";" +#else + #define ENVSEP ":" +#endif + class GAFFERUI_API ImageGadget : public Gadget { diff --git a/src/GafferImage/Text.cpp b/src/GafferImage/Text.cpp index b4f8a50bae4..f8c852eb67f 100644 --- a/src/GafferImage/Text.cpp +++ b/src/GafferImage/Text.cpp @@ -94,11 +94,7 @@ typedef std::shared_ptr FacePtr; FacePtr faceLoader( const std::string &font, size_t &cost ) { const char *e = getenv( "IECORE_FONT_PATHS" ); -<<<<<<< HEAD - IECore::SearchPath sp( e ? e : "" ); -======= IECore::SearchPath sp( e ? e : "", ENVSEP ); ->>>>>>> make path separators cross platform std::string file = sp.find( font ).string(); if( !file.size() ) diff --git a/src/GafferScene/Text.cpp b/src/GafferScene/Text.cpp index 0b92540ce3e..b560f3330d8 100644 --- a/src/GafferScene/Text.cpp +++ b/src/GafferScene/Text.cpp @@ -63,11 +63,8 @@ namespace Detail FontPtr fontGetter( const std::string &fileName, size_t &cost ) { const char *e = getenv( "IECORE_FONT_PATHS" ); -<<<<<<< HEAD - IECore::SearchPath sp( e ? e : "" ); -======= + IECore::SearchPath sp( e ? e : "", ENVSEP ); ->>>>>>> make path separators cross platform std::string resolvedFileName = sp.find( fileName ).string(); if( !resolvedFileName.size() ) diff --git a/src/GafferUI/ImageGadget.cpp b/src/GafferUI/ImageGadget.cpp index 64f6c31d637..34e9845a254 100644 --- a/src/GafferUI/ImageGadget.cpp +++ b/src/GafferUI/ImageGadget.cpp @@ -64,7 +64,7 @@ namespace Box3f boundGetter( const std::string &fileName, size_t &cost ) { const char *s = getenv( "GAFFERUI_IMAGE_PATHS" ); - IECore::SearchPath sp( s ? s : "" ); + IECore::SearchPath sp( s ? s : "", ENVSEP ); boost::filesystem::path path = sp.find( fileName ); if( path.empty() ) @@ -170,7 +170,7 @@ IECoreGL::TextureLoader *ImageGadget::textureLoader() if( !loader ) { const char *s = getenv( "GAFFERUI_IMAGE_PATHS" ); - IECore::SearchPath sp( s ? s : "" ); + IECore::SearchPath sp( s ? s : "", ENVSEP ); loader = new TextureLoader( sp ); } return loader.get(); diff --git a/src/GafferUIModule/PathListingWidgetBinding.cpp b/src/GafferUIModule/PathListingWidgetBinding.cpp index d2f5984aa62..7fcb57b225f 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.cpp +++ b/src/GafferUIModule/PathListingWidgetBinding.cpp @@ -257,7 +257,7 @@ class IconColumn : public Column static QVariant iconGetter( const std::string &fileName, size_t &cost ) { const char *s = getenv( "GAFFERUI_IMAGE_PATHS" ); - IECore::SearchPath sp( s ? s : "" ); + IECore::SearchPath sp( s ? s : "", ENVSEP ); boost::filesystem::path path = sp.find( fileName ); if( path.empty() ) @@ -508,7 +508,7 @@ class PathModel : public QAbstractItemModel QModelIndex index( int row, int column, const QModelIndex &parentIndex = QModelIndex() ) const override { Item *item = parentIndex.isValid() ? static_cast( parentIndex.internalPointer() ) : m_rootItem; - if( row >=0 and row < (int)item->childItems( this ).size() and column >=0 and column < (int)m_columns.size() ) + if( row >=0 && row < (int)item->childItems( this ).size() && column >=0 && column < (int)m_columns.size() ) { return createIndex( row, column, item->childItems( this )[row] ); } diff --git a/src/GafferUIModule/PathListingWidgetBinding.h b/src/GafferUIModule/PathListingWidgetBinding.h index e7a6574487d..2f2d9d8a9fb 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.h +++ b/src/GafferUIModule/PathListingWidgetBinding.h @@ -37,6 +37,12 @@ #ifndef GAFFERUIMODULE_PATHLISTINGWIDGETBINDING_H #define GAFFERUIMODULE_PATHLISTINGWIDGETBINDING_H +#ifdef _WIN32 + #define ENVSEP ";" +#else + #define ENVSEP ":" +#endif + namespace GafferUIModule { From 87b508ecd47bee1cbf52c13bfa3f5c3d3b3a1bc5 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 12 Apr 2018 10:11:45 -0400 Subject: [PATCH 041/243] restrict process naming to Linux and Mac --- src/GafferModule/GafferModule.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/GafferModule/GafferModule.cpp b/src/GafferModule/GafferModule.cpp index 81e22df3800..69d1b03b559 100644 --- a/src/GafferModule/GafferModule.cpp +++ b/src/GafferModule/GafferModule.cpp @@ -107,6 +107,8 @@ bool isDebug() #endif } +#ifndef _WIN32 + int g_argc = 0; char **g_argv = nullptr; @@ -166,12 +168,15 @@ void clobberArgv() g_argv[g_argc-1] = c; memset( c, 0, end - c ); } +#endif void nameProcess() { // Some things (for instance, `ps` in default mode) look at `argv` to get // the name. +#ifndef _WIN32 clobberArgv(); +#endif // Others (for instance, `top` in default mode) use other methods. // Cater to everyone as best we can. #ifdef __linux__ From e9e2e3b89c15fb6fcc587f5bdbffee2e39dabc5e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 12 Apr 2018 20:18:35 -0400 Subject: [PATCH 042/243] MSVC needs boost namespace specified error C2872: 'list': ambiguous symbol 'std::list': class has no constructors 'boost::python::ssize_t boost::python::len(const boost::python::api::object &)': cannot convert argument 1 from 'std::list' to 'const boost::python::api::object &' binary '[': 'std::list' does not define this operator or a conversion to a type acceptable to the predefined operator 'arg': ambiguous symbol 'std::arg': no matching overloaded function found '_Promote_to_float<_Ty>::type std::arg(_Ty)': could not deduce template argument for '' '_Ty std::arg(const std::complex<_Other> &)': could not deduce template argument for 'const std::complex<_Other> &' from 'const char [5]' '_Ty std::arg(const std::complex<_Other> &)': could not deduce template argument for 'const std::complex<_Other> &' from 'const char [10]' '_Ty std::arg(const std::complex<_Other> &)': could not deduce template argument for 'const std::complex<_Other> &' from 'const char [6]' --- src/GafferImageModule/CatalogueBinding.cpp | 2 +- src/GafferImageModule/CoreBinding.cpp | 10 +++++----- src/GafferImageModule/FilterAlgoBinding.cpp | 4 ++-- src/GafferImageModule/ImageProcessorBinding.cpp | 6 +++--- src/GafferOSLModule/GafferOSLModule.cpp | 10 +++++----- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/GafferImageModule/CatalogueBinding.cpp b/src/GafferImageModule/CatalogueBinding.cpp index a172537b6fe..1c33c3ba10b 100644 --- a/src/GafferImageModule/CatalogueBinding.cpp +++ b/src/GafferImageModule/CatalogueBinding.cpp @@ -126,7 +126,7 @@ void GafferImageModule::bindCatalogue() { scope s = GafferBindings::DependencyNodeClass() - .def( "setDriver", &Display::setDriver, ( arg( "driver" ), arg( "copy" ) = false ) ) + .def( "setDriver", &Display::setDriver, ( boost::python::arg_( "driver" ), boost::python::arg_( "copy" ) = false ) ) .def( "getDriver", (IECoreImage::DisplayDriver *(Display::*)())&Display::getDriver, return_value_policy() ) .def( "driverCreatedSignal", &Display::driverCreatedSignal, return_value_policy() ).staticmethod( "driverCreatedSignal" ) .def( "imageReceivedSignal", &Display::imageReceivedSignal, return_value_policy() ).staticmethod( "imageReceivedSignal" ) diff --git a/src/GafferImageModule/CoreBinding.cpp b/src/GafferImageModule/CoreBinding.cpp index a1397229d06..799443c4dcc 100644 --- a/src/GafferImageModule/CoreBinding.cpp +++ b/src/GafferImageModule/CoreBinding.cpp @@ -275,13 +275,13 @@ void GafferImageModule::bindCore() init< const std::string &, Gaffer::Plug::Direction, unsigned > ( ( - arg( "name" ) = Gaffer::GraphComponent::defaultName(), - arg( "direction" ) = Gaffer::Plug::In, - arg( "flags" ) = Gaffer::Plug::Default + boost::python::arg_( "name" ) = Gaffer::GraphComponent::defaultName(), + boost::python::arg_( "direction" ) = Gaffer::Plug::In, + boost::python::arg_( "flags" ) = Gaffer::Plug::Default ) ) ) - .def( "channelData", &channelData, ( arg( "_copy" ) = true ) ) + .def( "channelData", &channelData, ( boost::python::arg_( "_copy" ) = true ) ) .def( "channelDataHash", &channelDataHash ) .def( "format", &format ) .def( "formatHash", &formatHash ) @@ -413,7 +413,7 @@ void GafferImageModule::bindCore() init ( ( - arg( "boundingMode" ) = Sampler::Black + boost::python::arg_( "boundingMode" ) = Sampler::Black ) ) ) diff --git a/src/GafferImageModule/FilterAlgoBinding.cpp b/src/GafferImageModule/FilterAlgoBinding.cpp index 4dd87d6062f..fa8f9e7c94f 100644 --- a/src/GafferImageModule/FilterAlgoBinding.cpp +++ b/src/GafferImageModule/FilterAlgoBinding.cpp @@ -55,9 +55,9 @@ namespace return GafferImage::FilterAlgo::sampleParallelogram( sampler, p, dpdx, dpdy, f ); } - list filterNamesWrapper() + boost::python::list filterNamesWrapper() { - list result; + boost::python::list result; const std::vector &filters = GafferImage::FilterAlgo::filterNames(); for ( unsigned i=0; i < filters.size(); i++ ) { diff --git a/src/GafferImageModule/ImageProcessorBinding.cpp b/src/GafferImageModule/ImageProcessorBinding.cpp index 391b34f807c..e9f18125fe6 100644 --- a/src/GafferImageModule/ImageProcessorBinding.cpp +++ b/src/GafferImageModule/ImageProcessorBinding.cpp @@ -64,9 +64,9 @@ void GafferImageModule::bindImageProcessor() GafferBindings::DependencyNodeClass() .def( init( ( - arg( "name" ) = GraphComponent::defaultName(), - arg( "minInputs" ), - arg( "maxInputs" ) = std::numeric_limits::max() + boost::python::arg_( "name" ) = GraphComponent::defaultName(), + boost::python::arg_( "minInputs" ), + boost::python::arg_( "maxInputs" ) = std::numeric_limits::max() ) ) ) diff --git a/src/GafferOSLModule/GafferOSLModule.cpp b/src/GafferOSLModule/GafferOSLModule.cpp index d2d52b8ceab..3bda0806620 100644 --- a/src/GafferOSLModule/GafferOSLModule.cpp +++ b/src/GafferOSLModule/GafferOSLModule.cpp @@ -113,8 +113,8 @@ IECore::CompoundDataPtr shadeWrapper( ShadingEngine &shadingEngine, const IECore { ShadingEngine::Transforms transforms; - list values = pythonTransforms.values(); - list keys = pythonTransforms.keys(); + boost::python::list values = pythonTransforms.values(); + boost::python::list keys = pythonTransforms.keys(); for (int i = 0; i < boost::python::len( keys ); i++) { @@ -169,9 +169,9 @@ BOOST_PYTHON_MODULE( _GafferOSL ) PlugClass() .def( init( ( - arg( "name" ) = Gaffer::GraphComponent::defaultName(), - arg( "direction" ) = Gaffer::Plug::In, - arg( "flags" ) = Gaffer::Plug::Default + boost::python::arg( "name" ) = Gaffer::GraphComponent::defaultName(), + boost::python::arg( "direction" ) = Gaffer::Plug::In, + boost::python::arg( "flags" ) = Gaffer::Plug::Default ) ) ) From 291d0e9ae7f8b36533fe0000a56f6d92262406bb Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 12 Apr 2018 20:19:04 -0400 Subject: [PATCH 043/243] remove export so msvc can find calls directly in the header --- include/GafferScene/Private/IECoreScenePreview/Renderer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/GafferScene/Private/IECoreScenePreview/Renderer.h b/include/GafferScene/Private/IECoreScenePreview/Renderer.h index 718a7795d34..3517985d094 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Renderer.h +++ b/include/GafferScene/Private/IECoreScenePreview/Renderer.h @@ -77,7 +77,7 @@ class GAFFERSCENE_API Renderer : public IECore::RefCounted public : - enum RenderType + enum GAFFERSCENE_API RenderType { /// Locations are emitted to the renderer immediately /// and not retained for later editing. From ffac534d655d17f4df3f19fe14d330414accfb7d Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 18 May 2018 15:16:56 -0400 Subject: [PATCH 044/243] On Windows filename().c_str() is a wchar_t so we need an extra conversion to solve the error: error C2664: 'long strtol(const char *,char **,int)': cannot convert argument 1 from 'const boost::filesystem::path::value_type *' to 'const char *' --- src/GafferDispatch/Dispatcher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferDispatch/Dispatcher.cpp b/src/GafferDispatch/Dispatcher.cpp index 5229ff4205d..2c087d7c843 100644 --- a/src/GafferDispatch/Dispatcher.cpp +++ b/src/GafferDispatch/Dispatcher.cpp @@ -227,7 +227,7 @@ void Dispatcher::createJobDirectory( const Gaffer::ScriptNode *script, Gaffer::C long i = -1; for( const auto &d : boost::filesystem::directory_iterator( jobDirectory ) ) { - i = std::max( i, strtol( d.path().filename().c_str(), nullptr, 10 ) ); + i = std::max( i, strtol( d.path().filename().string().c_str(), nullptr, 10 ) ); } // Now create the next directory. We do this in a loop until we From 5a674bf097c126727954b4dac1d428d02efc36c2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 22 May 2018 19:57:19 -0400 Subject: [PATCH 045/243] MSVC needs to find std::min and std::max --- include/GafferImage/BufferAlgo.inl | 1 + 1 file changed, 1 insertion(+) diff --git a/include/GafferImage/BufferAlgo.inl b/include/GafferImage/BufferAlgo.inl index 1a42407226e..b67be3c147d 100644 --- a/include/GafferImage/BufferAlgo.inl +++ b/include/GafferImage/BufferAlgo.inl @@ -38,6 +38,7 @@ #define GAFFERIMAGE_BUFFERALGO_INL #include +#include namespace GafferImage { From f6f968aa2a52db17f930f28bdf9c38021c562ded Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 23 May 2018 18:49:26 -0400 Subject: [PATCH 046/243] all code lives in the header so remove the export. With the GAFFER_EXPORT in MSVC gives errors like 'Gaffer::Container::typeId': definition of dllimport function not allowed (compili ng source file M:\gaffer\src\GafferModule\NodeBinding.cpp) --- include/Gaffer/Container.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Gaffer/Container.h b/include/Gaffer/Container.h index ec493bb9629..9f9ecff672a 100644 --- a/include/Gaffer/Container.h +++ b/include/Gaffer/Container.h @@ -43,7 +43,7 @@ namespace Gaffer { template -class GAFFER_API Container : public Base +class Container : public Base { public : From 7358104e7ab1022bd783603946aa0712a4af5201 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 8 Jul 2018 16:37:33 -0400 Subject: [PATCH 047/243] export missing symbols --- include/Gaffer/Animation.h | 4 ++-- include/Gaffer/Expression.h | 2 +- include/Gaffer/Monitor.h | 2 +- include/Gaffer/ThreadState.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/Gaffer/Animation.h b/include/Gaffer/Animation.h index e2184859765..7c1aac3dfa8 100644 --- a/include/Gaffer/Animation.h +++ b/include/Gaffer/Animation.h @@ -72,7 +72,7 @@ class GAFFER_API Animation : public ComputeNode class CurvePlug; /// Defines a single keyframe. - class Key : public IECore::RefCounted + class GAFFER_API Key : public IECore::RefCounted { public : @@ -121,7 +121,7 @@ class GAFFER_API Animation : public ComputeNode /// Defines a curve as a collection of keyframes and methods /// for editing them. Provides methods for evaluating the /// interpolated curve at arbitrary positions. - class CurvePlug : public ValuePlug + class GAFFER_API CurvePlug : public ValuePlug { public : diff --git a/include/Gaffer/Expression.h b/include/Gaffer/Expression.h index acdaccc1e89..4aa118357db 100644 --- a/include/Gaffer/Expression.h +++ b/include/Gaffer/Expression.h @@ -90,7 +90,7 @@ class GAFFER_API Expression : public ComputeNode /// for use in the Expression node. All methods /// are protected as Engines are for the internal /// use of the Expression node only. - class Engine : public IECore::RefCounted + class GAFFER_API Engine : public IECore::RefCounted { public : diff --git a/include/Gaffer/Monitor.h b/include/Gaffer/Monitor.h index 0e3c0b7566c..461a89f52a3 100644 --- a/include/Gaffer/Monitor.h +++ b/include/Gaffer/Monitor.h @@ -59,7 +59,7 @@ class GAFFER_API Monitor : public IECore::RefCounted using MonitorSet = boost::container::flat_set; - class Scope : private ThreadState::Scope + class GAFFER_API Scope : boost::noncopyable { public : diff --git a/include/Gaffer/ThreadState.h b/include/Gaffer/ThreadState.h index 9050a27bbc0..37edf862400 100644 --- a/include/Gaffer/ThreadState.h +++ b/include/Gaffer/ThreadState.h @@ -81,7 +81,7 @@ class GAFFER_API ThreadState /// no active monitors, and a default constructed Context. ThreadState(); - class Scope : public boost::noncopyable + class GAFFER_API Scope : public boost::noncopyable { public : From 68d0cee1f049ef24ef12e90886d37eec3e05e645 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 9 Jul 2018 13:58:12 -0400 Subject: [PATCH 048/243] build Windows cmake script directly from contrib instead of copying it to root --- contrib/cmake/buildWindows.bat | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildWindows.bat index e3b89acbed0..bc177443334 100644 --- a/contrib/cmake/buildWindows.bat +++ b/contrib/cmake/buildWindows.bat @@ -1,13 +1,28 @@ rem We hide the CMakeLists.txt here and copy it to root so it works correctly set ROOT_DIR=%~dp0%..\.. cd %ROOT_DIR% -xcopy /s /y contrib\cmake\* . del /f CMakeCache.txt -cmake -Wno-dev -G %CMAKE_GENERATOR% -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_INSTALL_PREFIX=%BUILD_DIR% -DCMAKE_PREFIX_PATH=%BUILD_DIR% -DPYTHON_LIBRARY=%BUILD_DIR%\lib -DPYTHON_INCLUDE_DIR=%BUILD_DIR%\include -DCORTEX_LOCATION=%BUILD_DIR% -DBOOST_ROOT=%BUILD_DIR% -DILMBASE_LOCATION=%BUILD_DIR% -DOPENEXR_LOCATION=%BUILD_DIR% -DOSL_INCLUDE_DIR=%BUILD_DIR%\include -DOSL_EXEC_LIBRARY=%BUILD_DIR%\lib\oslexec.lib -DOSL_COMP_LIBRARY=%BUILD_DIR%\lib\oslcomp.lib -DOSL_QUERY_LIBRARY=%BUILD_DIR%\lib\oslquery.lib -DAPPLESEED_INCLUDE_DIR=%BUILD_DIR%\appleseed\include -DAPPLESEED_LIBRARY=%BUILD_DIR%\appleseed\lib\appleseed.lib -DOPENVDB_LOCATION=%BUILD_DIR% -DARNOLD_ROOT=%ARNOLD_ROOT% . +cmake -Wno-dev -G %CMAKE_GENERATOR% ^ +-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^ +-DCMAKE_INSTALL_PREFIX=%BUILD_DIR% ^ +-DCMAKE_PREFIX_PATH=%BUILD_DIR% ^ +-DPYTHON_LIBRARY=%BUILD_DIR%\lib ^ +-DPYTHON_INCLUDE_DIR=%BUILD_DIR%\include ^ +-DCORTEX_LOCATION=%BUILD_DIR% ^ +-DBOOST_ROOT=%BUILD_DIR% ^ +-DILMBASE_LOCATION=%BUILD_DIR% ^ +-DOPENEXR_LOCATION=%BUILD_DIR% ^ +-DOSL_INCLUDE_DIR=%BUILD_DIR%\include ^ +-DOSL_EXEC_LIBRARY=%BUILD_DIR%\lib\oslexec.lib ^ +-DOSL_COMP_LIBRARY=%BUILD_DIR%\lib\oslcomp.lib ^ +-DOSL_QUERY_LIBRARY=%BUILD_DIR%\lib\oslquery.lib ^ +-DAPPLESEED_INCLUDE_DIR=%BUILD_DIR%\appleseed\include ^ +-DAPPLESEED_LIBRARY=%BUILD_DIR%\appleseed\lib\appleseed.lib ^ +-DOPENVDB_LOCATION=%BUILD_DIR% -DARNOLD_ROOT=%ARNOLD_ROOT% ^ +%ROOT_DIR%\contrib\cmake + if %ERRORLEVEL% NEQ 0 (exit /b %ERRORLEVEL%) cmake --build . --config %BUILD_TYPE% --target install if %ERRORLEVEL% NEQ 0 (exit /b %ERRORLEVEL%) - -REM cd .. From 7e7e21f1b3de17731c33d61a7433768ba2376429 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 18 Jul 2018 15:17:14 -0400 Subject: [PATCH 049/243] setdlopenflags is not available on windows --- python/GafferArnold/__init__.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/python/GafferArnold/__init__.py b/python/GafferArnold/__init__.py index 22c1fbc4983..377fa43a847 100644 --- a/python/GafferArnold/__init__.py +++ b/python/GafferArnold/__init__.py @@ -50,16 +50,20 @@ import sys import ctypes - originalDLOpenFlags = sys.getdlopenflags() - sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) + import os + + if os.name == "posix": + originalDLOpenFlags = sys.getdlopenflags() + sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) __import__( "IECoreArnold" ) from ._GafferArnold import * finally : - sys.setdlopenflags( originalDLOpenFlags ) - del sys, ctypes, originalDLOpenFlags + if os.name == "posix": + sys.setdlopenflags( originalDLOpenFlags ) + del sys, ctypes, originalDLOpenFlags from .ArnoldShaderBall import ArnoldShaderBall from .ArnoldTextureBake import ArnoldTextureBake From 911d15ece2e87ff2b4e4ad3447a74e5dc52f1a3f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 18 Jul 2018 15:59:43 -0400 Subject: [PATCH 050/243] convert OSL shader searching to cross platform --- startup/gui/menus.py | 76 ++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/startup/gui/menus.py b/startup/gui/menus.py index 0bf6b0a4849..1f94b522e94 100644 --- a/startup/gui/menus.py +++ b/startup/gui/menus.py @@ -412,45 +412,51 @@ def __shaderNodeCreator( nodeName, shaderName ) : return node + # Appleseed comes with a library of OSL shaders which we put + # on the OSL_SHADER_PATHS, but we don't want to show them in + # this menu, because we show them in the Appleseed menu instead. + # Likewise, 3Delight comes with a library of shaders that we + # show in the 3Delight menu and don't want to show here. + # + # The OSLCode node also generates a great many shaders behind + # the scenes that we don't want to place in the menus. Typically + # these aren't on the OSL_SHADER_PATHS anyway because they are + # given to the renderer via absolute paths, but at the time of + # writing it is necessary to place them on the OSL_SHADER_PATHS + # in order to use them in Arnold. We don't enable this by default + # because it causes Arnold to potentially load a huge number of + # shader plugins at startup, but we hide any oslCode shaders here + # in case someone else enables it. + # + # This match expression filters these categories of shader out + # as follows : + # + # - (?!__) asserts that the shader does not begin with double underscore. + # - (^|.*/) matches any number (including zero) of directory + # names preceding the shader name. + # - (? Date: Wed, 18 Jul 2018 19:04:31 -0400 Subject: [PATCH 051/243] revert to subprocess on Windows per recommended usage of subprocess32: https://github.com/google/python-subprocess32 --- python/GafferAppleseedTest/AppleseedTest.py | 6 +++++- python/GafferDispatch/LocalDispatcher.py | 6 +++++- python/GafferDispatch/SystemCommand.py | 6 +++++- python/GafferDispatchTest/StatsApplicationTest.py | 7 ++++++- python/GafferDispatchTest/SystemCommandTest.py | 6 +++++- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/python/GafferAppleseedTest/AppleseedTest.py b/python/GafferAppleseedTest/AppleseedTest.py index aa2cb1090bb..86598bbca53 100644 --- a/python/GafferAppleseedTest/AppleseedTest.py +++ b/python/GafferAppleseedTest/AppleseedTest.py @@ -35,7 +35,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess def appleseedProjectSchemaPath(): diff --git a/python/GafferDispatch/LocalDispatcher.py b/python/GafferDispatch/LocalDispatcher.py index 6806af4f936..30eae41a0dc 100644 --- a/python/GafferDispatch/LocalDispatcher.py +++ b/python/GafferDispatch/LocalDispatcher.py @@ -38,7 +38,11 @@ import errno import signal import shlex -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import threading import time import traceback diff --git a/python/GafferDispatch/SystemCommand.py b/python/GafferDispatch/SystemCommand.py index c77fc934b12..526e9e12258 100644 --- a/python/GafferDispatch/SystemCommand.py +++ b/python/GafferDispatch/SystemCommand.py @@ -36,7 +36,11 @@ import os import shlex -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import IECore diff --git a/python/GafferDispatchTest/StatsApplicationTest.py b/python/GafferDispatchTest/StatsApplicationTest.py index 8571a6fa4c0..d17dd81e783 100644 --- a/python/GafferDispatchTest/StatsApplicationTest.py +++ b/python/GafferDispatchTest/StatsApplicationTest.py @@ -36,7 +36,12 @@ import inspect import unittest -import subprocess32 as subprocess +import os +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import Gaffer import GafferTest diff --git a/python/GafferDispatchTest/SystemCommandTest.py b/python/GafferDispatchTest/SystemCommandTest.py index 0405efddb52..725b90b9362 100644 --- a/python/GafferDispatchTest/SystemCommandTest.py +++ b/python/GafferDispatchTest/SystemCommandTest.py @@ -35,7 +35,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import unittest import IECore From b081569c9bee26f5e3b923a60db8753e73a27d5d Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 26 Jul 2018 13:50:43 -0400 Subject: [PATCH 052/243] Revert "change readonly testing to be cross-platform" This reverts commit 23a2ae5a7e6ff8224be66ec96abf7a4f10b2db01. --- src/Gaffer/ScriptNode.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index 882a177f11d..09b85403962 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -59,6 +59,8 @@ #include +#include + using namespace Gaffer; ////////////////////////////////////////////////////////////////////////// @@ -827,19 +829,11 @@ void ScriptNode::plugSet( Plug *plug ) else if( plug == fileNamePlug() ) { const boost::filesystem::path fileName( fileNamePlug()->getValue() ); - context()->set( g_scriptName, fileName.stem().string() ); - - bool isReadOnly = false; - if( boost::filesystem::exists( fileName ) ) - { - std::ofstream testOpen( fileName.c_str() ); - isReadOnly = !testOpen.is_open(); - testOpen.close(); - } + context()->set( g_scriptName, fileName.stem().string() ); MetadataAlgo::setReadOnly( this, - isReadOnly, + boost::filesystem::exists( fileName ) && 0 != access( fileName.c_str(), W_OK ), /* persistent = */ false ); } From c82988c0660275403704d05fa7bb07442fbad11d Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 26 Jul 2018 18:22:47 -0400 Subject: [PATCH 053/243] Revert "Revert "change readonly testing to be cross-platform"" This reverts commit 7fa5071ed90dfe96d133c925ae44d9fd62d3df9e. --- src/Gaffer/ScriptNode.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index 09b85403962..049d1ad36ab 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -59,8 +59,6 @@ #include -#include - using namespace Gaffer; ////////////////////////////////////////////////////////////////////////// @@ -831,9 +829,18 @@ void ScriptNode::plugSet( Plug *plug ) const boost::filesystem::path fileName( fileNamePlug()->getValue() ); context()->set( g_scriptName, fileName.stem().string() ); + + bool isReadOnly = false; + if( boost::filesystem::exists( fileName ) ) + { + std::ofstream testOpen( fileName.c_str() ); + isReadOnly = !testOpen.is_open(); + testOpen.close(); + } + MetadataAlgo::setReadOnly( this, - boost::filesystem::exists( fileName ) && 0 != access( fileName.c_str(), W_OK ), + isReadOnly, /* persistent = */ false ); } From 02288effdf373d57d75248faaaa8947c27134a6e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 26 Jul 2018 18:54:38 -0400 Subject: [PATCH 054/243] fix readonly test --- src/Gaffer/ScriptNode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index 049d1ad36ab..b6aa463d224 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -833,7 +833,7 @@ void ScriptNode::plugSet( Plug *plug ) bool isReadOnly = false; if( boost::filesystem::exists( fileName ) ) { - std::ofstream testOpen( fileName.c_str() ); + std::ofstream testOpen( fileName.c_str(), std::fstream::app ); isReadOnly = !testOpen.is_open(); testOpen.close(); } From e27b43b983219ba2dae39d45471ca7f5e1ba1662 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 27 Jul 2018 18:26:07 -0400 Subject: [PATCH 055/243] add required environment variables to build script --- contrib/cmake/buildWindows.bat | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildWindows.bat index bc177443334..cc9ba98173e 100644 --- a/contrib/cmake/buildWindows.bat +++ b/contrib/cmake/buildWindows.bat @@ -2,6 +2,9 @@ rem We hide the CMakeLists.txt here and copy it to root so it works correctly set ROOT_DIR=%~dp0%..\.. cd %ROOT_DIR% +set CMAKE_GENERATOR="Visual Studio 15 2017 Win64" +set BUILD_TYPE=RELEASE + del /f CMakeCache.txt cmake -Wno-dev -G %CMAKE_GENERATOR% ^ From d9fe5c714fd79aec36bab2f5f216071abc5fbbb1 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 3 Aug 2018 12:05:51 -0400 Subject: [PATCH 056/243] Windows subprocess.Popen doesn't support start_new_session --- python/GafferDispatch/LocalDispatcher.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python/GafferDispatch/LocalDispatcher.py b/python/GafferDispatch/LocalDispatcher.py index 30eae41a0dc..1290a8fc5d4 100644 --- a/python/GafferDispatch/LocalDispatcher.py +++ b/python/GafferDispatch/LocalDispatcher.py @@ -285,7 +285,10 @@ def __doBackgroundDispatch( self, batch ) : self.__setStatus( batch, LocalDispatcher.Job.Status.Running ) IECore.msg( IECore.MessageHandler.Level.Info, self.__messageTitle, " ".join( args ) ) - process = subprocess.Popen( args, start_new_session=True ) + if os.name == "nt": + process = subprocess.Popen( args ) + else: + process = subprocess.Popen( args, start_new_session=True ) batch.blindData()["pid"] = IECore.IntData( process.pid ) while process.poll() is None : From 0686c52e135a20f723e9e07d888ba52a1579db4e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 3 Aug 2018 15:00:25 -0400 Subject: [PATCH 057/243] gcc and msvc define size_t slightly differently, use the standard library to link on msvc --- src/GafferScene/InteractiveRender.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferScene/InteractiveRender.cpp b/src/GafferScene/InteractiveRender.cpp index 76b44aeae3d..601ae308960 100644 --- a/src/GafferScene/InteractiveRender.cpp +++ b/src/GafferScene/InteractiveRender.cpp @@ -326,7 +326,7 @@ void InteractiveRender::update() m_controller.reset( new RenderController( adaptedInPlug(), effectiveContext(), m_renderer ) ); - m_controller->setMinimumExpansionDepth( limits::max() ); + m_controller->setMinimumExpansionDepth( numeric_limits::max() ); m_controller->updateRequiredSignal().connect( boost::bind( &InteractiveRender::update, this ) ); From a48fa4f3ed0fb7595766390cc10393f16116f9b2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 6 Aug 2018 19:36:42 -0400 Subject: [PATCH 058/243] Windows needs gaffer.bat to run background dispatch jobs --- python/GafferDispatch/LocalDispatcher.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/GafferDispatch/LocalDispatcher.py b/python/GafferDispatch/LocalDispatcher.py index 1290a8fc5d4..85d81718317 100644 --- a/python/GafferDispatch/LocalDispatcher.py +++ b/python/GafferDispatch/LocalDispatcher.py @@ -263,8 +263,9 @@ def __doBackgroundDispatch( self, batch ) : taskContext = batch.context() frames = str( IECore.frameListFromList( [ int(x) for x in batch.frames() ] ) ) - args = [ - "gaffer", "execute", + args = [ "gaffer.bat" ] if os.name == "nt" else [ "gaffer" ] + args = args + [ + "execute", "-script", self.__scriptFile, "-nodes", batch.blindData()["nodeName"].value, "-frames", frames, From af85159bdc84c2af0f8f5d7b09301516db7c48ae Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 6 Aug 2018 19:37:44 -0400 Subject: [PATCH 059/243] temporarily don't load Appleseed while a crash is being sorted out --- bin/gaffer_env.bat | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat index bfe40576d8d..44a4ed3dc85 100644 --- a/bin/gaffer_env.bat +++ b/bin/gaffer_env.bat @@ -38,12 +38,12 @@ set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins set PATH=%GAFFER_ROOT%\bin;%PATH% rem Appleseed -set APPLESEED=%GAFFER_ROOT%\appleseed -set PATH=%APPLESEED%\lib;%PATH% -set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% -set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% -set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% -set PATH=%APPLESEED%\bin;%PATH% +rem set APPLESEED=%GAFFER_ROOT%\appleseed +rem set PATH=%APPLESEED%\lib;%PATH% +rem set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% +rem set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% +rem set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% +rem set PATH=%APPLESEED%\bin;%PATH% rem Arnold From db05a52c153d12b89f135e5fa9456e6f8b56825e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 18:37:12 -0400 Subject: [PATCH 060/243] get test running (and failing) on Windows Windows Python doesn't have pwd or grp modules, so exclude them on Windows --- python/GafferTest/FileSystemPathTest.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 9011a2b1d0a..11849700bb2 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -38,9 +38,10 @@ import unittest import time import datetime -import pwd -import grp import os +if os.name is not "nt": + import pwd + import grp import IECore From 88032c5e3b1baee550788227a7cca1be33554aac Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 19:09:47 -0400 Subject: [PATCH 061/243] pass tests that Windows does not support --- python/GafferTest/FileSystemPathTest.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 11849700bb2..05f01764efb 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -79,6 +79,11 @@ def testConstructWithFilter( self ) : def testBrokenSymbolicLinks( self ) : + # Windows essentially doesn't support symbolic links (they are only able to be created by + # an administrator) + if os.name == "nt": + return + os.symlink( self.temporaryDirectory() + "/nonExistent", self.temporaryDirectory() + "/broken" ) # we do want symlinks to appear in children, even if they're broken @@ -100,6 +105,11 @@ def testBrokenSymbolicLinks( self ) : def testSymLinkInfo( self ) : + # Windows essentially doesn't support symbolic links (they are only able to be created by + # an administrator) + if os.name == "nt": + return + with open( self.temporaryDirectory() + "/a", "w" ) as f : f.write( "AAAA" ) @@ -203,6 +213,10 @@ def testOwner( self ) : def testGroup( self ) : + # Windows files do not have a separate group ownership + if os.name == "nt": + return + p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) From 09d86920a6c84b44db32c34a7d6a909fe96af248 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 19:17:25 -0400 Subject: [PATCH 062/243] add test to make sure the owner is not empty (this was causing a false pass in the Owner test on Windows before adapting FileSystemPath.cpp to Windows) add workaround on Windows to get the file owner - Python does not have a reliable native function for this --- python/GafferTest/FileSystemPathTest.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 05f01764efb..a72764aac4c 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -199,6 +199,17 @@ def testModificationTimes( self ) : self.assertTrue( isinstance( mt, datetime.datetime ) ) self.assertLess( (datetime.datetime.utcnow() - mt).total_seconds(), 2 ) + def testOwnerIsNotEmpty( self ) : + + p = Gaffer.FileSystemPath( self.temporaryDirectory() ) + p.append( "t" ) + + with open( str( p ), "w" ) as f : + f.write( "AAAA" ) + + o = p.property( "fileSystem:owner" ) + self.assertFalse( o == "" ) + def testOwner( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) @@ -209,7 +220,18 @@ def testOwner( self ) : o = p.property( "fileSystem:owner" ) self.assertTrue( isinstance( o, str ) ) - self.assertEqual( o, pwd.getpwuid( os.stat( str( p ) ).st_uid ).pw_name ) + + # Windows Python does not have a reliable native method to get the owner + # Call "dir" as a workaround + if os.name is not "nt" : + fileOwner = pwd.getpwuid( os.stat( str( p ) ).st_uid ).pw_name + else : + cmd = "dir /q {}".format( p ) + fileInfo = os.popen( cmd ).read().split() + fileOwner = "" + if len( fileInfo ) > 0: + fileOwner = fileInfo[-11] + self.assertEqual( o, fileOwner ) def testGroup( self ) : From 85c35a8c752dd02291d4397984160b87e7cfd4d2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 20:11:30 -0400 Subject: [PATCH 063/243] Windows can't delete the temp folder (in the GafferTest.TestCase.tearDown function) because the test is still working in that directory, resulting in an error --- python/GafferTest/FileSystemPathTest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index a72764aac4c..d62a6f9a446 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -353,9 +353,9 @@ def setUp( self ) : def tearDown( self ) : - GafferTest.TestCase.tearDown( self ) - os.chdir( self.__originalCWD ) + GafferTest.TestCase.tearDown( self ) + if __name__ == "__main__": unittest.main() From 22a57dd48dfba0552f44d3d6408c2871b9dc17c4 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 20:33:01 -0400 Subject: [PATCH 064/243] remove unnecessary test in favor of equivalent test in existing TestUser test --- python/GafferTest/FileSystemPathTest.py | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index d62a6f9a446..4db9744025a 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -199,17 +199,6 @@ def testModificationTimes( self ) : self.assertTrue( isinstance( mt, datetime.datetime ) ) self.assertLess( (datetime.datetime.utcnow() - mt).total_seconds(), 2 ) - def testOwnerIsNotEmpty( self ) : - - p = Gaffer.FileSystemPath( self.temporaryDirectory() ) - p.append( "t" ) - - with open( str( p ), "w" ) as f : - f.write( "AAAA" ) - - o = p.property( "fileSystem:owner" ) - self.assertFalse( o == "" ) - def testOwner( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) @@ -228,9 +217,9 @@ def testOwner( self ) : else : cmd = "dir /q {}".format( p ) fileInfo = os.popen( cmd ).read().split() - fileOwner = "" - if len( fileInfo ) > 0: - fileOwner = fileInfo[-11] + self.assertTrue( len( fileInfo ) > 11 ) + fileOwner = fileInfo[-11] + self.assertEqual( o, fileOwner ) def testGroup( self ) : From 059511f8aa77f4a9a46fbe6324bce1fea93b5d3e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 21:29:24 -0400 Subject: [PATCH 065/243] convert existing tests to work cross-platform add tests for nativeStrings create separate function to get file owner cross-platform since it is used multiple times --- python/GafferTest/FileSystemPathTest.py | 76 +++++++++++++++++-------- 1 file changed, 51 insertions(+), 25 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 4db9744025a..a2a5106c8f0 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -132,11 +132,13 @@ def testCopy( self ) : self.assertEqual( p, p2 ) self.assertEqual( str( p ), str( p2 ) ) + self.assertEqual( p.nativeString(), p2,nativeString() ) def testEmptyPath( self ) : p = Gaffer.FileSystemPath() self.assertEqual( str( p ), "" ) + self.assertEqual( p.nativeString(), "" ) self.assertTrue( p.isEmpty() ) self.assertFalse( p.isValid() ) @@ -144,18 +146,20 @@ def testRelativePath( self ) : os.chdir( self.temporaryDirectory() ) - with open( self.temporaryDirectory() + "/a", "w" ) as f : + with open( os.path.join( self.temporaryDirectory(), "a" ), "w" ) as f : f.write( "AAAA" ) p = Gaffer.FileSystemPath( "a" ) self.assertEqual( str( p ), "a" ) + self.assertEqual( p.nativeString(), "a" ) self.assertFalse( p.isEmpty() ) self.assertTrue( p.isValid() ) p2 = Gaffer.FileSystemPath( "nonexistent" ) self.assertEqual( str( p2 ), "nonexistent" ) + self.assertEqual( p2.nativeString(), "nonexistent" ) self.assertFalse( p2.isEmpty() ) self.assertFalse( p2.isValid() ) @@ -163,7 +167,7 @@ def testRelativePathChildren( self ) : os.chdir( self.temporaryDirectory() ) os.mkdir( "dir" ) - with open( self.temporaryDirectory() + "/dir/a", "w" ) as f : + with open( os.path.join( self.temporaryDirectory(), "dir", "a" ), "w" ) as f : f.write( "AAAA" ) p = Gaffer.FileSystemPath( "dir" ) @@ -171,6 +175,10 @@ def testRelativePathChildren( self ) : c = p.children() self.assertEqual( len( c ), 1 ) self.assertEqual( str( c[0] ), "dir/a" ) + if os.name == "nt": + self.assertEqual( c[0].nativeString(), "dir\\a" ) + else: + self.assertEqual( c[0].nativeString(), "dir/a" ) self.assertTrue( c[0].isValid() ) def testChildrenOfFile( self ) : @@ -183,7 +191,7 @@ def testModificationTimes( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) - with open( str( p ), "w" ) as f : + with open( p.nativeString(), "w" ) as f : f.write( "AAAA" ) mt = p.property( "fileSystem:modificationTime" ) @@ -192,7 +200,7 @@ def testModificationTimes( self ) : time.sleep( 1 ) - with open( str( p ), "w" ) as f : + with open( p.nativeString(), "w" ) as f : f.write( "BBBB" ) mt = p.property( "fileSystem:modificationTime" ) @@ -204,23 +212,13 @@ def testOwner( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) - with open( str( p ), "w" ) as f : + with open( p.nativeString(), "w" ) as f : f.write( "AAAA" ) o = p.property( "fileSystem:owner" ) self.assertTrue( isinstance( o, str ) ) - # Windows Python does not have a reliable native method to get the owner - # Call "dir" as a workaround - if os.name is not "nt" : - fileOwner = pwd.getpwuid( os.stat( str( p ) ).st_uid ).pw_name - else : - cmd = "dir /q {}".format( p ) - fileInfo = os.popen( cmd ).read().split() - self.assertTrue( len( fileInfo ) > 11 ) - fileOwner = fileInfo[-11] - - self.assertEqual( o, fileOwner ) + self.assertEqual( o, self.getFileOwner( p.nativeString() ) ) def testGroup( self ) : @@ -231,12 +229,12 @@ def testGroup( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) - with open( str( p ), "w" ) as f : + with open( p.nativeString(), "w" ) as f : f.write( "AAAA" ) g = p.property( "fileSystem:group" ) self.assertTrue( isinstance( g, str ) ) - self.assertEqual( g, grp.getgrgid( os.stat( str( p ) ).st_gid ).gr_name ) + self.assertEqual( g, grp.getgrgid( os.stat( p.nativeString() ).st_gid ).gr_name ) def testPropertyNames( self ) : @@ -256,9 +254,9 @@ def testPropertyNames( self ) : def testSequences( self ) : - os.mkdir( self.temporaryDirectory() + "/dir" ) + os.mkdir( os.path.join( self.temporaryDirectory(), "dir" ) ) for n in [ "singleFile.txt", "a.001.txt", "a.002.txt", "a.004.txt", "b.003.txt" ] : - with open( self.temporaryDirectory() + "/" + n, "w" ) as f : + with open( os.path.join( self.temporaryDirectory(), n ), "w" ) as f : f.write( "AAAA" ) p = Gaffer.FileSystemPath( self.temporaryDirectory(), includeSequences = True ) @@ -269,28 +267,37 @@ def testSequences( self ) : s = sorted( c, key=str ) self.assertEqual( str(s[0]), self.temporaryDirectory() + "/a.###.txt" ) + self.assertEqual( s[0].nativeString(), os.path.join( self.temporaryDirectory(), "a.###.txt" ) ) self.assertEqual( str(s[1]), self.temporaryDirectory() + "/a.001.txt" ) + self.assertEqual( s[1].nativeString(), os.path.join( self.temporaryDirectory(), "a.001.txt" ) ) self.assertEqual( str(s[2]), self.temporaryDirectory() + "/a.002.txt" ) + self.assertEqual( s[2].nativeString(), os.path.join( self.temporaryDirectory(), "a.002.txt" ) ) self.assertEqual( str(s[3]), self.temporaryDirectory() + "/a.004.txt" ) + self.assertEqual( s[3].nativeString(), os.path.join( self.temporaryDirectory(), "a.004.txt" ) ) self.assertEqual( str(s[4]), self.temporaryDirectory() + "/b.###.txt" ) + self.assertEqual( s[4].nativeString(), os.path.join( self.temporaryDirectory(), "b.###.txt" ) ) self.assertEqual( str(s[5]), self.temporaryDirectory() + "/b.003.txt" ) + self.assertEqual( s[5].nativeString(), os.path.join( self.temporaryDirectory(), "b.003.txt" ) ) self.assertEqual( str(s[6]), self.temporaryDirectory() + "/dir" ) + self.assertEqual( s[6].nativeString(), os.path.join( self.temporaryDirectory(), "dir" ) ) self.assertEqual( str(s[7]), self.temporaryDirectory() + "/singleFile.txt" ) + self.assertEqual( s[7].nativeString(), os.path.join( self.temporaryDirectory(), "singleFile.txt" ) ) for x in s : self.assertTrue( x.isValid() ) - if not os.path.isdir( str(x) ) : + if not os.path.isdir( x.nativeString() ) : self.assertTrue( x.isLeaf() ) - self.assertEqual( x.property( "fileSystem:owner" ), pwd.getpwuid( os.stat( str( p ) ).st_uid ).pw_name ) - self.assertEqual( x.property( "fileSystem:group" ), grp.getgrgid( os.stat( str( p ) ).st_gid ).gr_name ) + self.assertEqual( x.property( "fileSystem:owner" ), self.getFileOwner( p.nativeString() ) ) + if os.name is not "nt": + self.assertEqual( x.property( "fileSystem:group" ), grp.getgrgid( os.stat( str( p ) ).st_gid ).gr_name ) self.assertLess( (datetime.datetime.utcnow() - x.property( "fileSystem:modificationTime" )).total_seconds(), 2 ) - if "###" not in str(x) : + if "###" not in str( x ) : self.assertFalse( x.isFileSequence() ) self.assertEqual( x.fileSequence(), None ) self.assertEqual( x.property( "fileSystem:frameRange" ), "" ) - if os.path.isdir( str(x) ) : + if os.path.isdir( x.nativeString() ) : self.assertEqual( x.property( "fileSystem:size" ), 0 ) else : self.assertEqual( x.property( "fileSystem:size" ), 4 ) @@ -321,11 +328,17 @@ def testSequences( self ) : s = sorted( c, key=str ) self.assertEqual( str(s[0]), self.temporaryDirectory() + "/a.001.txt" ) + self.assertEqual( s[0].nativeString(), os.path.join( self.temporaryDirectory(), "a.001.txt" ) ) self.assertEqual( str(s[1]), self.temporaryDirectory() + "/a.002.txt" ) + self.assertEqual( s[1].nativeString(), os.path.join( self.temporaryDirectory(), "a.002.txt" ) ) self.assertEqual( str(s[2]), self.temporaryDirectory() + "/a.004.txt" ) + self.assertEqual( s[2].nativeString(), os.path.join( self.temporaryDirectory(), "a.004.txt" ) ) self.assertEqual( str(s[3]), self.temporaryDirectory() + "/b.003.txt" ) + self.assertEqual( s[3].nativeString(), os.path.join( self.temporaryDirectory(), "b.003.txt" ) ) self.assertEqual( str(s[4]), self.temporaryDirectory() + "/dir" ) + self.assertEqual( s[4].nativeString(), os.path.join( self.temporaryDirectory(), "dir" ) ) self.assertEqual( str(s[5]), self.temporaryDirectory() + "/singleFile.txt" ) + self.assertEqual( s[5].nativeString(), os.path.join( self.temporaryDirectory(), "singleFile.txt" ) ) # and we can include them again p.setIncludeSequences( True ) @@ -346,5 +359,18 @@ def tearDown( self ) : GafferTest.TestCase.tearDown( self ) + def getFileOwner( self, filepath ): + + # Windows Python does not have a reliable native method to get the owner + # Call "dir" as a workaround + if os.name is not "nt" : + return pwd.getpwuid( os.stat( filepath ).st_uid ).pw_name + else : + cmd = "dir /q {}".format( filepath ) + fileInfo = os.popen( cmd ).read().split() + self.assertTrue( len( fileInfo ) > 11 ) + fileOwner = fileInfo[-11] + + if __name__ == "__main__": unittest.main() From 4e76a910eb94872032c2ef498efb9e20617dd8bd Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 22:11:05 -0400 Subject: [PATCH 066/243] fix typo --- python/GafferTest/FileSystemPathTest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index a2a5106c8f0..9b5f75a0473 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -132,7 +132,7 @@ def testCopy( self ) : self.assertEqual( p, p2 ) self.assertEqual( str( p ), str( p2 ) ) - self.assertEqual( p.nativeString(), p2,nativeString() ) + self.assertEqual( p.nativeString(), p2.nativeString() ) def testEmptyPath( self ) : From 72eca0ed61997716c47e85e05a421159c91b7b56 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 22:11:58 -0400 Subject: [PATCH 067/243] add nativeString function to return path values conforming to OS requirements for Windows and Linux / Mac --- include/Gaffer/FileSystemPath.h | 3 +++ src/Gaffer/FileSystemPath.cpp | 21 +++++++++++++++++++++ src/GafferModule/PathBinding.cpp | 1 + 3 files changed, 25 insertions(+) diff --git a/include/Gaffer/FileSystemPath.h b/include/Gaffer/FileSystemPath.h index 06e6d5eadcb..5f48417e12f 100644 --- a/include/Gaffer/FileSystemPath.h +++ b/include/Gaffer/FileSystemPath.h @@ -82,6 +82,9 @@ class GAFFER_API FileSystemPath : public Path // a FileSequence. IECore::FileSequencePtr fileSequence() const; + // Returns the path converted to the OS native format + std::string nativeString() const; + static PathFilterPtr createStandardFilter( const std::vector &extensions = std::vector(), const std::string &extensionsLabel = "", bool includeSequenceFilter = false ); protected : diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index b6f2ad30e93..beda040c7de 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -435,3 +435,24 @@ PathFilterPtr FileSystemPath::createStandardFilter( const std::vectorroot(); + Path::Names names = this->names(); + for( size_t i = 0, s = names.size(); i < s; ++i ) + { + if( i != 0 ) + { + result += separator; + } + result += names[i].string(); + } + return result; +} diff --git a/src/GafferModule/PathBinding.cpp b/src/GafferModule/PathBinding.cpp index 0dc55a03b29..b2f7f0fd369 100644 --- a/src/GafferModule/PathBinding.cpp +++ b/src/GafferModule/PathBinding.cpp @@ -503,6 +503,7 @@ void GafferModule::bindPath() arg( "includeSequenceFilter" ) = false ) ) + .def( "nativeString", &FileSystemPath::nativeString ) .staticmethod( "createStandardFilter" ) ; From 55c5f8dd05ae1bad15184302bbce8c7a31e25114 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 23 Aug 2018 20:59:42 -0400 Subject: [PATCH 068/243] convert back slashes to forward slashes when creating a path --- include/Gaffer/FileSystemPath.h | 1 + python/GafferTest/FileSystemPathTest.py | 28 ++++++++++++------------- src/Gaffer/FileSystemPath.cpp | 17 +++++++++++++-- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/include/Gaffer/FileSystemPath.h b/include/Gaffer/FileSystemPath.h index 5f48417e12f..992d6eae92d 100644 --- a/include/Gaffer/FileSystemPath.h +++ b/include/Gaffer/FileSystemPath.h @@ -90,6 +90,7 @@ class GAFFER_API FileSystemPath : public Path protected : void doChildren( std::vector &children ) const override; + std::string sanitizePath( std::string path ) const; private : diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 9b5f75a0473..9559ffb7b54 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -266,21 +266,21 @@ def testSequences( self ) : self.assertEqual( len( c ), 8 ) s = sorted( c, key=str ) - self.assertEqual( str(s[0]), self.temporaryDirectory() + "/a.###.txt" ) + self.assertEqual( str(s[0]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.###.txt" ) self.assertEqual( s[0].nativeString(), os.path.join( self.temporaryDirectory(), "a.###.txt" ) ) - self.assertEqual( str(s[1]), self.temporaryDirectory() + "/a.001.txt" ) + self.assertEqual( str(s[1]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.001.txt" ) self.assertEqual( s[1].nativeString(), os.path.join( self.temporaryDirectory(), "a.001.txt" ) ) - self.assertEqual( str(s[2]), self.temporaryDirectory() + "/a.002.txt" ) + self.assertEqual( str(s[2]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.002.txt" ) self.assertEqual( s[2].nativeString(), os.path.join( self.temporaryDirectory(), "a.002.txt" ) ) - self.assertEqual( str(s[3]), self.temporaryDirectory() + "/a.004.txt" ) + self.assertEqual( str(s[3]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.004.txt" ) self.assertEqual( s[3].nativeString(), os.path.join( self.temporaryDirectory(), "a.004.txt" ) ) - self.assertEqual( str(s[4]), self.temporaryDirectory() + "/b.###.txt" ) + self.assertEqual( str(s[4]), self.temporaryDirectory().replace( "\\", "/" ) + "/b.###.txt" ) self.assertEqual( s[4].nativeString(), os.path.join( self.temporaryDirectory(), "b.###.txt" ) ) - self.assertEqual( str(s[5]), self.temporaryDirectory() + "/b.003.txt" ) + self.assertEqual( str(s[5]), self.temporaryDirectory().replace( "\\", "/" ) + "/b.003.txt" ) self.assertEqual( s[5].nativeString(), os.path.join( self.temporaryDirectory(), "b.003.txt" ) ) - self.assertEqual( str(s[6]), self.temporaryDirectory() + "/dir" ) + self.assertEqual( str(s[6]), self.temporaryDirectory().replace( "\\", "/" ) + "/dir" ) self.assertEqual( s[6].nativeString(), os.path.join( self.temporaryDirectory(), "dir" ) ) - self.assertEqual( str(s[7]), self.temporaryDirectory() + "/singleFile.txt" ) + self.assertEqual( str(s[7]), self.temporaryDirectory().replace( "\\", "/" ) + "/singleFile.txt" ) self.assertEqual( s[7].nativeString(), os.path.join( self.temporaryDirectory(), "singleFile.txt" ) ) for x in s : @@ -327,17 +327,17 @@ def testSequences( self ) : self.assertEqual( len( c ), 6 ) s = sorted( c, key=str ) - self.assertEqual( str(s[0]), self.temporaryDirectory() + "/a.001.txt" ) + self.assertEqual( str(s[0]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.001.txt" ) self.assertEqual( s[0].nativeString(), os.path.join( self.temporaryDirectory(), "a.001.txt" ) ) - self.assertEqual( str(s[1]), self.temporaryDirectory() + "/a.002.txt" ) + self.assertEqual( str(s[1]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.002.txt" ) self.assertEqual( s[1].nativeString(), os.path.join( self.temporaryDirectory(), "a.002.txt" ) ) - self.assertEqual( str(s[2]), self.temporaryDirectory() + "/a.004.txt" ) + self.assertEqual( str(s[2]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.004.txt" ) self.assertEqual( s[2].nativeString(), os.path.join( self.temporaryDirectory(), "a.004.txt" ) ) - self.assertEqual( str(s[3]), self.temporaryDirectory() + "/b.003.txt" ) + self.assertEqual( str(s[3]), self.temporaryDirectory().replace( "\\", "/" ) + "/b.003.txt" ) self.assertEqual( s[3].nativeString(), os.path.join( self.temporaryDirectory(), "b.003.txt" ) ) - self.assertEqual( str(s[4]), self.temporaryDirectory() + "/dir" ) + self.assertEqual( str(s[4]), self.temporaryDirectory().replace( "\\", "/" ) + "/dir" ) self.assertEqual( s[4].nativeString(), os.path.join( self.temporaryDirectory(), "dir" ) ) - self.assertEqual( str(s[5]), self.temporaryDirectory() + "/singleFile.txt" ) + self.assertEqual( str(s[5]), self.temporaryDirectory().replace( "\\", "/" ) + "/singleFile.txt" ) self.assertEqual( s[5].nativeString(), os.path.join( self.temporaryDirectory(), "singleFile.txt" ) ) # and we can include them again diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index beda040c7de..f3081835fa9 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -73,6 +73,10 @@ static InternedString g_modificationTimePropertyName( "fileSystem:modificationTi static InternedString g_sizePropertyName( "fileSystem:size" ); static InternedString g_frameRangePropertyName( "fileSystem:frameRange" ); +static InternedString g_windowsSeparator( "\\" ); +static InternedString g_genericSeparator( "/" ); +static InternedString g_uncPrefix( "\\\\" ); + FileSystemPath::FileSystemPath( PathFilterPtr filter, bool includeSequences ) : Path( filter ), m_includeSequences( includeSequences ) { @@ -81,6 +85,7 @@ FileSystemPath::FileSystemPath( PathFilterPtr filter, bool includeSequences ) FileSystemPath::FileSystemPath( const std::string &path, PathFilterPtr filter, bool includeSequences ) : Path( path, filter ), m_includeSequences( includeSequences ) { + setFromString( sanitizePath( path ) ); } FileSystemPath::FileSystemPath( const Names &names, const IECore::InternedString &root, PathFilterPtr filter, bool includeSequences ) @@ -367,6 +372,14 @@ void FileSystemPath::doChildren( std::vector &children ) const } } +std::string FileSystemPath::sanitizePath( std::string pathString ) const +{ + boost::replace_all( pathString, g_uncPrefix.c_str(), g_genericSeparator.c_str() ); + boost::replace_all( pathString, g_windowsSeparator.c_str(), g_genericSeparator.c_str() ); + + return pathString.c_str(); +} + PathFilterPtr FileSystemPath::createStandardFilter( const std::vector &extensions, const std::string &extensionsLabel, bool includeSequenceFilter ) { CompoundPathFilterPtr result = new CompoundPathFilter(); @@ -439,9 +452,9 @@ PathFilterPtr FileSystemPath::createStandardFilter( const std::vectorroot(); From 790b4e807cdb4859cf43fd4bda8fe162ff664546 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 23 Aug 2018 20:59:59 -0400 Subject: [PATCH 069/243] make sure call to ls uses filesystem native path --- src/Gaffer/FileSystemPath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index f3081835fa9..5a20afaa117 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -154,7 +154,7 @@ FileSequencePtr FileSystemPath::fileSequence() const } FileSequencePtr sequence = nullptr; - IECore::ls( this->string(), sequence, /* minSequenceSize = */ 1 ); + IECore::ls( this->nativeString(), sequence, /* minSequenceSize = */ 1 ); return sequence; } From 7d82b7c098a3ec875e9b2902c5cf1f776dd764dd Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 23 Aug 2018 21:48:15 -0400 Subject: [PATCH 070/243] Leaving out symlink support on Windows (it's only available to administrators by default, and boost does not support it either), just test that the regular file is valid --- src/Gaffer/FileSystemPath.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 5a20afaa117..d8f4c5a7131 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -109,7 +109,11 @@ bool FileSystemPath::isValid() const return true; } +#ifndef _MSC_VER const file_type t = symlink_status( path( this->string() ) ).type(); +#else + const file_type t = status( path( this->string() ) ).type(); +#endif return t != status_error && t != file_not_found; } From 1945995b15afc8bf3650cf0a8bae0699e1b74387 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 23 Aug 2018 22:42:26 -0400 Subject: [PATCH 071/243] dump sanitizing string in favor of overriding the setFromString to allow for properly setting the root, especially with Windows drive letter paths --- include/Gaffer/FileSystemPath.h | 4 ++- include/Gaffer/Path.h | 2 +- src/Gaffer/FileSystemPath.cpp | 48 ++++++++++++++++++++++++++------- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/include/Gaffer/FileSystemPath.h b/include/Gaffer/FileSystemPath.h index 992d6eae92d..da0dec0d1db 100644 --- a/include/Gaffer/FileSystemPath.h +++ b/include/Gaffer/FileSystemPath.h @@ -58,6 +58,9 @@ class GAFFER_API FileSystemPath : public Path ~FileSystemPath() override; + /// Sets the path root and names from an OS native path string + virtual void setFromString(const std::string &string) override; + bool isValid() const override; bool isLeaf() const override; void propertyNames( std::vector &names ) const override; @@ -90,7 +93,6 @@ class GAFFER_API FileSystemPath : public Path protected : void doChildren( std::vector &children ) const override; - std::string sanitizePath( std::string path ) const; private : diff --git a/include/Gaffer/Path.h b/include/Gaffer/Path.h index 0dd36f4e62c..bdc1c0e8ff3 100644 --- a/include/Gaffer/Path.h +++ b/include/Gaffer/Path.h @@ -131,7 +131,7 @@ class GAFFER_API Path : public IECore::RunTimeTyped /// Sets the path root and names from a "/" /// separated string. - void setFromString( const std::string &string ); + virtual void setFromString( const std::string &string ); /// Returns a copy of this path. Must be reimplemented /// by derived classes so that the copy has the appropriate diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index d8f4c5a7131..0d10b1a2c61 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -50,6 +50,7 @@ #include "boost/date_time/posix_time/conversion.hpp" #include "boost/filesystem.hpp" #include "boost/filesystem/operations.hpp" +#include "boost/regex.hpp" #ifndef _MSC_VER #include @@ -85,7 +86,7 @@ FileSystemPath::FileSystemPath( PathFilterPtr filter, bool includeSequences ) FileSystemPath::FileSystemPath( const std::string &path, PathFilterPtr filter, bool includeSequences ) : Path( path, filter ), m_includeSequences( includeSequences ) { - setFromString( sanitizePath( path ) ); + setFromString( path ); } FileSystemPath::FileSystemPath( const Names &names, const IECore::InternedString &root, PathFilterPtr filter, bool includeSequences ) @@ -97,6 +98,43 @@ FileSystemPath::~FileSystemPath() { } +void FileSystemPath::setFromString(const std::string &string) +{ + Names newNames; + std::string sanitizedString; + boost::regex driveLetterPattern{ "^([A-Za-z]{1}:)\/" }; + boost::smatch result; + + sanitizedString = string.c_str(); + if (boost::starts_with(sanitizedString, g_uncPrefix)) + { + boost::replace_first(sanitizedString, g_uncPrefix, g_genericSeparator); + } + boost::replace_all( sanitizedString, g_windowsSeparator, g_genericSeparator ); + + StringAlgo::tokenize(sanitizedString, '/', back_inserter(newNames)); + + InternedString newRoot; + if (string.size() && string[0] == '/') + { + newRoot = "/"; + } + else if ( string.size() && boost::regex_search( string, result, driveLetterPattern ) ) + { + newRoot = result[0].str(); + } + + if (newRoot == m_root && newNames == m_names) + { + return; + } + + m_names = newNames; + m_root = newRoot; + + emitPathChanged(); +} + bool FileSystemPath::isValid() const { if( !Path::isValid() ) @@ -376,14 +414,6 @@ void FileSystemPath::doChildren( std::vector &children ) const } } -std::string FileSystemPath::sanitizePath( std::string pathString ) const -{ - boost::replace_all( pathString, g_uncPrefix.c_str(), g_genericSeparator.c_str() ); - boost::replace_all( pathString, g_windowsSeparator.c_str(), g_genericSeparator.c_str() ); - - return pathString.c_str(); -} - PathFilterPtr FileSystemPath::createStandardFilter( const std::vector &extensions, const std::string &extensionsLabel, bool includeSequenceFilter ) { CompoundPathFilterPtr result = new CompoundPathFilter(); From 33b99f480d25f996667756ed7143c308cc636f76 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 13:08:48 -0400 Subject: [PATCH 072/243] add proper handling of drive letter paths for Windows --- include/Gaffer/FileSystemPath.h | 1 + include/Gaffer/Path.h | 3 +- src/Gaffer/FileSystemPath.cpp | 55 +++++++++++++++++++++++++++------ src/Gaffer/Path.cpp | 14 ++++++++- 4 files changed, 62 insertions(+), 11 deletions(-) diff --git a/include/Gaffer/FileSystemPath.h b/include/Gaffer/FileSystemPath.h index da0dec0d1db..57541f331a0 100644 --- a/include/Gaffer/FileSystemPath.h +++ b/include/Gaffer/FileSystemPath.h @@ -85,6 +85,7 @@ class GAFFER_API FileSystemPath : public Path // a FileSequence. IECore::FileSequencePtr fileSequence() const; + std::string string() const override; // Returns the path converted to the OS native format std::string nativeString() const; diff --git a/include/Gaffer/Path.h b/include/Gaffer/Path.h index bdc1c0e8ff3..05aa0d1e953 100644 --- a/include/Gaffer/Path.h +++ b/include/Gaffer/Path.h @@ -89,6 +89,7 @@ class GAFFER_API Path : public IECore::RunTimeTyped /// Returns the root of the path - this will be "/" for absolute /// paths and "" for relative paths. const IECore::InternedString &root() const; + void setRoot( IECore::InternedString &newRoot ); /// Returns true if this path is empty. bool isEmpty() const; @@ -170,7 +171,7 @@ class GAFFER_API Path : public IECore::RunTimeTyped /// Returns the path concatenated into a string, using '/' /// as a separator between names. - std::string string() const; + virtual std::string string() const; bool operator == ( const Path &other ) const; bool operator != ( const Path &other ) const; diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 0d10b1a2c61..d4739415510 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -98,19 +98,27 @@ FileSystemPath::~FileSystemPath() { } +// Create a path that is aware of differences in OS naming schemes +// Windows separates path elements with a backlash and Linux / Mac with forward slash +// Windows also starts drive letter paths with not leading \, which looks like a relative +// path but should be treated as though the drive letter is the root of the path +// If we don't treat the drive letter as the root, there will be errors when repeatedly +// popping the last path entry and getting to the drive letter path at the start of what +// FileSystemPath thinks is a relative path + void FileSystemPath::setFromString(const std::string &string) { Names newNames; std::string sanitizedString; - boost::regex driveLetterPattern{ "^([A-Za-z]{1}:)\/" }; + boost::regex driveLetterPattern{ "^([A-Za-z]{1}:)" }; boost::smatch result; sanitizedString = string.c_str(); - if (boost::starts_with(sanitizedString, g_uncPrefix)) + if (boost::starts_with(sanitizedString, g_uncPrefix.c_str())) { - boost::replace_first(sanitizedString, g_uncPrefix, g_genericSeparator); + boost::replace_first(sanitizedString, g_uncPrefix.c_str(), g_genericSeparator.c_str()); } - boost::replace_all( sanitizedString, g_windowsSeparator, g_genericSeparator ); + boost::replace_all( sanitizedString, g_windowsSeparator.c_str(), g_genericSeparator.c_str() ); StringAlgo::tokenize(sanitizedString, '/', back_inserter(newNames)); @@ -119,18 +127,19 @@ void FileSystemPath::setFromString(const std::string &string) { newRoot = "/"; } - else if ( string.size() && boost::regex_search( string, result, driveLetterPattern ) ) + else if ( string.size() && boost::regex_search( newNames[0].string(), result, driveLetterPattern ) ) { - newRoot = result[0].str(); + newRoot = newNames[0]; + newNames.erase( newNames.begin() ); } - if (newRoot == m_root && newNames == m_names) + if (newRoot == this->root() && newNames == this->names() ) { return; } - m_names = newNames; - m_root = newRoot; + set( 0, this->names().size(), newNames ); + setRoot( newRoot ); emitPathChanged(); } @@ -483,6 +492,27 @@ PathFilterPtr FileSystemPath::createStandardFilter( const std::vectorroot(); + if (boost::regex_match(result, regex_result, driveLetterPattern)) + { + result += "/"; + } + for (size_t i = 0, s = this->names().size(); i < s; ++i) + { + if (i != 0) + { + result += "/"; + } + result += this->names()[i].string(); + } + return result; +} + std::string FileSystemPath::nativeString() const { #ifdef _MSC_VER @@ -490,8 +520,15 @@ std::string FileSystemPath::nativeString() const #else std::string separator = g_genericSeparator; #endif + + boost::regex driveLetterPattern{ "^([A-Za-z]{1}:)" }; + boost::smatch regex_result; std::string result = this->root(); + if( boost::regex_match( result, regex_result, driveLetterPattern ) ) + { + result += separator; + } Path::Names names = this->names(); for( size_t i = 0, s = names.size(); i < s; ++i ) { diff --git a/src/Gaffer/Path.cpp b/src/Gaffer/Path.cpp index 41c5183f0f8..761422ec726 100644 --- a/src/Gaffer/Path.cpp +++ b/src/Gaffer/Path.cpp @@ -95,7 +95,19 @@ const IECore::InternedString &Path::root() const return m_root; } -bool Path::isEmpty() const +void Path::setRoot( IECore::InternedString &newRoot ) +{ + + if ( newRoot == m_root ) + { + return; + } + + m_root = newRoot; + emitPathChanged(); +} + +const bool Path::isEmpty() const { return m_names.empty() && m_root.string().empty(); } From 2f4eea7dd8451b63196d48f0be624c45f16b4e3d Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 15:59:03 -0400 Subject: [PATCH 073/243] add Windows code to get file owner. Note that the file owner related tests are failing - this is a problem with Python not being able to get a directory owner properly. Currently looking into how to do this --- include/Gaffer/FileSystemPath.h | 1 + src/Gaffer/FileSystemPath.cpp | 87 ++++++++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 8 deletions(-) diff --git a/include/Gaffer/FileSystemPath.h b/include/Gaffer/FileSystemPath.h index 57541f331a0..9fb5a217134 100644 --- a/include/Gaffer/FileSystemPath.h +++ b/include/Gaffer/FileSystemPath.h @@ -94,6 +94,7 @@ class GAFFER_API FileSystemPath : public Path protected : void doChildren( std::vector &children ) const override; + std::string getOwner( const std::string &pathString ) const; private : diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index d4739415510..7726097d2ab 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -55,6 +55,12 @@ #ifndef _MSC_VER #include #include +#else +#include +#include +#include +#include "accctrl.h" +#include "aclapi.h" #endif #include @@ -241,14 +247,7 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr std::map ownerCounter; for( std::vector::iterator it = files.begin(); it != files.end(); ++it ) { - struct stat s; - stat( it->c_str(), &s ); - #ifndef _MSC_VER - struct passwd *pw = getpwuid( s.st_uid ); - std::string value = pw ? pw->pw_name : ""; - #else - std::string value = ""; - #endif + std::string value = getOwner( it->c_str() ); std::pair::iterator,bool> oIt = ownerCounter.insert( std::pair( value, 0 ) ); oIt.first->second++; if( oIt.first->second > maxCount ) @@ -540,3 +539,75 @@ std::string FileSystemPath::nativeString() const } return result; } + +// Windows code to get file / directory owner from https://docs.microsoft.com/en-us/windows/desktop/SecAuthZ/finding-the-owner-of-a-file-object-in-c-- +std::string FileSystemPath::getOwner( const std::string &pathString ) const +{ + std::string value; +#ifndef _MSC_VER + struct stat s; + stat(it->c_str(), &s); + struct passwd *pw = getpwuid(s.st_uid); + value = pw ? pw->pw_name : ""; +#else + DWORD dwRtnCode = 0; + PSID pSidOwner = NULL; + BOOL bRtnBool = TRUE; + LPTSTR AcctName = NULL; + LPTSTR DomainName = NULL; + DWORD dwAcctName = 1, dwDomainName = 1; + SID_NAME_USE eUse = SidTypeUnknown; + HANDLE hFile; + PSECURITY_DESCRIPTOR pSD = NULL; + + + // Get the handle of the file object. + hFile = CreateFile( pathString.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + // Check GetLastError for CreateFile error code. + if (hFile == INVALID_HANDLE_VALUE) { + return ""; + } + + // Get the owner SID of the file. + dwRtnCode = GetSecurityInfo(hFile, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION, &pSidOwner, NULL, NULL, NULL, &pSD); + + CloseHandle( hFile ); + + // Check GetLastError for GetSecurityInfo error condition. + if (dwRtnCode != ERROR_SUCCESS) { + return ""; + } + + // First call to LookupAccountSid to get the buffer sizes. + bRtnBool = LookupAccountSid(NULL, pSidOwner, AcctName, (LPDWORD)&dwAcctName, DomainName, (LPDWORD)&dwDomainName, &eUse); + + // Reallocate memory for the buffers. + AcctName = (LPTSTR)GlobalAlloc(GMEM_FIXED, dwAcctName); + + // Check GetLastError for GlobalAlloc error condition. + if (AcctName == NULL) { + return ""; + } + + DomainName = (LPTSTR)GlobalAlloc(GMEM_FIXED, dwDomainName); + + // Check GetLastError for GlobalAlloc error condition. + if (DomainName == NULL) { + return ""; + } + + // Second call to LookupAccountSid to get the account name. + bRtnBool = LookupAccountSid(NULL, pSidOwner, AcctName, (LPDWORD)&dwAcctName, DomainName, (LPDWORD)&dwDomainName, &eUse); + + if (bRtnBool == FALSE) { + return ""; + } + else if (bRtnBool == TRUE) + { + value = AcctName; //let's ignore unicode considerations for now + } + +#endif + return value; +} From ab11be3ebf0d613717ee302269f8d0c09ff144f6 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 17:08:26 -0400 Subject: [PATCH 074/243] fix UNC paths - need to make sure nativePath starts with "\\" and that we are not omitting the leading "/" because of errors in string parsing --- src/Gaffer/FileSystemPath.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 7726097d2ab..c1664503de7 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -129,11 +129,11 @@ void FileSystemPath::setFromString(const std::string &string) StringAlgo::tokenize(sanitizedString, '/', back_inserter(newNames)); InternedString newRoot; - if (string.size() && string[0] == '/') + if (sanitizedString.size() && sanitizedString[0] == '/') { newRoot = "/"; } - else if ( string.size() && boost::regex_search( newNames[0].string(), result, driveLetterPattern ) ) + else if ( newNames.size() && boost::regex_search( newNames[0].string(), result, driveLetterPattern ) ) { newRoot = newNames[0]; newNames.erase( newNames.begin() ); @@ -524,6 +524,12 @@ std::string FileSystemPath::nativeString() const boost::smatch regex_result; std::string result = this->root(); +#ifdef _MSC_VER + if( this->root() == "/" ) + { + result = g_uncPrefix; + } +#endif if( boost::regex_match( result, regex_result, driveLetterPattern ) ) { result += separator; From 1235d1b0c12500235c5351f867af4634646d2928 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 17:08:52 -0400 Subject: [PATCH 075/243] add tests for Windows paths and POSIX paths formatting --- python/GafferTest/FileSystemPathTest.py | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 9559ffb7b54..c1e9c206fd5 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -163,6 +163,33 @@ def testRelativePath( self ) : self.assertFalse( p2.isEmpty() ) self.assertFalse( p2.isValid() ) + def testDriveLetterPath( self ) : + p = Gaffer.FileSystemPath( "C:\\this\\path\\does\\not\\exist.ext" ) + + self.assertEqual( str( p ), "C:/this/path/does/not/exist.ext" ) + if os.name == "nt": + self.assertEqual( p.nativeString(), "C:\\this\\path\\does\\not\\exist.ext") + self.assertFalse( p.isEmpty() ) + self.assertFalse( p.isValid() ) + + def testUNCPath( self ) : + p = Gaffer.FileSystemPath( "\\\\this.server\\path\\does\\not\\exist.ext" ) + + self.assertEqual( str( p ), "/this.server/path/does/not/exist.ext" ) + if os.name == "nt": + self.assertEqual( p.nativeString(), "\\\\this.server\\path\\does\\not\\exist.ext") + self.assertFalse( p.isEmpty() ) + self.assertFalse( p.isValid() ) + + def testPosixPath( self ) : + p = Gaffer.FileSystemPath( "/this/path/does/not/exist.ext" ) + + self.assertEqual( str( p ), "/this/path/does/not/exist.ext" ) + if os.name is not "nt": + self.assertEqual( p.nativeString(), "/this/path/does/not/exist.ext") + self.assertFalse( p.isEmpty() ) + self.assertFalse( p.isValid() ) + def testRelativePathChildren( self ) : os.chdir( self.temporaryDirectory() ) From a099a4f3b009d4cd9d12498a2b6e329e322ab877 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 17:21:51 -0400 Subject: [PATCH 076/243] use full path text to include the root, which on Windows may be the drive letter --- src/GafferUIModule/PathListingWidgetBinding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferUIModule/PathListingWidgetBinding.cpp b/src/GafferUIModule/PathListingWidgetBinding.cpp index 7fcb57b225f..739987b12f6 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.cpp +++ b/src/GafferUIModule/PathListingWidgetBinding.cpp @@ -996,7 +996,7 @@ IECore::PathMatcher getSelection( uint64_t treeViewAddress ) IECore::PathMatcher result; for( const auto &index : selectedIndices ) { - result.addPath( model->pathForIndex( index )->names() ); + result.addPath( model->pathForIndex( index )->string() ); } return result; } From afe707068dd91e0c8567b526f6564c8c489e6927 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 24 Sep 2018 17:48:04 -0400 Subject: [PATCH 077/243] Revert "use full path text to include the root, which on Windows may be the drive letter" This reverts commit 5ee4212358a7752ee30c7429cc641fb65beb77a1. --- src/GafferUIModule/PathListingWidgetBinding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferUIModule/PathListingWidgetBinding.cpp b/src/GafferUIModule/PathListingWidgetBinding.cpp index 739987b12f6..7fcb57b225f 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.cpp +++ b/src/GafferUIModule/PathListingWidgetBinding.cpp @@ -996,7 +996,7 @@ IECore::PathMatcher getSelection( uint64_t treeViewAddress ) IECore::PathMatcher result; for( const auto &index : selectedIndices ) { - result.addPath( model->pathForIndex( index )->string() ); + result.addPath( model->pathForIndex( index )->names() ); } return result; } From 4dfef497648b0f978514b06450a622cd9bba8cb8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 24 Sep 2018 19:38:23 -0400 Subject: [PATCH 078/243] filter for a drive letter pattern at the start of a path and make it the root if found --- src/Gaffer/FileSystemPath.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index c1664503de7..92748340076 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -138,6 +138,11 @@ void FileSystemPath::setFromString(const std::string &string) newRoot = newNames[0]; newNames.erase( newNames.begin() ); } + else if (newNames.size() && boost::regex_search(newNames[1].string(), result, driveLetterPattern)) + { + newRoot = newNames[1]; + newNames.erase(newNames.begin(), newNames.begin()+1); + } if (newRoot == this->root() && newNames == this->names() ) { From 015191ad26403107402bdbe679ff71915527e08e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 24 Sep 2018 19:38:45 -0400 Subject: [PATCH 079/243] add the root to the start of a file path if it isn't already there --- python/GafferUI/PathChooserDialogue.py | 4 +++- python/GafferUI/PathChooserWidget.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/python/GafferUI/PathChooserDialogue.py b/python/GafferUI/PathChooserDialogue.py index db20341408e..ff051ec1fb7 100644 --- a/python/GafferUI/PathChooserDialogue.py +++ b/python/GafferUI/PathChooserDialogue.py @@ -120,7 +120,9 @@ def pathChooserWidget( self ) : def __result( self ) : result = self.__pathChooserWidget.pathListingWidget().getSelection() - result = [ self.__path.copy().setFromString( x ) for x in result.paths() ] + path_root = self.__pathChooserWidget.pathListingWidget().getPath().root() + path_root = path_root if len(result.paths()) > 0 and not result.paths()[0].startswith(path_root) else "" + result = [ self.__path.copy().setFromString( path_root + x ) for x in result.paths() ] if not result and not self.__allowMultipleSelection : result = [ self.__path.copy() ] return result diff --git a/python/GafferUI/PathChooserWidget.py b/python/GafferUI/PathChooserWidget.py index d1a45549473..7ceb13d2c90 100644 --- a/python/GafferUI/PathChooserWidget.py +++ b/python/GafferUI/PathChooserWidget.py @@ -201,7 +201,9 @@ def __listingSelectionChanged( self, widget ) : return with Gaffer.BlockedConnection( self.__pathChangedConnection ) : - self.__path.setFromString( selection.paths()[0] ) + path_root = self.__directoryListing.getPath().root() + path_root = path_root if not selection.paths()[0].startswith(path_root) else "" + self.__path.setFromString( path_root + selection.paths()[0] ) # This slot is connected to the pathSelectedSignals of the children and just forwards # them to our own pathSelectedSignal. From 2d53435c8a52f50364da3ea5ad09c5e89a23ad84 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 28 Sep 2018 10:10:47 -0400 Subject: [PATCH 080/243] fix error with POSIX getting file owner --- src/Gaffer/FileSystemPath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 92748340076..e0064da9001 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -557,7 +557,7 @@ std::string FileSystemPath::getOwner( const std::string &pathString ) const std::string value; #ifndef _MSC_VER struct stat s; - stat(it->c_str(), &s); + stat(pathString(), &s); struct passwd *pw = getpwuid(s.st_uid); value = pw ? pw->pw_name : ""; #else From 62717447091ef74db5d05807f079a2749c4ea4c1 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 28 Sep 2018 10:25:12 -0400 Subject: [PATCH 081/243] fix typo from last commit --- src/Gaffer/FileSystemPath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index e0064da9001..d792daf1562 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -557,7 +557,7 @@ std::string FileSystemPath::getOwner( const std::string &pathString ) const std::string value; #ifndef _MSC_VER struct stat s; - stat(pathString(), &s); + stat(pathString, &s); struct passwd *pw = getpwuid(s.st_uid); value = pw ? pw->pw_name : ""; #else From c6d098c6b4409fba423d607a01300d2eadf125b2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 28 Sep 2018 10:39:08 -0400 Subject: [PATCH 082/243] okey dokey, fix that typo again --- src/Gaffer/FileSystemPath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index d792daf1562..16bce165893 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -557,7 +557,7 @@ std::string FileSystemPath::getOwner( const std::string &pathString ) const std::string value; #ifndef _MSC_VER struct stat s; - stat(pathString, &s); + stat(pathString.c_str(), &s); struct passwd *pw = getpwuid(s.st_uid); value = pw ? pw->pw_name : ""; #else From a585120b2de45e8e729eb80fc832eb22e2a5724c Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 30 Sep 2018 11:02:45 -0400 Subject: [PATCH 083/243] test to make sure we arent' looking for a name outside the existing array range --- src/Gaffer/FileSystemPath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 16bce165893..349fc5abc44 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -138,7 +138,7 @@ void FileSystemPath::setFromString(const std::string &string) newRoot = newNames[0]; newNames.erase( newNames.begin() ); } - else if (newNames.size() && boost::regex_search(newNames[1].string(), result, driveLetterPattern)) + else if (newNames.size() > 1 && boost::regex_search(newNames[1].string(), result, driveLetterPattern)) { newRoot = newNames[1]; newNames.erase(newNames.begin(), newNames.begin()+1); From 4b61bbc2f584649c2ed38b3253360eecc07a6dac Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 30 Sep 2018 11:03:03 -0400 Subject: [PATCH 084/243] add simple test to check truncating --- python/GafferTest/FileSystemPathTest.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index c1e9c206fd5..3fcb7dacd0b 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -374,6 +374,13 @@ def testSequences( self ) : c = p.children() self.assertEqual( len( c ), 8 ) + def testTruncateUntilValid( self ): + + p = Gaffer.FileSystemPath( "T" ) + print str( p ) + print str (p.truncateUntilValid() ) + self.assertEqual( str( p.truncateUntilValid() ), "" ) + def setUp( self ) : GafferTest.TestCase.setUp( self ) From 73bc22a150a918b54bf826d9fe92c9309fc71440 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 30 Sep 2018 11:51:09 -0400 Subject: [PATCH 085/243] Revert "add simple test to check truncating" This reverts commit 54314129d745edd77e5fa3837bb1d92f5702d1c6. --- python/GafferTest/FileSystemPathTest.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 3fcb7dacd0b..c1e9c206fd5 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -374,13 +374,6 @@ def testSequences( self ) : c = p.children() self.assertEqual( len( c ), 8 ) - def testTruncateUntilValid( self ): - - p = Gaffer.FileSystemPath( "T" ) - print str( p ) - print str (p.truncateUntilValid() ) - self.assertEqual( str( p.truncateUntilValid() ), "" ) - def setUp( self ) : GafferTest.TestCase.setUp( self ) From a9eeb7173767984023e71f7e63086a1b5e1859b6 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 30 Sep 2018 12:21:49 -0400 Subject: [PATCH 086/243] adapt paths for cross-platform testing --- python/GafferTest/ScriptNodeTest.py | 71 +++++++++++++++-------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/python/GafferTest/ScriptNodeTest.py b/python/GafferTest/ScriptNodeTest.py index 5b07adb8362..7dd9da2c0a2 100644 --- a/python/GafferTest/ScriptNodeTest.py +++ b/python/GafferTest/ScriptNodeTest.py @@ -159,11 +159,11 @@ def testSaveAndLoad( self ) : s["a2"]["op1"].setInput( s["a1"]["sum"] ) s["a2"]["op2"].setValue( 10 ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertTrue( s2["a2"]["op1"].getInput().isSame( s2["a1"]["sum"] ) ) @@ -173,7 +173,7 @@ def testLoadClearsFirst( self ) : s = Gaffer.ScriptNode() s["a1"] = GafferTest.AddNode() - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s.load() @@ -354,11 +354,11 @@ def testFrameRangeLoadAndSave( self ) : self.assertEqual( s["frameRange"]["start"].getValue(), 110 ) self.assertEqual( s["frameRange"]["end"].getValue(), 200 ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertEqual( s2["frameRange"]["start"].getValue(), 110 ) @@ -559,11 +559,11 @@ def testDynamicPlugSaveAndLoad( self ) : s["customSetting"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["customSetting"].setValue( 100 ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertEqual( s2["customSetting"].getValue(), 100 ) @@ -764,16 +764,16 @@ def testLoadingMovedScriptDoesntKeepOldFileName( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() - shutil.move( self.temporaryDirectory() + "/test.gfr", self.temporaryDirectory() + "/test2.gfr" ) + shutil.move( os.path.join( self.temporaryDirectory(), "test.gfr" ), os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) s = Gaffer.ScriptNode() - s["fileName"].setValue( self.temporaryDirectory() + "/test2.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) s.load() - self.assertEqual( s["fileName"].getValue(), self.temporaryDirectory() + "/test2.gfr" ) + self.assertEqual( s["fileName"].getValue(), os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) def testUnsavedChanges( self ) : @@ -791,7 +791,7 @@ def testUnsavedChanges( self ) : s["node"] = GafferTest.AddNode() self.assertEqual( s["unsavedChanges"].getValue(), True ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() self.assertEqual( s["unsavedChanges"].getValue(), False ) @@ -846,20 +846,20 @@ def testSerialiseToFile( self ) : s["n2"] = GafferTest.AddNode() s["n2"]["op1"].setInput( s["n1"]["sum"] ) - s.serialiseToFile( self.temporaryDirectory() + "/test.gfr" ) + s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertTrue( "n1" in s2 ) self.assertTrue( "n2" in s2 ) self.assertTrue( s2["n2"]["op1"].getInput().isSame( s2["n1"]["sum"] ) ) - s.serialiseToFile( self.temporaryDirectory() + "/test.gfr", filter = Gaffer.StandardSet( [ s["n2"] ] ) ) + s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ), filter = Gaffer.StandardSet( [ s["n2"] ] ) ) s3 = Gaffer.ScriptNode() - s3["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s3["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s3.load() self.assertTrue( "n1" not in s3 ) @@ -873,13 +873,13 @@ def testExecuteFile( self ) : s["n2"] = GafferTest.AddNode() s["n2"]["op1"].setInput( s["n1"]["sum"] ) - s.serialiseToFile( self.temporaryDirectory() + "/test.gfr" ) + s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2 = Gaffer.ScriptNode() self.assertRaises( RuntimeError, s2.executeFile, "thisFileDoesntExist.gfr" ) - s2.executeFile( self.temporaryDirectory() + "/test.gfr" ) + s2.executeFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) self.assertTrue( s2["n2"]["op1"].getInput().isSame( s2["n1"]["sum"] ) ) @@ -946,11 +946,11 @@ def testCustomVariables( self ) : p["value"].setValue( 20 ) self.assertEqual( s.context().get( "test" ), 20 ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertEqual( s2["variables"][p.getName()]["value"].getValue(), 20 ) @@ -961,7 +961,7 @@ def testFileNameVariables( self ) : s = Gaffer.ScriptNode() self.assertEqual( s.context().get( "script:name" ), "" ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) self.assertEqual( s.context().get( "script:name" ), "test" ) def testReloadWithCustomVariables( self ) : @@ -969,7 +969,7 @@ def testReloadWithCustomVariables( self ) : s = Gaffer.ScriptNode() s["variables"].addChild( Gaffer.NameValuePlug( "test", IECore.IntData( 10 ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s["variables"][0]["value"].setValue( 100 ) @@ -986,11 +986,11 @@ def testLoadCustomVariablesWithDefaultValues( self ) : s["variables"].addChild( p ) self.assertEqual( s.context().get( "test" ), 10 ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertEqual( s2["variables"][p.getName()]["value"].getValue(), 10 ) @@ -1129,7 +1129,7 @@ def testFileVersioning( self ) : self.assertEqual( Gaffer.Metadata.value( s, "serialiser:minorVersion" ), None ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:patchVersion" ), None ) - s.serialiseToFile( self.temporaryDirectory() + "/test.gfr" ) + s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:milestoneVersion" ), None ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:majorVersion" ), None ) @@ -1137,7 +1137,7 @@ def testFileVersioning( self ) : self.assertEqual( Gaffer.Metadata.value( s, "serialiser:patchVersion" ), None ) s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:milestoneVersion" ), Gaffer.About.milestoneVersion() ) @@ -1145,7 +1145,7 @@ def testFileVersioning( self ) : self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:minorVersion" ), Gaffer.About.minorVersion() ) self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:patchVersion" ), Gaffer.About.patchVersion() ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2.load() @@ -1166,11 +1166,11 @@ def testFileVersioningUpdatesOnSave( self ) : self.assertEqual( Gaffer.Metadata.value( s, "serialiser:minorVersion" ), 0 ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:patchVersion" ), 0 ) - s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) + s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) s2.load() self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:milestoneVersion" ), Gaffer.About.milestoneVersion() ) @@ -1255,7 +1255,7 @@ def testLineNumberForExecutionSyntaxError( self ) : def testFileNameInExecutionError( self ) : - fileName = self.temporaryDirectory() + "/test.gfr" + fileName = os.path.join( self.temporaryDirectory(), "test.gfr" ) with open( fileName, "w" ) as f : f.write( "a = 10\n" ) f.write( "a = iDontExist\n" ) @@ -1299,10 +1299,11 @@ def f( script, child ) : b = Gaffer.Box.create( s, Gaffer.StandardSet( [ s["n1"] ] ) ) Gaffer.PlugAlgo.promote( b["n1"]["op1"] ) - b.exportForReference( self.temporaryDirectory() + "/test.grf" ) + b.exportForReference( os.path.join( self.temporaryDirectory(), "test.grf" ) ) s["r"] = Gaffer.Reference() - s["r"].load( self.temporaryDirectory() + "/test.grf" ) + # since this will be a Gaffer native path, ensure it only has / on all OS + s["r"].load( os.path.join( self.temporaryDirectory(), "test.grf" ).replace( "\\", "/" ) ) s["r"]["op1"].setInput( s["n"]["sum"] ) @@ -1423,7 +1424,7 @@ def testImport( self ) : s1["frameRange"]["end"].setValue( 101 ) s1["variables"].addChild( Gaffer.NameValuePlug( "test", "test" ) ) - fileName = self.temporaryDirectory() + "/toImport.gfr" + fileName = os.path.join( self.temporaryDirectory(), "toImport.gfr" ) s1.serialiseToFile( fileName ) s2 = Gaffer.ScriptNode() @@ -1438,7 +1439,7 @@ def testImport( self ) : def testReadOnlyMetadata( self ) : - fileName = self.temporaryDirectory() + "/test.gfr" + fileName = os.path.join( self.temporaryDirectory(), "test.gfr" ) s = Gaffer.ScriptNode() self.assertFalse( Gaffer.MetadataAlgo.getReadOnly( s ) ) @@ -1460,7 +1461,7 @@ def testReadOnlyMetadata( self ) : s.load() self.assertTrue( Gaffer.MetadataAlgo.getReadOnly( s ) ) - s["fileName"].setValue( self.temporaryDirectory() + "/test2.gfr" ) + s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) self.assertFalse( Gaffer.MetadataAlgo.getReadOnly( s ) ) def testCancellationDuringLoad( self ) : From 6c93ce4cc94a8ef0aa79d2099ed4140de2882271 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 6 Oct 2018 13:17:54 -0400 Subject: [PATCH 087/243] GAFFEROSL_CODE_DIRECTORY must be a single directory --- bin/gaffer_env.bat | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat index 44a4ed3dc85..3ba35cc8307 100644 --- a/bin/gaffer_env.bat +++ b/bin/gaffer_env.bat @@ -24,7 +24,8 @@ set OSLHOME=%GAFFER_ROOT% set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% -set GAFFEROSL_CODE_DIRECTORY=%OSL_SHADER_PATHS%;%USERPROFILE%\gaffer\oslCode +set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode +set PATH=%GAFFER_OSL_CODE_DIRECTORY%;%PATH% set PYTHONHOME=%GAFFER_ROOT% From 1828317c11133117371ae382c7894f1838f386c3 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 6 Oct 2018 13:37:32 -0400 Subject: [PATCH 088/243] fix OSL expressions not working because it wasn't splitting the OSL path environment variable correctly on windows --- src/GafferOSL/OSLExpressionEngine.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/GafferOSL/OSLExpressionEngine.cpp b/src/GafferOSL/OSLExpressionEngine.cpp index e1984395d0a..62ff1a06ae3 100644 --- a/src/GafferOSL/OSLExpressionEngine.cpp +++ b/src/GafferOSL/OSLExpressionEngine.cpp @@ -759,7 +759,11 @@ class OSLExpressionEngine : public Gaffer::Expression::Engine // prepend it to the source. shaderName = "oslExpression" + MurmurHash().append( result ).toString(); - result = "#include \"GafferOSL/Expression.h\"\n\nshader " + shaderName + " " + result; + #ifdef _MSC_VER + result = "#include \"GafferOSL\\Expression.h\"\n\nshader " + shaderName + " " + result; + #else + result = "#include \"GafferOSL/Expression.h\"\n\nshader " + shaderName + " " + result; + #endif return result; } @@ -787,7 +791,11 @@ class OSLExpressionEngine : public Gaffer::Expression::Engine vector options; if( const char *includePaths = getenv( "OSL_SHADER_PATHS" ) ) { - StringAlgo::tokenize( includePaths, ':', options ); + #ifdef _MSC_VER + StringAlgo::tokenize( includePaths, ';', options ); + #else + StringAlgo::tokenize( includePaths, ':', options ); + #endif for( vector::iterator it = options.begin(), eIt = options.end(); it != eIt; ++it ) { it->insert( 0, "-I" ); From 00a13887ffa84159a15f4abe708c41b95d7b2ff2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 16 Nov 2018 12:08:38 -0500 Subject: [PATCH 089/243] REBASE: merge this with previous path.cpp change --- src/Gaffer/Path.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/Path.cpp b/src/Gaffer/Path.cpp index 761422ec726..afbedeed723 100644 --- a/src/Gaffer/Path.cpp +++ b/src/Gaffer/Path.cpp @@ -107,7 +107,7 @@ void Path::setRoot( IECore::InternedString &newRoot ) emitPathChanged(); } -const bool Path::isEmpty() const +bool Path::isEmpty() const { return m_names.empty() && m_root.string().empty(); } From 328f6c3bebd369a426339ce3cc210415afbb1f84 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 16 Nov 2018 12:39:03 -0500 Subject: [PATCH 090/243] export for Windows linking --- include/Gaffer/ContextAlgo.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Gaffer/ContextAlgo.h b/include/Gaffer/ContextAlgo.h index 3756707eb05..2fea5af28d7 100644 --- a/include/Gaffer/ContextAlgo.h +++ b/include/Gaffer/ContextAlgo.h @@ -62,7 +62,7 @@ class GAFFER_API GlobalScope : boost::noncopyable GlobalScope( const Context *context, const Plug *plug ); ~GlobalScope(); - struct Registration + struct GAFFER_API Registration { Registration( IECore::TypeId plugTypeId, const std::initializer_list &variablesToRemove ); }; From 1956d4854c10c2cdfd5dffcc96044364bf8f8aa2 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 16 Nov 2018 16:59:14 -0500 Subject: [PATCH 091/243] correct cmake syntax --- contrib/cmake/CMakeLists.txt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index 1991d662a70..3afaceedbeb 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -6,13 +6,12 @@ set (CMAKE_CXX_STANDARD 11) # Declare a Cortex Project project( Gaffer ) -# Declare the version - - -option( WITH_TESTS "Compile tests" ON ) +option( WITH_TESTS "Compile tests" OFF ) set( GAFFER_SOURCE_DIR ${CMAKE_SOURCE_DIR}/../.. ) +# Declare the version + file( READ ${GAFFER_SOURCE_DIR}/SConstruct SCONSTRUCT) string( REGEX MATCH "gafferMilestoneVersion = ([0-9]+)" ${SCONSTRUCT} ) @@ -504,7 +503,7 @@ foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) if( DARWIN ) set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".so" ) set_target_properties( _${GAFFER_LIB} PROPERTIES PREFIX "" ) - elif( WINDOWS ) + elseif( WINDOWS ) set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB} PROPERTIES PREFIX "" ) @@ -515,9 +514,8 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) if( DARWIN ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".so" ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) - elif( WINDOWS ) + elseif( WINDOWS ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) endif() From 47ad4219c8b695a80618587a4a311104aedfaae1 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 17 Nov 2018 14:24:26 -0500 Subject: [PATCH 092/243] split OSL paths from the environment based on OS native separators --- src/GafferOSL/OSLCode.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/GafferOSL/OSLCode.cpp b/src/GafferOSL/OSLCode.cpp index e9ba6e8dcc8..95f54abb45b 100644 --- a/src/GafferOSL/OSLCode.cpp +++ b/src/GafferOSL/OSLCode.cpp @@ -283,7 +283,11 @@ boost::filesystem::path compile( const std::string &shaderName, const std::strin vector options; if( const char *includePaths = getenv( "OSL_SHADER_PATHS" ) ) { - StringAlgo::tokenize( includePaths, ':', options ); + #ifdef _MSC_VER + StringAlgo::tokenize( includePaths, ';', options ); + #else + StringAlgo::tokenize( includePaths, ':', options ); + #endif for( vector::iterator it = options.begin(), eIt = options.end(); it != eIt; ++it ) { it->insert( 0, "-I" ); From 1a2df389c1eb7c3848ceb9b2d682d36554e7bad5 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 17 Nov 2018 14:29:37 -0500 Subject: [PATCH 093/243] Revert "convert OSL shader searching to cross platform" This reverts commit 219ecdaccb7fe2bc8171bb9377c19b268cec9009. --- startup/gui/menus.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/startup/gui/menus.py b/startup/gui/menus.py index 1f94b522e94..2c40a9c12e0 100644 --- a/startup/gui/menus.py +++ b/startup/gui/menus.py @@ -446,17 +446,14 @@ def __shaderNodeCreator( nodeName, shaderName ) : # - [^/]*$ matches the rest of the shader name, ensuring it # doesn't include any directory separators. - path_separator = os.path.sep - if os.name == "nt": # need double backslash on Windows to prevent it being treated as an escape character - path_separator = path_separator + path_separator - re_expression = "(?!__)(^|.*{sep})(? Date: Sat, 17 Nov 2018 17:56:32 -0500 Subject: [PATCH 094/243] handle Windows paths properly for OSL shaders and conform to forward slash standard for shader paths --- python/GafferSceneUI/ShaderUI.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/python/GafferSceneUI/ShaderUI.py b/python/GafferSceneUI/ShaderUI.py index b283bf54494..52213c918e2 100644 --- a/python/GafferSceneUI/ShaderUI.py +++ b/python/GafferSceneUI/ShaderUI.py @@ -284,10 +284,10 @@ def __shaderSubMenu( searchPaths, extensions, nodeCreator, matchExpression, sear if path in pathsVisited : continue - for root, dirs, files in os.walk( path ) : + for root, dirs, files in os.walk( path ) : for file in files : if os.path.splitext( file )[1][1:] in extensions : - shaderPath = os.path.join( root, file ).partition( path )[-1].lstrip( "/" ) + shaderPath = os.path.join( root, file ).partition( path )[-1].lstrip( os.path.sep ) if __hiddenShadersPathMatcher.match( shaderPath ) & IECore.PathMatcher.Result.ExactMatch : continue if shaderPath not in shaders and matchExpression.match( shaderPath ) : @@ -296,18 +296,18 @@ def __shaderSubMenu( searchPaths, extensions, nodeCreator, matchExpression, sear pathsVisited.add( path ) shaders = sorted( list( shaders ) ) - categorisedShaders = [ x for x in shaders if "/" in x ] - uncategorisedShaders = [ x for x in shaders if "/" not in x ] + categorisedShaders = [ x for x in shaders if os.path.sep in x ] + uncategorisedShaders = [ x for x in shaders if os.path.sep not in x ] shadersAndMenuPaths = [] for shader in categorisedShaders : - shadersAndMenuPaths.append( ( shader, "/" + shader ) ) + shadersAndMenuPaths.append( ( shader.replace("\\", "/"), "/" + shader.replace("\\", "/") ) ) for shader in uncategorisedShaders : if not categorisedShaders : - shadersAndMenuPaths.append( ( shader, "/" + shader ) ) + shadersAndMenuPaths.append( ( shader.replace("\\", "/"), "/" + shader.replace("\\", "/") ) ) else : - shadersAndMenuPaths.append( ( shader, "/Other/" + shader ) ) + shadersAndMenuPaths.append( ( shader.replace("\\", "/"), "/Other/" + shader.replace("\\", "/") ) ) result = IECore.MenuDefinition() for shader, menuPath in shadersAndMenuPaths : From 9e557ea6dd0781ee95bb773930e6dd0cf52b2139 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 17 Nov 2018 17:57:06 -0500 Subject: [PATCH 095/243] conform OSLCode shader path to forward slash standard --- src/GafferOSL/OSLCode.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/GafferOSL/OSLCode.cpp b/src/GafferOSL/OSLCode.cpp index 95f54abb45b..43189d813bb 100644 --- a/src/GafferOSL/OSLCode.cpp +++ b/src/GafferOSL/OSLCode.cpp @@ -51,6 +51,8 @@ #include "boost/bind.hpp" #include "boost/filesystem.hpp" +#include "boost/algorithm/string/replace.hpp" + #include using namespace std; @@ -263,6 +265,7 @@ boost::filesystem::path compile( const std::string &shaderName, const std::strin // Write the source code out. const std::string tempOSLFileName = ( tempDirectory / ( shaderName + ".osl" ) ).string(); + std::ofstream f( tempOSLFileName.c_str() ); if( !f.good() ) { @@ -330,7 +333,9 @@ class CompileProcess : public Gaffer::Process string shaderName; string shaderSource = generate( oslCode, shaderName ); boost::filesystem::path shaderFile = compile( shaderName, shaderSource ); - oslCode->namePlug()->setValue( shaderFile.replace_extension().string() ); + std::string shaderFileString = shaderFile.replace_extension().string(); + boost::replace_all( shaderFileString, "\\", "/" ); // Convert \ from Windows paths so shader can be found + oslCode->namePlug()->setValue( shaderFileString ); oslCode->typePlug()->setValue( "osl:shader" ); } catch( ... ) From d51923b96834f1e997902a6687884d06ea6551a8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 17 Nov 2018 18:45:24 -0500 Subject: [PATCH 096/243] make gaffer batch file more like Linux version --- bin/gaffer.bat | 70 +++++++++++++++++++++++++++++++++++++++++++++- bin/gaffer_env.bat | 57 ------------------------------------- 2 files changed, 69 insertions(+), 58 deletions(-) delete mode 100644 bin/gaffer_env.bat diff --git a/bin/gaffer.bat b/bin/gaffer.bat index c9b96294619..01ddeec366d 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -1 +1,69 @@ -python %GAFFER_ROOT%/bin/gaffer.py %1 %2 %3 %4 %5 %6 %7 %8 \ No newline at end of file +SETLOCAL +rem @echo off + +set GAFFER_ROOT=%~dp0%.. + +set HOME=%USERPROFILE% + +set IECOREGL_SHADER_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_PATHS% +set IECOREGL_SHADER_INCLUDE_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_INCLUDE_PATHS% + +set IECORE_FONT_PATHS=%GAFFER_ROOT%\fonts;%IECORE_FONT_PATHS% +set IECORE_OP_PATHS=%GAFFER_ROOT%\ops;%IECORE_OP_PATHS% + +set IECORE_OP_PRESET_PATHS=%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets;%IECORE_OP_PRESET_PATHS% +set IECORE_PROCEDURAL_PATHS=%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals;%IECORE_PROCEDURAL_PATHS% +set IECORE_PROCEDURAL_PRESET_PATHS=%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets;%IECORE_PROCEDURAL_PRESET_PATHS% + +set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat + +set GAFFER_APP_PATHS=%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps;%GAFFER_APP_PATHS% + +set GAFFER_STARTUP_PATHS=%USERPROFILE%\gaffer\startup;%GAFFER_STARTUP_PATHS%;%GAFFER_ROOT%\startup + +set GAFFERUI_IMAGE_PATHS=%GAFFER_ROOT%\graphics;%GAFFERUI_IMAGE_PATHS% + +set OSLHOME=%GAFFER_ROOT% + +set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% + +set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode +set PATH=%GAFFER_OSL_CODE_DIRECTORY%;%PATH% + +set PYTHONHOME=%GAFFER_ROOT% + +set PYTHONPATH=%GAFFER_ROOT%\python;%PYTHONPATH% + +set PATH=%GAFFER_ROOT%\lib;%PATH% + +set QT_OPENGL=desktop +set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins + +set PATH=%GAFFER_ROOT%\bin;%PATH% + +rem Appleseed +rem if not defined APPLESEED ( +rem if EXIST %GAFFER_ROOT%\appleseed ( +rem set APPLESEED=%GAFFER_ROOT%\appleseed +rem ) +rem ) + +rem if defined APPLESEED ( +rem set PATH=%APPLESEED%\bin;%APPLESEED%\lib;%PATH% +rem set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% +rem set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% +rem set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% +rem ) + + +rem Arnold +rem if defined ARNOLD_ROOT ( + rem set ARNOLD_PLUGIN_PATH=%GAFFER_ROOT%\arnold\plugins;%ARNOLD_PLUGIN_PATH% + rem set PATH=%PATH%;%ARNOLD_ROOT%\bin + rem set PYTHONPATH=%PYTHONPATH%;%ARNOLD_ROOT%\python +rem ) + +@echo on +python %GAFFER_ROOT%/bin/gaffer.py %* + +ENDLOCAL \ No newline at end of file diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat deleted file mode 100644 index 3ba35cc8307..00000000000 --- a/bin/gaffer_env.bat +++ /dev/null @@ -1,57 +0,0 @@ -set GAFFER_ROOT=%~dp0%.. - -set HOME=%USERPROFILE% - -set IECOREGL_SHADER_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_PATHS% -set IECOREGL_SHADER_INCLUDE_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_INCLUDE_PATHS% - -set IECORE_FONT_PATHS=%GAFFER_ROOT%\fonts;%IECORE_FONT_PATHS% -set IECORE_OP_PATHS=%GAFFER_ROOT%\ops;%IECORE_OP_PATHS% - -set IECORE_OP_PRESET_PATHS=%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets;%IECORE_OP_PRESET_PATHS% -set IECORE_PROCEDURAL_PATHS=%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals;%IECORE_PROCEDURAL_PATHS% -set IECORE_PROCEDURAL_PRESET_PATHS=%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets;%IECORE_PROCEDURAL_PRESET_PATHS% - -set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat - -set GAFFER_APP_PATHS=%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps;%GAFFER_APP_PATHS% - -set GAFFER_STARTUP_PATHS=%USERPROFILE%\gaffer\startup;%GAFFER_STARTUP_PATHS%;%GAFFER_ROOT%\startup - -set GAFFERUI_IMAGE_PATHS=%GAFFER_ROOT%\graphics;%GAFFERUI_IMAGE_PATHS% - -set OSLHOME=%GAFFER_ROOT% - -set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% - -set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode -set PATH=%GAFFER_OSL_CODE_DIRECTORY%;%PATH% - -set PYTHONHOME=%GAFFER_ROOT% - -set PYTHONPATH=%GAFFER_ROOT%\python;%PYTHONPATH% - -set PATH=%GAFFER_ROOT%\lib;%PATH% - -set QT_OPENGL=desktop -set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins - -set PATH=%GAFFER_ROOT%\bin;%PATH% - -rem Appleseed -rem set APPLESEED=%GAFFER_ROOT%\appleseed -rem set PATH=%APPLESEED%\lib;%PATH% -rem set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% -rem set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% -rem set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% -rem set PATH=%APPLESEED%\bin;%PATH% - - -rem Arnold -set ARNOLD_PLUGIN_PATH=%GAFFER_ROOT%\arnold\plugins;%ARNOLD_PLUGIN_PATH% -set PATH=%PATH%;%ARNOLD_ROOT%\bin -set PYTHONPATH=%PYTHONPATH%;%ARNOLD_ROOT%\python - - -rem Run Gaffer -rem python %GAFFER_ROOT%/bin/gaffer.py %1 %2 From 5620ea3ff312b03173560e1677707b4350f7e171 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 23 Nov 2018 15:59:11 -0500 Subject: [PATCH 097/243] remove out of date comment REBASE --- contrib/cmake/buildWindows.bat | 1 - 1 file changed, 1 deletion(-) diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildWindows.bat index cc9ba98173e..f23ce9a63c6 100644 --- a/contrib/cmake/buildWindows.bat +++ b/contrib/cmake/buildWindows.bat @@ -1,4 +1,3 @@ -rem We hide the CMakeLists.txt here and copy it to root so it works correctly set ROOT_DIR=%~dp0%..\.. cd %ROOT_DIR% From cc33364070ed1e4b9442f9cefab55d513ebc96df Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 28 Nov 2018 18:40:34 -0500 Subject: [PATCH 098/243] gaffer.bat should return with non-zero value if there are errors --- bin/gaffer.bat | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 01ddeec366d..b9b9a8911f1 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -65,5 +65,10 @@ rem ) @echo on python %GAFFER_ROOT%/bin/gaffer.py %* +if %ERRORLEVEL% NEQ 0 ( + echo "Error(s) running Gaffer" + exit /b %ERRORLEVEL% + ENDLOCAL +) ENDLOCAL \ No newline at end of file From 561d25335a85ec83065345cb6e40fda95429493b Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:47:06 -0700 Subject: [PATCH 099/243] Exported symbols for src/GafferCortex --- include/GafferCortex/ParameterHandler.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/GafferCortex/ParameterHandler.h b/include/GafferCortex/ParameterHandler.h index 61a1feee398..de842eb30db 100644 --- a/include/GafferCortex/ParameterHandler.h +++ b/include/GafferCortex/ParameterHandler.h @@ -48,8 +48,6 @@ #include "GafferCortex/Export.h" -#include "GafferCortex/Export.h" - namespace GafferCortex { From b13f1ada6cea942eed9e7f10c6075eeb1c868d45 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Tue, 9 May 2017 23:51:42 -0700 Subject: [PATCH 100/243] Exported symbols for src/GafferImage --- include/GafferImage/Format.h | 2 -- include/GafferImage/ImageAlgo.h | 2 -- 2 files changed, 4 deletions(-) diff --git a/include/GafferImage/Format.h b/include/GafferImage/Format.h index 63aecea5198..d52e01ec2b1 100644 --- a/include/GafferImage/Format.h +++ b/include/GafferImage/Format.h @@ -50,8 +50,6 @@ IECORE_POP_DEFAULT_VISIBILITY #include "GafferImage/Export.h" -#include "GafferImage/Export.h" - namespace GafferImage { diff --git a/include/GafferImage/ImageAlgo.h b/include/GafferImage/ImageAlgo.h index 3111d0001e2..d5209b7a091 100644 --- a/include/GafferImage/ImageAlgo.h +++ b/include/GafferImage/ImageAlgo.h @@ -52,8 +52,6 @@ IECORE_POP_DEFAULT_VISIBILITY #include "GafferImage/Export.h" -#include "GafferImage/Export.h" - namespace GafferImage { From 0d8943ca4c9e73282de6e3137c74e55ddd3d9f7e Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Mon, 3 Jul 2017 22:13:50 -0700 Subject: [PATCH 101/243] Add missing exports --- src/GafferSceneUI/ContextAlgo.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/GafferSceneUI/ContextAlgo.cpp b/src/GafferSceneUI/ContextAlgo.cpp index 058933234cd..9dd1fdcc5c6 100644 --- a/src/GafferSceneUI/ContextAlgo.cpp +++ b/src/GafferSceneUI/ContextAlgo.cpp @@ -44,8 +44,6 @@ #include "GafferSceneUI/ContextAlgo.h" -#include "GafferSceneUI/ContextAlgo.h" - using namespace IECore; using namespace Gaffer; using namespace GafferScene; From 400ad409001cfd38bceca3fb8098ee3043653e90 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 10:58:35 -0800 Subject: [PATCH 102/243] GafferImage exports --- include/GafferImage/Format.h | 2 ++ include/GafferImage/ImageAlgo.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/GafferImage/Format.h b/include/GafferImage/Format.h index d52e01ec2b1..63aecea5198 100644 --- a/include/GafferImage/Format.h +++ b/include/GafferImage/Format.h @@ -50,6 +50,8 @@ IECORE_POP_DEFAULT_VISIBILITY #include "GafferImage/Export.h" +#include "GafferImage/Export.h" + namespace GafferImage { diff --git a/include/GafferImage/ImageAlgo.h b/include/GafferImage/ImageAlgo.h index d5209b7a091..3111d0001e2 100644 --- a/include/GafferImage/ImageAlgo.h +++ b/include/GafferImage/ImageAlgo.h @@ -52,6 +52,8 @@ IECORE_POP_DEFAULT_VISIBILITY #include "GafferImage/Export.h" +#include "GafferImage/Export.h" + namespace GafferImage { From d19ae1939a7a45d3fa19f1802dc2e792538245ae Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 11:05:35 -0800 Subject: [PATCH 103/243] GafferCortex exports --- include/GafferCortex/ParameterHandler.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/GafferCortex/ParameterHandler.h b/include/GafferCortex/ParameterHandler.h index de842eb30db..61a1feee398 100644 --- a/include/GafferCortex/ParameterHandler.h +++ b/include/GafferCortex/ParameterHandler.h @@ -48,6 +48,8 @@ #include "GafferCortex/Export.h" +#include "GafferCortex/Export.h" + namespace GafferCortex { From 09d480810a027868885a535927a97f3b5e0962b6 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 11:22:35 -0800 Subject: [PATCH 104/243] Missing header --- src/GafferSceneUI/ContextAlgo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/GafferSceneUI/ContextAlgo.cpp b/src/GafferSceneUI/ContextAlgo.cpp index 9dd1fdcc5c6..058933234cd 100644 --- a/src/GafferSceneUI/ContextAlgo.cpp +++ b/src/GafferSceneUI/ContextAlgo.cpp @@ -44,6 +44,8 @@ #include "GafferSceneUI/ContextAlgo.h" +#include "GafferSceneUI/ContextAlgo.h" + using namespace IECore; using namespace Gaffer; using namespace GafferScene; From 32fbf8d93ab33d0cc5d961e445f7f2cf01d0c4e7 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Wed, 27 Dec 2017 20:52:45 -0800 Subject: [PATCH 105/243] Added CMake files and batch file to build on windows --- contrib/cmake/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index 3afaceedbeb..af0539c04ab 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -516,6 +516,7 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) elseif( WINDOWS ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) endif() From 4f202ea44ab2b160f88bc0a3ebbfaed9ac080fa2 Mon Sep 17 00:00:00 2001 From: Alex Fuller Date: Thu, 28 Dec 2017 16:57:17 -0800 Subject: [PATCH 106/243] Startup fixes for windows, added batch launcher and env setup --- bin/gaffer.bat | 2 +- bin/gaffer_env.bat | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 bin/gaffer_env.bat diff --git a/bin/gaffer.bat b/bin/gaffer.bat index b9b9a8911f1..c2c186dfb36 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -71,4 +71,4 @@ if %ERRORLEVEL% NEQ 0 ( ENDLOCAL ) -ENDLOCAL \ No newline at end of file +ENDLOCAL diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat new file mode 100644 index 00000000000..bfe40576d8d --- /dev/null +++ b/bin/gaffer_env.bat @@ -0,0 +1,56 @@ +set GAFFER_ROOT=%~dp0%.. + +set HOME=%USERPROFILE% + +set IECOREGL_SHADER_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_PATHS% +set IECOREGL_SHADER_INCLUDE_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_INCLUDE_PATHS% + +set IECORE_FONT_PATHS=%GAFFER_ROOT%\fonts;%IECORE_FONT_PATHS% +set IECORE_OP_PATHS=%GAFFER_ROOT%\ops;%IECORE_OP_PATHS% + +set IECORE_OP_PRESET_PATHS=%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets;%IECORE_OP_PRESET_PATHS% +set IECORE_PROCEDURAL_PATHS=%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals;%IECORE_PROCEDURAL_PATHS% +set IECORE_PROCEDURAL_PRESET_PATHS=%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets;%IECORE_PROCEDURAL_PRESET_PATHS% + +set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat + +set GAFFER_APP_PATHS=%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps;%GAFFER_APP_PATHS% + +set GAFFER_STARTUP_PATHS=%USERPROFILE%\gaffer\startup;%GAFFER_STARTUP_PATHS%;%GAFFER_ROOT%\startup + +set GAFFERUI_IMAGE_PATHS=%GAFFER_ROOT%\graphics;%GAFFERUI_IMAGE_PATHS% + +set OSLHOME=%GAFFER_ROOT% + +set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% + +set GAFFEROSL_CODE_DIRECTORY=%OSL_SHADER_PATHS%;%USERPROFILE%\gaffer\oslCode + +set PYTHONHOME=%GAFFER_ROOT% + +set PYTHONPATH=%GAFFER_ROOT%\python;%PYTHONPATH% + +set PATH=%GAFFER_ROOT%\lib;%PATH% + +set QT_OPENGL=desktop +set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins + +set PATH=%GAFFER_ROOT%\bin;%PATH% + +rem Appleseed +set APPLESEED=%GAFFER_ROOT%\appleseed +set PATH=%APPLESEED%\lib;%PATH% +set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% +set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% +set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% +set PATH=%APPLESEED%\bin;%PATH% + + +rem Arnold +set ARNOLD_PLUGIN_PATH=%GAFFER_ROOT%\arnold\plugins;%ARNOLD_PLUGIN_PATH% +set PATH=%PATH%;%ARNOLD_ROOT%\bin +set PYTHONPATH=%PYTHONPATH%;%ARNOLD_ROOT%\python + + +rem Run Gaffer +rem python %GAFFER_ROOT%/bin/gaffer.py %1 %2 From 855aaffafcec234a67ca5eede4e1147aa5400d70 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 10 Apr 2018 20:44:24 -0400 Subject: [PATCH 107/243] make path separators cross platform --- src/GafferImage/Text.cpp | 2 +- src/GafferScene/Text.cpp | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/GafferImage/Text.cpp b/src/GafferImage/Text.cpp index f8c852eb67f..5d8695b46c5 100644 --- a/src/GafferImage/Text.cpp +++ b/src/GafferImage/Text.cpp @@ -94,7 +94,7 @@ typedef std::shared_ptr FacePtr; FacePtr faceLoader( const std::string &font, size_t &cost ) { const char *e = getenv( "IECORE_FONT_PATHS" ); - IECore::SearchPath sp( e ? e : "", ENVSEP ); + IECore::SearchPath sp( e ? e : "" ); std::string file = sp.find( font ).string(); if( !file.size() ) diff --git a/src/GafferScene/Text.cpp b/src/GafferScene/Text.cpp index b560f3330d8..4d99b7c6048 100644 --- a/src/GafferScene/Text.cpp +++ b/src/GafferScene/Text.cpp @@ -63,8 +63,7 @@ namespace Detail FontPtr fontGetter( const std::string &fileName, size_t &cost ) { const char *e = getenv( "IECORE_FONT_PATHS" ); - - IECore::SearchPath sp( e ? e : "", ENVSEP ); + IECore::SearchPath sp( e ? e : "" ); std::string resolvedFileName = sp.find( fileName ).string(); if( !resolvedFileName.size() ) From eadaa4bf71d228f6aa3305ab6a048bc4f0b07238 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 26 Jul 2018 13:50:43 -0400 Subject: [PATCH 108/243] Revert "change readonly testing to be cross-platform" This reverts commit 23a2ae5a7e6ff8224be66ec96abf7a4f10b2db01. --- src/Gaffer/ScriptNode.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index b6aa463d224..cbc6d9555c5 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -59,6 +59,8 @@ #include +#include + using namespace Gaffer; ////////////////////////////////////////////////////////////////////////// @@ -838,9 +840,10 @@ void ScriptNode::plugSet( Plug *plug ) testOpen.close(); } + context()->set( g_scriptName, fileName.stem().string() ); MetadataAlgo::setReadOnly( this, - isReadOnly, + boost::filesystem::exists( fileName ) && 0 != access( fileName.c_str(), W_OK ), /* persistent = */ false ); } From 543f49b8511671c1b42b7d4a6de4d33ee24000e8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 26 Jul 2018 18:22:47 -0400 Subject: [PATCH 109/243] Revert "Revert "change readonly testing to be cross-platform"" This reverts commit 7fa5071ed90dfe96d133c925ae44d9fd62d3df9e. --- src/Gaffer/ScriptNode.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index cbc6d9555c5..b6aa463d224 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -59,8 +59,6 @@ #include -#include - using namespace Gaffer; ////////////////////////////////////////////////////////////////////////// @@ -840,10 +838,9 @@ void ScriptNode::plugSet( Plug *plug ) testOpen.close(); } - context()->set( g_scriptName, fileName.stem().string() ); MetadataAlgo::setReadOnly( this, - boost::filesystem::exists( fileName ) && 0 != access( fileName.c_str(), W_OK ), + isReadOnly, /* persistent = */ false ); } From b40abb5124cce06669893a5c99852b1c14279530 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 6 Aug 2018 19:37:44 -0400 Subject: [PATCH 110/243] temporarily don't load Appleseed while a crash is being sorted out --- bin/gaffer_env.bat | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat index bfe40576d8d..44a4ed3dc85 100644 --- a/bin/gaffer_env.bat +++ b/bin/gaffer_env.bat @@ -38,12 +38,12 @@ set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins set PATH=%GAFFER_ROOT%\bin;%PATH% rem Appleseed -set APPLESEED=%GAFFER_ROOT%\appleseed -set PATH=%APPLESEED%\lib;%PATH% -set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% -set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% -set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% -set PATH=%APPLESEED%\bin;%PATH% +rem set APPLESEED=%GAFFER_ROOT%\appleseed +rem set PATH=%APPLESEED%\lib;%PATH% +rem set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% +rem set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% +rem set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% +rem set PATH=%APPLESEED%\bin;%PATH% rem Arnold From 70ac8ae8bdeb2f6aeb349b11df473ace006ed2cd Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 19:17:25 -0400 Subject: [PATCH 111/243] add test to make sure the owner is not empty (this was causing a false pass in the Owner test on Windows before adapting FileSystemPath.cpp to Windows) add workaround on Windows to get the file owner - Python does not have a reliable native function for this --- python/GafferTest/FileSystemPathTest.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index c1e9c206fd5..4be67a4f76f 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -234,6 +234,17 @@ def testModificationTimes( self ) : self.assertTrue( isinstance( mt, datetime.datetime ) ) self.assertLess( (datetime.datetime.utcnow() - mt).total_seconds(), 2 ) + def testOwnerIsNotEmpty( self ) : + + p = Gaffer.FileSystemPath( self.temporaryDirectory() ) + p.append( "t" ) + + with open( str( p ), "w" ) as f : + f.write( "AAAA" ) + + o = p.property( "fileSystem:owner" ) + self.assertFalse( o == "" ) + def testOwner( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) From da5b20bdd27319a366cb89e71bc4d346c3bc4405 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 20:11:30 -0400 Subject: [PATCH 112/243] Windows can't delete the temp folder (in the GafferTest.TestCase.tearDown function) because the test is still working in that directory, resulting in an error --- python/GafferTest/FileSystemPathTest.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index 4be67a4f76f..eb119a58e97 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -410,5 +410,7 @@ def getFileOwner( self, filepath ): fileOwner = fileInfo[-11] + GafferTest.TestCase.tearDown( self ) + if __name__ == "__main__": unittest.main() From 4efaca1a408c818c87becc99323cc3032bd768d3 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 20:33:01 -0400 Subject: [PATCH 113/243] remove unnecessary test in favor of equivalent test in existing TestUser test --- python/GafferTest/FileSystemPathTest.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index eb119a58e97..a4e349de304 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -234,17 +234,6 @@ def testModificationTimes( self ) : self.assertTrue( isinstance( mt, datetime.datetime ) ) self.assertLess( (datetime.datetime.utcnow() - mt).total_seconds(), 2 ) - def testOwnerIsNotEmpty( self ) : - - p = Gaffer.FileSystemPath( self.temporaryDirectory() ) - p.append( "t" ) - - with open( str( p ), "w" ) as f : - f.write( "AAAA" ) - - o = p.property( "fileSystem:owner" ) - self.assertFalse( o == "" ) - def testOwner( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) From 06d383dff81c12a55f0c999731f0ebc89ca07142 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 22 Aug 2018 21:29:24 -0400 Subject: [PATCH 114/243] convert existing tests to work cross-platform add tests for nativeStrings create separate function to get file owner cross-platform since it is used multiple times --- python/GafferTest/FileSystemPathTest.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index a4e349de304..a4609df30ef 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -398,7 +398,6 @@ def getFileOwner( self, filepath ): self.assertTrue( len( fileInfo ) > 11 ) fileOwner = fileInfo[-11] - GafferTest.TestCase.tearDown( self ) if __name__ == "__main__": From be29a35da7f24554e22ad04e62b55ef9dc6e8501 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 13:08:48 -0400 Subject: [PATCH 115/243] add proper handling of drive letter paths for Windows --- src/Gaffer/FileSystemPath.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 349fc5abc44..2c9abe35465 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -529,12 +529,15 @@ std::string FileSystemPath::nativeString() const boost::smatch regex_result; std::string result = this->root(); +<<<<<<< HEAD #ifdef _MSC_VER if( this->root() == "/" ) { result = g_uncPrefix; } #endif +======= +>>>>>>> add proper handling of drive letter paths for Windows if( boost::regex_match( result, regex_result, driveLetterPattern ) ) { result += separator; From b4ea8a5ecd145bae875204f3ee984841e8f981c6 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 17:08:26 -0400 Subject: [PATCH 116/243] fix UNC paths - need to make sure nativePath starts with "\\" and that we are not omitting the leading "/" because of errors in string parsing --- src/Gaffer/FileSystemPath.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 2c9abe35465..14bcd2fc74b 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -529,15 +529,14 @@ std::string FileSystemPath::nativeString() const boost::smatch regex_result; std::string result = this->root(); -<<<<<<< HEAD + #ifdef _MSC_VER if( this->root() == "/" ) { result = g_uncPrefix; } #endif -======= ->>>>>>> add proper handling of drive letter paths for Windows + if( boost::regex_match( result, regex_result, driveLetterPattern ) ) { result += separator; From 684961fbef64493c3352f518489969759df92307 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 26 Aug 2018 17:21:51 -0400 Subject: [PATCH 117/243] use full path text to include the root, which on Windows may be the drive letter --- src/GafferUIModule/PathListingWidgetBinding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferUIModule/PathListingWidgetBinding.cpp b/src/GafferUIModule/PathListingWidgetBinding.cpp index 7fcb57b225f..739987b12f6 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.cpp +++ b/src/GafferUIModule/PathListingWidgetBinding.cpp @@ -996,7 +996,7 @@ IECore::PathMatcher getSelection( uint64_t treeViewAddress ) IECore::PathMatcher result; for( const auto &index : selectedIndices ) { - result.addPath( model->pathForIndex( index )->names() ); + result.addPath( model->pathForIndex( index )->string() ); } return result; } From 4362291efb151bdea8b7e54869b1cb2b0d2bbc3b Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 24 Sep 2018 17:48:04 -0400 Subject: [PATCH 118/243] Revert "use full path text to include the root, which on Windows may be the drive letter" This reverts commit 5ee4212358a7752ee30c7429cc641fb65beb77a1. --- src/GafferUIModule/PathListingWidgetBinding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferUIModule/PathListingWidgetBinding.cpp b/src/GafferUIModule/PathListingWidgetBinding.cpp index 739987b12f6..7fcb57b225f 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.cpp +++ b/src/GafferUIModule/PathListingWidgetBinding.cpp @@ -996,7 +996,7 @@ IECore::PathMatcher getSelection( uint64_t treeViewAddress ) IECore::PathMatcher result; for( const auto &index : selectedIndices ) { - result.addPath( model->pathForIndex( index )->string() ); + result.addPath( model->pathForIndex( index )->names() ); } return result; } From 1233cb1a90b66f48fc0bea1c7ef54c582485f297 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 30 Sep 2018 11:03:03 -0400 Subject: [PATCH 119/243] add simple test to check truncating --- python/GafferTest/FileSystemPathTest.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index a4609df30ef..a9419693fa9 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -374,6 +374,13 @@ def testSequences( self ) : c = p.children() self.assertEqual( len( c ), 8 ) + def testTruncateUntilValid( self ): + + p = Gaffer.FileSystemPath( "T" ) + print str( p ) + print str (p.truncateUntilValid() ) + self.assertEqual( str( p.truncateUntilValid() ), "" ) + def setUp( self ) : GafferTest.TestCase.setUp( self ) From c006d2428cb66d31cdfd1fbe18d52afdc19f0987 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 30 Sep 2018 11:51:09 -0400 Subject: [PATCH 120/243] Revert "add simple test to check truncating" This reverts commit 54314129d745edd77e5fa3837bb1d92f5702d1c6. --- python/GafferTest/FileSystemPathTest.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index a9419693fa9..a4609df30ef 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -374,13 +374,6 @@ def testSequences( self ) : c = p.children() self.assertEqual( len( c ), 8 ) - def testTruncateUntilValid( self ): - - p = Gaffer.FileSystemPath( "T" ) - print str( p ) - print str (p.truncateUntilValid() ) - self.assertEqual( str( p.truncateUntilValid() ), "" ) - def setUp( self ) : GafferTest.TestCase.setUp( self ) From d5b34afcfddfc0485589d4f590cfdc1cddd0134c Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 6 Oct 2018 13:17:54 -0400 Subject: [PATCH 121/243] GAFFEROSL_CODE_DIRECTORY must be a single directory --- bin/gaffer_env.bat | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat index 44a4ed3dc85..3ba35cc8307 100644 --- a/bin/gaffer_env.bat +++ b/bin/gaffer_env.bat @@ -24,7 +24,8 @@ set OSLHOME=%GAFFER_ROOT% set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% -set GAFFEROSL_CODE_DIRECTORY=%OSL_SHADER_PATHS%;%USERPROFILE%\gaffer\oslCode +set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode +set PATH=%GAFFER_OSL_CODE_DIRECTORY%;%PATH% set PYTHONHOME=%GAFFER_ROOT% From 926f37ae179f06ff826db66a93a745fa80f9ffb4 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 16 Nov 2018 16:59:14 -0500 Subject: [PATCH 122/243] correct cmake syntax --- contrib/cmake/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index af0539c04ab..3afaceedbeb 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -516,7 +516,6 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) elseif( WINDOWS ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) - set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) endif() From c2aba93a86dc8cf3cfa0a9d322362130bb85050e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 17 Nov 2018 18:45:24 -0500 Subject: [PATCH 123/243] make gaffer batch file more like Linux version --- bin/gaffer_env.bat | 57 ---------------------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 bin/gaffer_env.bat diff --git a/bin/gaffer_env.bat b/bin/gaffer_env.bat deleted file mode 100644 index 3ba35cc8307..00000000000 --- a/bin/gaffer_env.bat +++ /dev/null @@ -1,57 +0,0 @@ -set GAFFER_ROOT=%~dp0%.. - -set HOME=%USERPROFILE% - -set IECOREGL_SHADER_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_PATHS% -set IECOREGL_SHADER_INCLUDE_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_INCLUDE_PATHS% - -set IECORE_FONT_PATHS=%GAFFER_ROOT%\fonts;%IECORE_FONT_PATHS% -set IECORE_OP_PATHS=%GAFFER_ROOT%\ops;%IECORE_OP_PATHS% - -set IECORE_OP_PRESET_PATHS=%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets;%IECORE_OP_PRESET_PATHS% -set IECORE_PROCEDURAL_PATHS=%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals;%IECORE_PROCEDURAL_PATHS% -set IECORE_PROCEDURAL_PRESET_PATHS=%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets;%IECORE_PROCEDURAL_PRESET_PATHS% - -set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat - -set GAFFER_APP_PATHS=%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps;%GAFFER_APP_PATHS% - -set GAFFER_STARTUP_PATHS=%USERPROFILE%\gaffer\startup;%GAFFER_STARTUP_PATHS%;%GAFFER_ROOT%\startup - -set GAFFERUI_IMAGE_PATHS=%GAFFER_ROOT%\graphics;%GAFFERUI_IMAGE_PATHS% - -set OSLHOME=%GAFFER_ROOT% - -set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% - -set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode -set PATH=%GAFFER_OSL_CODE_DIRECTORY%;%PATH% - -set PYTHONHOME=%GAFFER_ROOT% - -set PYTHONPATH=%GAFFER_ROOT%\python;%PYTHONPATH% - -set PATH=%GAFFER_ROOT%\lib;%PATH% - -set QT_OPENGL=desktop -set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins - -set PATH=%GAFFER_ROOT%\bin;%PATH% - -rem Appleseed -rem set APPLESEED=%GAFFER_ROOT%\appleseed -rem set PATH=%APPLESEED%\lib;%PATH% -rem set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% -rem set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% -rem set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% -rem set PATH=%APPLESEED%\bin;%PATH% - - -rem Arnold -set ARNOLD_PLUGIN_PATH=%GAFFER_ROOT%\arnold\plugins;%ARNOLD_PLUGIN_PATH% -set PATH=%PATH%;%ARNOLD_ROOT%\bin -set PYTHONPATH=%PYTHONPATH%;%ARNOLD_ROOT%\python - - -rem Run Gaffer -rem python %GAFFER_ROOT%/bin/gaffer.py %1 %2 From bbee0cd6f492e21f25f02661d7ce3215c1540509 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 23 Nov 2018 16:43:39 -0500 Subject: [PATCH 124/243] FileSystemPathPlug : add new plug for cross-platform file paths --- include/Gaffer/FileSystemPathPlug.h | 111 +++++ include/Gaffer/StringPlug.h | 2 +- include/Gaffer/TypeIds.h | 1 + python/GafferTest/FileSystemPathInOutNode.py | 75 ++++ python/GafferTest/FileSystemPathPlugTest.py | 399 ++++++++++++++++++ python/GafferTest/__init__.py | 2 + src/Gaffer/FileSystemPathPlug.cpp | 188 +++++++++ src/GafferDispatch/Dispatcher.cpp | 2 +- .../FileSystemPathPlugBinding.cpp | 151 +++++++ src/GafferModule/FileSystemPathPlugBinding.h | 47 +++ src/GafferModule/GafferModule.cpp | 2 + 11 files changed, 978 insertions(+), 2 deletions(-) create mode 100644 include/Gaffer/FileSystemPathPlug.h create mode 100644 python/GafferTest/FileSystemPathInOutNode.py create mode 100644 python/GafferTest/FileSystemPathPlugTest.py create mode 100644 src/Gaffer/FileSystemPathPlug.cpp create mode 100644 src/GafferModule/FileSystemPathPlugBinding.cpp create mode 100644 src/GafferModule/FileSystemPathPlugBinding.h diff --git a/include/Gaffer/FileSystemPathPlug.h b/include/Gaffer/FileSystemPathPlug.h new file mode 100644 index 00000000000..0d42297acd3 --- /dev/null +++ b/include/Gaffer/FileSystemPathPlug.h @@ -0,0 +1,111 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011-2012, John Haddon. All rights reserved. +// Copyright (c) 2011-2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFER_FILESYSTEMPATHPLUG_H +#define GAFFER_FILESYSTEMPATHPLUG_H + +#include "Gaffer/Context.h" +#include "Gaffer/StringPlug.h" + + +namespace Gaffer +{ + +/// Plug for providing file system path values. +/// +/// Inherit from StringPlug so all substitutions work and it +/// is backwards compatible with Gaffer scripts from previous versions. +/// +/// Gaffer standardizes on using forward slashes for separating directories +/// in a path in the UI. Pulling on the FileSystemPathPlug returns an OS +/// native format string. Directories are separated by forward slashes on +/// POSIX systems and back slashes on Windows. +/// On Windows, interpret a path starting with a forward slash as a UNC +/// path, converting it to a double back slash. + +class GAFFER_API FileSystemPathPlug : public StringPlug +{ + + public : + + typedef std::string ValueType; + + IE_CORE_DECLARERUNTIMETYPEDEXTENSION( Gaffer::FileSystemPathPlug, FileSystemPathPlugTypeId, StringPlug ); + + + FileSystemPathPlug( + const std::string &name = defaultName(), + Direction direction=In, + const std::string &defaultValue = "", + unsigned flags = Default, + unsigned substitutions = Context::AllSubstitutions + ); + ~FileSystemPathPlug() override; + + /// Accepts instances StringPlug or derived classes, + /// which includes FileSystemPath Plug. + bool acceptsInput( const Plug *input ) const override; + PlugPtr createCounterpart( const std::string &name, Direction direction ) const override; + + /// \undoable + void setValue(const std::string &value); + /// Returns the value. See comments in TypedObjectPlug::getValue() + /// for details of the optional precomputedHash argument - and use + /// with care! + std::string getValue( const IECore::MurmurHash *precomputedHash = nullptr, const Context *context = nullptr, const bool forceSubstitutions = false ) const; + + void setFrom(const ValuePlug *other) override; + + IECore::MurmurHash hash() const override; + /// Ensures the method above doesn't mask + /// ValuePlug::hash( h ) + using ValuePlug::hash; +}; + +IE_CORE_DECLAREPTR( FileSystemPathPlug ); + +typedef FilteredChildIterator > FileSystemPathPlugIterator; +typedef FilteredChildIterator > InputFileSystemPathPlugIterator; +typedef FilteredChildIterator > OutputFileSystemPathPlugIterator; + +typedef FilteredRecursiveChildIterator, PlugPredicate<> > RecursiveFileSystemPathPlugIterator; +typedef FilteredRecursiveChildIterator, PlugPredicate<> > RecursiveInputFileSystemPathPlugIterator; +typedef FilteredRecursiveChildIterator, PlugPredicate<> > RecursiveOutputFileSystemPathPlugIterator; + +} // namespace Gaffer + +#endif // GAFFER_FILESYSTEMPATHPLUGPLUG_H diff --git a/include/Gaffer/StringPlug.h b/include/Gaffer/StringPlug.h index b9893366fd1..dc7afa9b3ef 100644 --- a/include/Gaffer/StringPlug.h +++ b/include/Gaffer/StringPlug.h @@ -112,7 +112,7 @@ class GAFFER_API StringPlug : public ValuePlug /// Returns the value. See comments in TypedObjectPlug::getValue() /// for details of the optional precomputedHash argument - and use /// with care! - std::string getValue( const IECore::MurmurHash *precomputedHash = nullptr ) const; + virtual std::string getValue( const IECore::MurmurHash *precomputedHash = nullptr ) const; void setFrom( const ValuePlug *other ) override; diff --git a/include/Gaffer/TypeIds.h b/include/Gaffer/TypeIds.h index ccdb48b0eeb..21d1d4b93ba 100644 --- a/include/Gaffer/TypeIds.h +++ b/include/Gaffer/TypeIds.h @@ -140,6 +140,7 @@ enum TypeId EditScopeTypeId = 110093, MessagesDataTypeId = 110094, M33fVectorDataPlugTypeId = 110095, + FileSystemPathPlugTypeId = 110096, LastTypeId = 110159, diff --git a/python/GafferTest/FileSystemPathInOutNode.py b/python/GafferTest/FileSystemPathInOutNode.py new file mode 100644 index 00000000000..c2748100464 --- /dev/null +++ b/python/GafferTest/FileSystemPathInOutNode.py @@ -0,0 +1,75 @@ +########################################################################## +# +# Copyright (c) 2012, John Haddon. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided with +# the distribution. +# +# * Neither the name of John Haddon nor the names of +# any other contributors to this software may be used to endorse or +# promote products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +########################################################################## + +import IECore +import Gaffer + +class FileSystemPathInOutNode( Gaffer.ComputeNode ) : + + def __init__( self, name="FileSystemPathInOutNode", defaultValue="", substitutions = Gaffer.Context.Substitutions.AllSubstitutions ) : + + Gaffer.ComputeNode.__init__( self, name ) + + self.addChild( Gaffer.FileSystemPathPlug( "in", Gaffer.Plug.Direction.In, defaultValue, substitutions = substitutions ) ) + self.addChild( Gaffer.FileSystemPathPlug( "out", Gaffer.Plug.Direction.Out ) ) + + self.numHashCalls = 0 + self.numComputeCalls = 0 + + def affects( self, input ) : + + outputs = Gaffer.ComputeNode.affects( self, input ) + + if input.isSame( self["in"] ) : + outputs.append( self["out"] ) + + return outputs + + def hash( self, output, context, h ) : + + if output.isSame( self["out"] ) : + self["in"].hash( h ) + + self.numHashCalls += 1 + + def compute( self, plug, context ) : + + if plug.isSame( self["out"] ) : + plug.setValue( self["in"].getValue() ) + + self.numComputeCalls += 1 + +IECore.registerRunTimeTyped( FileSystemPathInOutNode, typeName = "GafferTest::FileSystemPathInOutNode" ) diff --git a/python/GafferTest/FileSystemPathPlugTest.py b/python/GafferTest/FileSystemPathPlugTest.py new file mode 100644 index 00000000000..50e9cd1f9dd --- /dev/null +++ b/python/GafferTest/FileSystemPathPlugTest.py @@ -0,0 +1,399 @@ +########################################################################## +# +# Copyright (c) 2012, John Haddon. All rights reserved. +# Copyright (c) 2013, Image Engine Design Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided with +# the distribution. +# +# * Neither the name of John Haddon nor the names of +# any other contributors to this software may be used to endorse or +# promote products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +########################################################################## + +import os +import inspect +import unittest + +import IECore + +import Gaffer +import GafferTest + +class FileSystemPathPlugTest( GafferTest.TestCase ) : + + def testSlashConversion( self ) : + n = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n ) + + n["in"].setValue( "C:/path/test.exr" ) + self.assertEqual( n["out"].getValue(), os.path.join( "C:", os.sep, "path", "test.exr" ) ) + + n2 = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n2 ) + + n2["in"].setInput( n["out"] ) + self.assertEqual( n2["out"].getValue(), os.path.join( "C:", os.sep, "path", "test.exr") ) + + n3 = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n3 ) + n3["in"].setValue( "relative/path/test.exr" ) + self.assertEqual( n3["out"].getValue(), os.path.join( "relative", "path", "test.exr" ) ) + + n4 = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n4 ) + n4["in"].setValue( "C:\\backslash\\should\\work\\too.exr" ) + self.assertEqual( n4["out"].getValue(), os.path.join("C:", os.sep, "backslash", "should", "work", "too.exr")) + + def testUNC( self ) : + if os.name == "nt": + n = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n ) + + # generic starting with a single forward slash is interpreted + # as a UNC path and should start with double back slash + + n["in"].setValue( "/test.server/path/test.exr" ) + self.assertEqual( n["out"].getValue(), "\\\\test.server\\path\\test.exr" ) + + def testPosixRootPath( self ): + if os.name != "nt": + n = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n ) + + n["in"].setValue( "root/path/test.exr" ) + self.assertEqual( n["out"].getValue(), "root/path/test.exr" ) + + def testStringNodeCompatibility( self ): + n = GafferTest.FileSystemPathInOutNode() + s = GafferTest.StringInOutNode() + s["in"].setValue( "test/string.exr" ) + + + n["in"].setInput( s["out"] ) + + self.assertEqual( n["out"].getValue(), os.path.join( "test", "string.exr" ) ) + + def testExpansion( self ) : + + n = GafferTest.FileSystemPathInOutNode() + self.assertHashesValid( n ) + + # nothing should be expanded when we're in a non-computation context + n["in"].setValue( "testyTesty.##.exr" ) + self.assertEqual( n["in"].getValue(), "testyTesty.##.exr" ) + + n["in"].setValue( "${a}/$b/${a:b}" ) + self.assertEqual( n["in"].getValue(), os.path.join("${a}", "$b", "${a:b}" ) ) + + # but expansions should happen magically when the compute() + # calls getValue(). + context = Gaffer.Context() + context.setFrame( 10 ) + n["in"].setValue( "testyTesty.###.exr" ) + with context : + self.assertEqual( n["out"].getValue(), "testyTesty.010.exr" ) + + context["A"] = "apple" + n["in"].setValue( "what/a/lovely/$A" ) + with context : + self.assertEqual( n["out"].getValue(), os.path.join( "what", "a", "lovely", "apple" ) ) + n["in"].setValue( "what/a/lovely/${A}" ) + with context : + self.assertEqual( n["out"].getValue(), os.path.join( "what", "a", "lovely", "apple" ) ) + context["A"] = "peach" + with context : + self.assertEqual( n["out"].getValue(), os.path.join( "what", "a", "lovely", "peach" ) ) + + context["env:dir"] = "a/path" + n["in"].setValue( "a/${env:dir}/b" ) + with context : + self.assertEqual( n["out"].getValue(), os.path.join( "a", "a", "path", "b" ) ) + + n["in"].setValue( "$dontExist" ) + with context : + self.assertEqual( n["out"].getValue(), "" ) + + # once again, nothing should be expanded when we're in a + # non-computation context + n["in"].setValue( "testyTesty.##.exr" ) + self.assertEqual( n["in"].getValue(), "testyTesty.##.exr" ) + + def testRecursiveExpansion( self ) : + + n = GafferTest.FileSystemPathInOutNode() + n["in"].setValue( "$a" ) + + context = Gaffer.Context() + context["a"] = "a$b" + context["b"] = "b" + + with context : + self.assertEqual( n["out"].getValue(), "ab" ) + + def testRecursiveExpansionCycles( self ) : + + n = GafferTest.FileSystemPathInOutNode() + n["in"].setValue( "$a" ) + + context = Gaffer.Context() + context["a"] = "a$b" + context["b"] = "b$a" + + with context : + self.assertRaises( RuntimeError, n["out"].getValue ) + + def testDefaultValueExpansion( self ) : + + n = GafferTest.FileSystemPathInOutNode( defaultValue = "${A}" ) + context = Gaffer.Context() + context["A"] = "b" + with context : + self.assertEqual( n["out"].getValue(), "b" ) + + def testExpansionFromInputConnection( self ) : + + p = Gaffer.FileSystemPathPlug() + p.setValue( "${foo}" ) + + n = GafferTest.FileSystemPathInOutNode() + n["in"].setInput( p ) + + c = Gaffer.Context() + with c : + self.assertEqual( n["out"].getValue(), "" ) + h = n["out"].hash() + + c["foo"] = "foo" + with c : + self.assertNotEqual( n["out"].hash(), h ) + self.assertEqual( n["out"].getValue(), "foo" ) + + def testExpansionMask( self ) : + + n1 = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.AllSubstitutions ) + n2 = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.AllSubstitutions & ~Gaffer.Context.Substitutions.FrameSubstitutions ) + + n1["in"].setValue( "hello.####.${ext}" ) + n2["in"].setValue( "hello.####.${ext}" ) + self.assertEqual( n1["out"].getValue(), os.path.expanduser( "hello.0001." ) ) + self.assertEqual( n2["out"].getValue(), os.path.expanduser( "hello.####." ) ) + + c = Gaffer.Context() + c["ext"] = "cob" + c.setFrame( 10 ) + with c : + self.assertEqual( n1["out"].getValue(), os.path.expanduser( "hello.0010.cob" ) ) + self.assertEqual( n2["out"].getValue(), os.path.expanduser( "hello.####.cob" ) ) + + def testSubstitutionsSerialisation( self ) : + + s = Gaffer.ScriptNode() + s["n"] = Gaffer.Node() + s["n"]["p"] = Gaffer.FileSystemPathPlug( + "p", + flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, + substitutions = Gaffer.Context.Substitutions.AllSubstitutions & ~Gaffer.Context.Substitutions.FrameSubstitutions + ) + self.assertEqual( s["n"]["p"].substitutions(), Gaffer.Context.Substitutions.AllSubstitutions & ~Gaffer.Context.Substitutions.FrameSubstitutions ) + + s2 = Gaffer.ScriptNode() + s2.execute( s.serialise() ) + self.assertEqual( s["n"]["p"].substitutions(), s2["n"]["p"].substitutions() ) + + def testSubstitutionsRepr( self ) : + + p = Gaffer.FileSystemPathPlug( + substitutions = Gaffer.Context.Substitutions.TildeSubstitutions | Gaffer.Context.Substitutions.FrameSubstitutions + ) + + p2 = eval( repr( p ) ) + self.assertEqual( p.substitutions(), p2.substitutions() ) + + def testSubstitutionsCounterpart( self ) : + + p = Gaffer.FileSystemPathPlug( + substitutions = Gaffer.Context.Substitutions.TildeSubstitutions | Gaffer.Context.Substitutions.FrameSubstitutions + ) + + p2 = p.createCounterpart( "p2", p.Direction.In ) + self.assertEqual( p.substitutions(), p2.substitutions() ) + + def testTildeExpansion( self ) : + + n = GafferTest.FileSystemPathInOutNode() + + n["in"].setValue( "~" ) + self.assertEqual( n["out"].getValue(), os.path.expanduser( "~" ) ) + + n["in"].setValue( "~/something.tif" ) + self.assertEqual( n["out"].getValue(), os.path.join( os.path.expanduser( "~"), "something.tif" ) ) + + # ~ shouldn't be expanded unless it's at the front - it would + # be meaningless in other cases. + n["in"].setValue( "in/~1900" ) + self.assertEqual( n["out"].getValue(), os.path.join("in", "~1900" ) ) + + def testEnvironmentExpansion( self ) : + + n = GafferTest.FileSystemPathInOutNode() + + n["in"].setValue( "${NOT_AN_ENVIRONMENT_VARIABLE}" ) + h1 = n["out"].hash() + self.assertEqual( n["out"].getValue(), "" ) + + n["in"].setValue( "${GAFFER_ROOT}" ) + self.assertEqual( n["out"].getValue(), os.environ["GAFFER_ROOT"] ) + h2 = n["out"].hash() + self.assertNotEqual( h1, h2 ) + + context = Gaffer.Context() + context["GAFFER_ROOT"] = "b" + with context : + # context should win against environment + self.assertEqual( n["out"].getValue(), "b" ) + self.assertNotEqual( n["out"].hash(), h1 ) + self.assertNotEqual( n["out"].hash(), h2 ) + + def testSubstitutionsFromExpressionInput( self ) : + + s = Gaffer.ScriptNode() + + # Should output a substituted version of the input. + s["substitionsOn"] = GafferTest.FileSystemPathInOutNode() + + # Should pass through the input directly, without substitutions. + s["substitionsOff"] = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.NoSubstitutions ) + + # The third case is trickier. The "in" plug on the node + # itself requests no substitutions, but it receives its + # input via an indirect connection with substitutions + # turned on. We resolve this by defining substitutions + # to occur only when observing a value inside a compute, + # and to always be determined by the plug used to access + # the value. A chain of connections can be thought of as + # carrying an unsubstituted string all the way along + # internally, with each plug along the way determining + # the substitutions applied when peeking in to see the value + # at that point. + # + # In practice this works best because typically it is only + # nodes that know when a substitution is relevant, and the + # user shouldn't be burdened with the job of thinking about + # them when making intermediate connections to that node. + s["substitionsOnIndirectly"] = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.NoSubstitutions ) + s["substitionsOnIndirectly"]["user"]["in"] = Gaffer.FileSystemPathPlug() + s["substitionsOnIndirectly"]["in"].setInput( s["substitionsOnIndirectly"]["user"]["in"] ) + + # All three nodes above receive their input from this expression + # which outputs a sequence value to be substituted (or not). + + s["e"] = Gaffer.Expression() + s["e"].setExpression( inspect.cleandoc( + """ + parent["substitionsOn"]["in"] = "test.#.exr" + parent["substitionsOff"]["in"] = "test.#.exr" + parent["substitionsOnIndirectly"]["user"]["in"] = "test.#.exr" + """ + ) ) + + with Gaffer.Context() as c : + + # Frame 1 + ######### + + c.setFrame( 1 ) + + # The output of the expression itself is not substituted. + # Substitutions occur only on input plugs. + + self.assertEqual( s["substitionsOn"]["in"].getInput().getValue(), "test.#.exr" ) + self.assertEqual( s["substitionsOff"]["in"].getInput().getValue(), "test.#.exr" ) + self.assertEqual( s["substitionsOnIndirectly"]["user"]["in"].getInput().getValue(), "test.#.exr" ) + + # We should get frame numbers out of the substituting node. + + self.assertEqual( s["substitionsOn"]["out"].getValue(), "test.1.exr" ) + substitutionsOnHash1 = s["substitionsOn"]["out"].hash() + self.assertEqual( s["substitionsOn"]["out"].getValue( _precomputedHash = substitutionsOnHash1 ), "test.1.exr" ) + + # We should get sequences out of the non-substituting node. + + self.assertEqual( s["substitionsOff"]["out"].getValue(), "test.#.exr" ) + substitutionsOffHash1 = s["substitionsOff"]["out"].hash() + self.assertEqual( s["substitionsOff"]["out"].getValue( _precomputedHash = substitutionsOffHash1 ), "test.#.exr" ) + self.assertNotEqual( substitutionsOnHash1, substitutionsOffHash1 ) + + # We shouldn't get frame numbers out of the third node, because the + # requirements of the node (no substitutions) trump any upstream opinions. + # Substitutions are performed by the plug during value access, and do not + # affect the actual data flow. + + self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue(), "test.#.exr" ) + substitionsOnIndirectlyHash1 = s["substitionsOnIndirectly"]["out"].hash() + self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue( _precomputedHash = substitionsOnIndirectlyHash1 ), "test.#.exr" ) + + # Frame 2 + ######### + + c.setFrame( 2 ) + + # The output of the expression itself is not substituted. + # Substitutions occur only on input plugs. + + self.assertEqual( s["substitionsOn"]["in"].getInput().getValue(), "test.#.exr" ) + self.assertEqual( s["substitionsOff"]["in"].getInput().getValue(), "test.#.exr" ) + self.assertEqual( s["substitionsOnIndirectly"]["user"]["in"].getInput().getValue(), "test.#.exr" ) + + # We should get frame numbers out of the substituting node. + # The hash must has changed to make this possible. + + self.assertEqual( s["substitionsOn"]["out"].getValue(), "test.2.exr" ) + substitutionsOnHash2 = s["substitionsOn"]["out"].hash() + self.assertEqual( s["substitionsOn"]["out"].getValue( _precomputedHash = substitutionsOnHash2 ), "test.2.exr" ) + self.assertNotEqual( substitutionsOnHash2, substitutionsOnHash1 ) + + # We should still get sequences out of the non-substituting node, + # and it should have the same output hash as it had on frame 1. + + self.assertEqual( s["substitionsOff"]["out"].getValue(), "test.#.exr" ) + substitutionsOffHash2 = s["substitionsOff"]["out"].hash() + self.assertEqual( s["substitionsOff"]["out"].getValue( _precomputedHash = substitutionsOffHash2 ), "test.#.exr" ) + self.assertEqual( substitutionsOffHash1, substitutionsOffHash2 ) + self.assertNotEqual( substitutionsOnHash2, substitutionsOffHash2 ) + + # The third node should still be non-substituting. + + self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue(), "test.#.exr" ) + substitionsOnIndirectlyHash2 = s["substitionsOnIndirectly"]["out"].hash() + self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue( _precomputedHash = substitionsOnIndirectlyHash2 ), "test.#.exr" ) + self.assertEqual( substitionsOnIndirectlyHash2, substitionsOnIndirectlyHash1 ) + + + +if __name__ == "__main__": + unittest.main() diff --git a/python/GafferTest/__init__.py b/python/GafferTest/__init__.py index a4c0db0176e..c7f48cb9ec2 100644 --- a/python/GafferTest/__init__.py +++ b/python/GafferTest/__init__.py @@ -164,6 +164,8 @@ def inCI( platforms = set() ) : from .SpreadsheetTest import SpreadsheetTest from .ShufflePlugTest import ShufflePlugTest from .EditScopeTest import EditScopeTest +from .FileSystemPathInOutNode import FileSystemPathInOutNode +from .FileSystemPathPlugTest import FileSystemPathPlugTest from .IECorePreviewTest import * diff --git a/src/Gaffer/FileSystemPathPlug.cpp b/src/Gaffer/FileSystemPathPlug.cpp new file mode 100644 index 00000000000..cdda25ec303 --- /dev/null +++ b/src/Gaffer/FileSystemPathPlug.cpp @@ -0,0 +1,188 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2011-2012, John Haddon. All rights reserved. +// Copyright (c) 2011-2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#include "Gaffer/FileSystemPathPlug.h" +#include "Gaffer/FileSystemPath.h" +#include "Gaffer/PathFilter.h" + +#include "Gaffer/Context.h" +#include "Gaffer/Process.h" + +using namespace IECore; +using namespace Gaffer; + +IE_CORE_DEFINERUNTIMETYPED( FileSystemPathPlug ); + +namespace +{ + + // Before using the HashProcess/ComputeProcess classes to get a hash or + // a value, we first traverse back down the chain of input plugs to the + // start, or till we find a plug of a different type. This traversal is + /// much quicker than using the Process classes for every step in the chain + /// and avoids the creation of lots of unnecessary cache entries. + inline const ValuePlug *sourcePlug(const ValuePlug *p) + { + const IECore::TypeId typeId = p->typeId(); + + const ValuePlug *in = p->getInput(); + while (in && in->typeId() == typeId) + { + p = in; + in = p->getInput(); + } + + return p; + } + +} // namespace + +FileSystemPathPlug::FileSystemPathPlug( + const std::string &name, + Direction direction, + const std::string &defaultValue, + unsigned flags, + unsigned substitutions +) + : StringPlug( name, direction, defaultValue, flags, substitutions ) +{ +} + +FileSystemPathPlug::~FileSystemPathPlug() +{ +} + +bool FileSystemPathPlug::acceptsInput( const Plug *input ) const +{ + if( !ValuePlug::acceptsInput( input ) ) + { + return false; + } + if( input ) + { + return input->isInstanceOf( staticTypeId() ) || input->isInstanceOf( StringPlug::staticTypeId() ); + } + return true; +} + +PlugPtr FileSystemPathPlug::createCounterpart( const std::string &name, Direction direction ) const +{ + return new FileSystemPathPlug( name, direction, defaultValue(), getFlags(), substitutions() ); +} + +void FileSystemPathPlug::setValue(const std::string &value) +{ + // Set the value to the generic string representation + // This helps when calling getValue since it won't remove + // back slashes when calling substitute + setObjectValue(new StringData(Gaffer::FileSystemPath(value).string())); +} + +std::string FileSystemPathPlug::getValue( const IECore::MurmurHash *precomputedHash, const Context *context, const bool forceSubstitutions ) const +{ + if( !context ) + { + context = Context::current(); + } + IECore::ConstObjectPtr o = getObjectValue(precomputedHash); + const IECore::StringData *s = IECore::runTimeCast(o.get()); + if (!s) + { + throw IECore::Exception("FileSystemPathPlug::getObjectValue() didn't return StringData - is the hash being computed correctly?"); + } + + const bool performSubstitutions = + forceSubstitutions || + (substitutions() && + direction() == In && + Process::current() && + Context::hasSubstitutions(s->readable())); + const std::string substituted_path = performSubstitutions ? context->substitute(s->readable(), substitutions()) : s->readable(); + return Gaffer::FileSystemPath(substituted_path).nativeString(); +} + +void FileSystemPathPlug::setFrom(const ValuePlug *other) +{ + if (const FileSystemPathPlug *tOther = runTimeCast(other)) + { + setValue(tOther->getValue()); + } + else if (const StringPlug *tOther = runTimeCast(other)) + { + setValue(tOther->getValue()); + } + else + { + throw IECore::Exception("Unsupported plug type"); + } +} + +IECore::MurmurHash FileSystemPathPlug::hash() const +{ + const bool performSubstitutions = + substitutions() && + direction() == In + ; + + // We need to allow backwards compatibility with StringPlug. + // Check to see if our root plug is a StringPlug and return + // its hash. + const ValuePlug *r = sourcePlug(this); + if (const StringPlug *p = runTimeCast(r->getInput())) + { + return p->hash(); + } + if (performSubstitutions) + { + IECore::ConstObjectPtr o = getObjectValue(); + const IECore::StringData *s = IECore::runTimeCast(o.get()); + if (!s) + { + throw IECore::Exception("StringPlug::getObjectValue() didn't return StringData - is the hash being computed correctly?"); + } + + if (Context::hasSubstitutions(s->readable())) + { + IECore::MurmurHash result; + result.append(Context::current()->substitute(s->readable(), substitutions())); + return result; + } + } + + // no substitutions + return ValuePlug::hash(); +} diff --git a/src/GafferDispatch/Dispatcher.cpp b/src/GafferDispatch/Dispatcher.cpp index 2c087d7c843..806ff02a986 100644 --- a/src/GafferDispatch/Dispatcher.cpp +++ b/src/GafferDispatch/Dispatcher.cpp @@ -185,7 +185,7 @@ const std::string Dispatcher::jobDirectory() const void Dispatcher::createJobDirectory( const Gaffer::ScriptNode *script, Gaffer::Context *context ) const { - boost::filesystem::path jobDirectory( context->substitute( jobsDirectoryPlug()->getValue() ) ); + boost::filesystem::path jobDirectory( jobsDirectoryPlug()->getValue(nullptr, context, true) ); jobDirectory /= context->substitute( jobNamePlug()->getValue() ); if( jobDirectory == "" ) diff --git a/src/GafferModule/FileSystemPathPlugBinding.cpp b/src/GafferModule/FileSystemPathPlugBinding.cpp new file mode 100644 index 00000000000..843631d284f --- /dev/null +++ b/src/GafferModule/FileSystemPathPlugBinding.cpp @@ -0,0 +1,151 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#include "FileSystemPathPlugBinding.h" + +#include "GafferBindings/ValuePlugBinding.h" + +#include "Gaffer/FileSystemPathPlug.h" + +#include "IECorePython/ScopedGILRelease.h" + +using namespace boost::python; +using namespace Gaffer; +using namespace GafferBindings; + +namespace +{ + +void setValue( FileSystemPathPlug *plug, const std::string& value ) +{ + // we use a GIL release here to prevent a lock in the case where this triggers a graph + // evaluation which decides to go back into python on another thread: + IECorePython::ScopedGILRelease r; + plug->setValue( value ); +} + +std::string getValue( const FileSystemPathPlug *plug, const IECore::MurmurHash *precomputedHash ) +{ + // Must release GIL in case computation spawns threads which need + // to reenter Python. + IECorePython::ScopedGILRelease r; + return plug->getValue( precomputedHash ); +} + +std::string substitutionsRepr( unsigned substitutions ) +{ + static const Context::Substitutions values[] = { Context::FrameSubstitutions, Context::VariableSubstitutions, Context::EscapeSubstitutions, Context::TildeSubstitutions, Context::NoSubstitutions }; + static const char *names[] = { "FrameSubstitutions", "VariableSubstitutions", "EscapeSubstitutions", "TildeSubstitutions", nullptr }; + + if( substitutions == Context::AllSubstitutions ) + { + return "Gaffer.Context.Substitutions.AllSubstitutions"; + } + else if( substitutions == Context::NoSubstitutions ) + { + return "Gaffer.Context.Substitutions.NoSubstitutions"; + } + + std::string result; + for( int i = 0; names[i]; ++i ) + { + if( substitutions & values[i] ) + { + if( result.size() ) + { + result += " | "; + } + result += "Gaffer.Context.Substitutions." + std::string( names[i] ); + } + } + + return result; +} + +std::string serialisationRepr( const Gaffer::FileSystemPathPlug *plug, const Serialisation *serialisation ) +{ + std::string extraArguments; + if( plug->substitutions() != Context::AllSubstitutions ) + { + extraArguments = "substitutions = " + substitutionsRepr( plug->substitutions() ); + } + return ValuePlugSerialiser::repr( plug, extraArguments, serialisation ); +} + +std::string repr( const Gaffer::FileSystemPathPlug *plug ) +{ + return serialisationRepr( plug, nullptr ); +} + +class FileSystemPathPlugSerialiser : public ValuePlugSerialiser +{ + + public : + + std::string constructor( const Gaffer::GraphComponent *graphComponent, const Serialisation &serialisation ) const override + { + return serialisationRepr( static_cast( graphComponent ), &serialisation ); + } + +}; + +} // namespace + +void GafferModule::bindFileSystemPathPlug() +{ + + PlugClass() + .def( + boost::python::init( + ( + boost::python::arg_( "name" )=Gaffer::GraphComponent::defaultName(), + boost::python::arg_( "direction" )=Gaffer::Plug::In, + boost::python::arg_( "defaultValue" )="", + boost::python::arg_( "flags" )=Gaffer::Plug::Default, + boost::python::arg_( "substitutions" )=Gaffer::Context::AllSubstitutions + ) + ) + ) + .def( "__repr__", &repr ) + .def( "substitutions", &FileSystemPathPlug::substitutions ) + .def( "defaultValue", &FileSystemPathPlug::defaultValue, return_value_policy() ) + .def( "setValue", &setValue ) + .def( "getValue", &getValue, ( boost::python::arg( "_precomputedHash" ) = object() ) ) + ; + + Serialisation::registerSerialiser( FileSystemPathPlug::staticTypeId(), new FileSystemPathPlugSerialiser ); + +} diff --git a/src/GafferModule/FileSystemPathPlugBinding.h b/src/GafferModule/FileSystemPathPlugBinding.h new file mode 100644 index 00000000000..1cdb5fac44b --- /dev/null +++ b/src/GafferModule/FileSystemPathPlugBinding.h @@ -0,0 +1,47 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided with +// the distribution. +// +// * Neither the name of John Haddon nor the names of +// any other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERMODULE_FILESYSTEMPATHPLUGBINDING_H +#define GAFFERMODULE_FILESYSTEMPATHPLUGBINDING_H + +namespace GafferModule +{ + +void bindFileSystemPathPlug(); + +} // namespace GafferModule + +#endif // GAFFERMODULE_STRINGPLUGBINDING_H diff --git a/src/GafferModule/GafferModule.cpp b/src/GafferModule/GafferModule.cpp index 69d1b03b559..e2f61a5d9cb 100644 --- a/src/GafferModule/GafferModule.cpp +++ b/src/GafferModule/GafferModule.cpp @@ -48,6 +48,7 @@ #include "DirtyPropagationScopeBinding.h" #include "DotBinding.h" #include "ExpressionBinding.h" +#include "FileSystemPathPlugBinding.h" #include "GraphComponentBinding.h" #include "ProcessMessageHandlerBinding.h" #include "MetadataAlgoBinding.h" @@ -245,6 +246,7 @@ BOOST_PYTHON_MODULE( _Gaffer ) bindNodeAlgo(); bindShuffles(); bindMessages(); + bindFileSystemPathPlug(); NodeClass(); From 00c1570689684ade75a191fad24c964c48444e6b Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 26 Nov 2018 13:21:40 -0500 Subject: [PATCH 125/243] Tests : subprocess32 isn't supported on Windows --- python/GafferAppleseedTest/AppleseedRenderTest.py | 6 +++++- python/GafferArnoldTest/ArnoldRenderTest.py | 6 +++++- python/GafferDispatchTest/DispatchApplicationTest.py | 6 +++++- python/GafferDispatchTest/ExecuteApplicationTest.py | 6 +++++- python/GafferImageTest/ColorSpaceTest.py | 6 +++++- python/GafferImageTest/DisplayTest.py | 6 +++++- python/GafferImageTest/DisplayTransformTest.py | 6 +++++- python/GafferOSLTest/OSLTestCase.py | 6 +++++- python/GafferTest/ApplicationTest.py | 6 +++++- python/GafferTest/PythonApplicationTest.py | 6 +++++- python/GafferTest/StatsApplicationTest.py | 7 ++++++- python/GafferVDBTest/VDBTestCase.py | 6 +++++- 12 files changed, 61 insertions(+), 12 deletions(-) diff --git a/python/GafferAppleseedTest/AppleseedRenderTest.py b/python/GafferAppleseedTest/AppleseedRenderTest.py index faf2b196af8..f92cdbe7337 100644 --- a/python/GafferAppleseedTest/AppleseedRenderTest.py +++ b/python/GafferAppleseedTest/AppleseedRenderTest.py @@ -36,7 +36,11 @@ import os import re -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import time import unittest diff --git a/python/GafferArnoldTest/ArnoldRenderTest.py b/python/GafferArnoldTest/ArnoldRenderTest.py index c85c9a6ade0..5d3fb377a52 100644 --- a/python/GafferArnoldTest/ArnoldRenderTest.py +++ b/python/GafferArnoldTest/ArnoldRenderTest.py @@ -38,7 +38,11 @@ import os import inspect import unittest -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import threading import arnold diff --git a/python/GafferDispatchTest/DispatchApplicationTest.py b/python/GafferDispatchTest/DispatchApplicationTest.py index df60d32a6fb..a7a11fd4baf 100644 --- a/python/GafferDispatchTest/DispatchApplicationTest.py +++ b/python/GafferDispatchTest/DispatchApplicationTest.py @@ -35,7 +35,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import unittest import Gaffer diff --git a/python/GafferDispatchTest/ExecuteApplicationTest.py b/python/GafferDispatchTest/ExecuteApplicationTest.py index 10d9e81238c..39aa43e2f8f 100644 --- a/python/GafferDispatchTest/ExecuteApplicationTest.py +++ b/python/GafferDispatchTest/ExecuteApplicationTest.py @@ -36,7 +36,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import unittest import glob import inspect diff --git a/python/GafferImageTest/ColorSpaceTest.py b/python/GafferImageTest/ColorSpaceTest.py index f827fac64b9..c4ab739e072 100644 --- a/python/GafferImageTest/ColorSpaceTest.py +++ b/python/GafferImageTest/ColorSpaceTest.py @@ -37,7 +37,11 @@ import os import unittest -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import imath import IECore diff --git a/python/GafferImageTest/DisplayTest.py b/python/GafferImageTest/DisplayTest.py index ac0c0b7c5fc..00f902d5db2 100644 --- a/python/GafferImageTest/DisplayTest.py +++ b/python/GafferImageTest/DisplayTest.py @@ -38,7 +38,11 @@ import unittest import random import threading -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import imath import IECore diff --git a/python/GafferImageTest/DisplayTransformTest.py b/python/GafferImageTest/DisplayTransformTest.py index 0bce3fb29ec..e4d9e68b01f 100644 --- a/python/GafferImageTest/DisplayTransformTest.py +++ b/python/GafferImageTest/DisplayTransformTest.py @@ -36,7 +36,11 @@ import os import unittest -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import imath import IECore diff --git a/python/GafferOSLTest/OSLTestCase.py b/python/GafferOSLTest/OSLTestCase.py index 59b3214947e..404d4826492 100644 --- a/python/GafferOSLTest/OSLTestCase.py +++ b/python/GafferOSLTest/OSLTestCase.py @@ -35,7 +35,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import GafferSceneTest diff --git a/python/GafferTest/ApplicationTest.py b/python/GafferTest/ApplicationTest.py index 214409e07ba..9c241e5268d 100644 --- a/python/GafferTest/ApplicationTest.py +++ b/python/GafferTest/ApplicationTest.py @@ -36,7 +36,11 @@ import os import time -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import IECore import Gaffer diff --git a/python/GafferTest/PythonApplicationTest.py b/python/GafferTest/PythonApplicationTest.py index 1688a096cda..56c0c88f181 100644 --- a/python/GafferTest/PythonApplicationTest.py +++ b/python/GafferTest/PythonApplicationTest.py @@ -35,7 +35,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import unittest import GafferTest diff --git a/python/GafferTest/StatsApplicationTest.py b/python/GafferTest/StatsApplicationTest.py index c2af1410812..22c424624f3 100644 --- a/python/GafferTest/StatsApplicationTest.py +++ b/python/GafferTest/StatsApplicationTest.py @@ -36,7 +36,12 @@ import re import unittest -import subprocess32 as subprocess +import os +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import Gaffer import GafferTest diff --git a/python/GafferVDBTest/VDBTestCase.py b/python/GafferVDBTest/VDBTestCase.py index c5a8d2c9242..17fc9807ed0 100644 --- a/python/GafferVDBTest/VDBTestCase.py +++ b/python/GafferVDBTest/VDBTestCase.py @@ -35,7 +35,11 @@ ########################################################################## import os -import subprocess32 as subprocess +import sys +if os.name == 'posix' and sys.version_info[0] < 3: + import subprocess32 as subprocess +else: + import subprocess import IECore import GafferScene From a482eb71e8bf22dce4f2f3d0d49d225341b9e44e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 26 Nov 2018 13:22:29 -0500 Subject: [PATCH 126/243] don't display environment variable setting in batch file --- bin/gaffer.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index c2c186dfb36..923e47e49e7 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -1,5 +1,5 @@ SETLOCAL -rem @echo off +@echo off set GAFFER_ROOT=%~dp0%.. From 770700f505c332156b5fcd7c4be3a864b81a581f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 26 Nov 2018 13:23:04 -0500 Subject: [PATCH 127/243] .gitignore : Ignore Windows intermediate files --- .gitignore | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.gitignore b/.gitignore index 0aa120ce601..de644ba6862 100644 --- a/.gitignore +++ b/.gitignore @@ -8,9 +8,31 @@ .gafferBackups .idea .sconf_temp +*.oso +*.so +*.dylib +*.sln +*.pdb +install_manifest.txt +CMakeCache.txt +cmake_install.cmake .sconsign.dblite .vscode cmake-build-* config.log doc/html doc/python +config.log +.idea +.sconf_temp +.gafferBackups +Release/ +RelWithDebInfo/ +Debug/ +.vs/ +*.vcxproj* +*.dir/ +CMakeFiles/ +x64/ +cmake/ +graphics/ From 3f76ba9e2e68a72524f8d9230eaa5a1bddeccb11 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 28 Nov 2018 18:37:24 -0500 Subject: [PATCH 128/243] FileSystemPathPlug : convert StringPlugs --- include/Gaffer/ScriptNode.h | 6 ++-- include/GafferDispatch/Dispatcher.h | 5 ++-- include/GafferImage/Catalogue.h | 9 +++--- include/GafferImage/ImageReader.h | 5 ++-- include/GafferImage/ImageWriter.h | 5 ++-- include/GafferImage/LUT.h | 6 ++-- include/GafferImage/OpenImageIOReader.h | 5 ++-- include/GafferImage/Text.h | 5 ++-- include/GafferScene/ExternalProcedural.h | 5 ++-- include/GafferScene/SceneReader.h | 5 ++-- include/GafferScene/SceneWriter.h | 5 ++-- include/GafferScene/Text.h | 5 ++-- src/Gaffer/ScriptNode.cpp | 12 ++++---- src/GafferDispatch/Dispatcher.cpp | 11 ++++---- src/GafferImage/Catalogue.cpp | 35 ++++++++++++------------ src/GafferImage/ImageReader.cpp | 11 ++++---- src/GafferImage/ImageWriter.cpp | 18 ++++++++---- src/GafferImage/LUT.cpp | 12 ++++---- src/GafferImage/OpenImageIOReader.cpp | 17 ++++++------ src/GafferImage/Text.cpp | 11 ++++---- src/GafferScene/ExternalProcedural.cpp | 12 ++++---- src/GafferScene/Outputs.cpp | 3 +- src/GafferScene/SceneReader.cpp | 11 ++++---- src/GafferScene/SceneWriter.cpp | 12 ++++---- src/GafferScene/Text.cpp | 11 ++++---- 25 files changed, 133 insertions(+), 109 deletions(-) diff --git a/include/Gaffer/ScriptNode.h b/include/Gaffer/ScriptNode.h index 1fd0d6b5f10..b1b4967dc47 100644 --- a/include/Gaffer/ScriptNode.h +++ b/include/Gaffer/ScriptNode.h @@ -65,7 +65,7 @@ IE_CORE_FORWARDDECLARE( ApplicationRoot ); IE_CORE_FORWARDDECLARE( Context ); IE_CORE_FORWARDDECLARE( StandardSet ); IE_CORE_FORWARDDECLARE( CompoundDataPlug ); -IE_CORE_FORWARDDECLARE( StringPlug ); +IE_CORE_FORWARDDECLARE( FileSystemPathPlug ); typedef Container ScriptContainer; IE_CORE_DECLAREPTR( ScriptContainer ); @@ -199,8 +199,8 @@ class GAFFER_API ScriptNode : public Node //////////////////////////////////////////////////////////////////// /// Returns the plug which specifies the file used in all load and save /// operations. - StringPlug *fileNamePlug(); - const StringPlug *fileNamePlug() const; + FileSystemPathPlug *fileNamePlug(); + const FileSystemPathPlug *fileNamePlug() const; /// Returns a plug which is used to flag when the script has had changes /// made since the last call to save(). BoolPlug *unsavedChangesPlug(); diff --git a/include/GafferDispatch/Dispatcher.h b/include/GafferDispatch/Dispatcher.h index 08cd4b686b0..52acafef893 100644 --- a/include/GafferDispatch/Dispatcher.h +++ b/include/GafferDispatch/Dispatcher.h @@ -60,6 +60,7 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) +IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -170,8 +171,8 @@ class GAFFERDISPATCH_API Dispatcher : public Gaffer::Node const Gaffer::StringPlug *jobNamePlug() const; /// Returns the plug which specifies the directory used by dispatchers to store temporary /// files on a per-job basis. - Gaffer::StringPlug *jobsDirectoryPlug(); - const Gaffer::StringPlug *jobsDirectoryPlug() const; + Gaffer::FileSystemPathPlug *jobsDirectoryPlug(); + const Gaffer::FileSystemPathPlug *jobsDirectoryPlug() const; /// At the start of dispatch(), a directory is created under jobsDirectoryPlug + jobNamePlug /// which the dispatcher writes temporary files to. This method returns the most recent created directory. const std::string jobDirectory() const; diff --git a/include/GafferImage/Catalogue.h b/include/GafferImage/Catalogue.h index 32bbf8946d2..acd6a786337 100644 --- a/include/GafferImage/Catalogue.h +++ b/include/GafferImage/Catalogue.h @@ -41,6 +41,7 @@ #include "Gaffer/NumericPlug.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/Switch.h" #include "IECoreImage/DisplayDriver.h" @@ -77,8 +78,8 @@ class GAFFERIMAGE_API Catalogue : public ImageNode Image( const std::string &name = defaultName(), Direction direction = In, unsigned flags = Default ); - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; Gaffer::StringPlug *descriptionPlug(); const Gaffer::StringPlug *descriptionPlug() const; @@ -119,8 +120,8 @@ class GAFFERIMAGE_API Catalogue : public ImageNode Gaffer::StringPlug *namePlug(); const Gaffer::StringPlug *namePlug() const; - Gaffer::StringPlug *directoryPlug(); - const Gaffer::StringPlug *directoryPlug() const; + Gaffer::FileSystemPathPlug *directoryPlug(); + const Gaffer::FileSystemPathPlug *directoryPlug() const; /// All Catalogues share a single DisplayDriverServer instance /// to receive rendered images. To send an image to the catalogues, diff --git a/include/GafferImage/ImageReader.h b/include/GafferImage/ImageReader.h index a8a1b9f14bb..73c116caf9f 100644 --- a/include/GafferImage/ImageReader.h +++ b/include/GafferImage/ImageReader.h @@ -47,6 +47,7 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) +IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -87,8 +88,8 @@ class GAFFERIMAGE_API ImageReader : public ImageNode ClampToFrame, }; - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; /// Number of times the node has been refreshed. Gaffer::IntPlug *refreshCountPlug(); diff --git a/include/GafferImage/ImageWriter.h b/include/GafferImage/ImageWriter.h index f8cc57c53b4..9db8da3672b 100644 --- a/include/GafferImage/ImageWriter.h +++ b/include/GafferImage/ImageWriter.h @@ -50,6 +50,7 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( ValuePlug ) IE_CORE_FORWARDDECLARE( StringPlug ) + IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer namespace GafferImage @@ -74,8 +75,8 @@ class GAFFERIMAGE_API ImageWriter : public GafferDispatch::TaskNode GAFFER_NODE_DECLARE_TYPE( GafferImage::ImageWriter, ImageWriterTypeId, TaskNode ); - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; GafferImage::ImagePlug *inPlug(); const GafferImage::ImagePlug *inPlug() const; diff --git a/include/GafferImage/LUT.h b/include/GafferImage/LUT.h index 9692ce3e19c..f90b672bb3a 100644 --- a/include/GafferImage/LUT.h +++ b/include/GafferImage/LUT.h @@ -44,7 +44,7 @@ namespace Gaffer { -IE_CORE_FORWARDDECLARE( StringPlug ) +IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -75,8 +75,8 @@ class GAFFERIMAGE_API LUT : public OpenColorIOTransform Inverse }; - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; Gaffer::IntPlug *interpolationPlug(); const Gaffer::IntPlug *interpolationPlug() const; diff --git a/include/GafferImage/OpenImageIOReader.h b/include/GafferImage/OpenImageIOReader.h index 6d593d97564..5e2eaf5d820 100644 --- a/include/GafferImage/OpenImageIOReader.h +++ b/include/GafferImage/OpenImageIOReader.h @@ -46,6 +46,7 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) +IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -69,8 +70,8 @@ class GAFFERIMAGE_API OpenImageIOReader : public ImageNode Hold, }; - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; /// Number of times the node has been refreshed. Gaffer::IntPlug *refreshCountPlug(); diff --git a/include/GafferImage/Text.h b/include/GafferImage/Text.h index da3419bc5be..2299b7f0f54 100644 --- a/include/GafferImage/Text.h +++ b/include/GafferImage/Text.h @@ -40,6 +40,7 @@ #include "GafferImage/Shape.h" #include "Gaffer/BoxPlug.h" +#include "Gaffer/FileSystemPathPlug.h" namespace Gaffer { @@ -85,8 +86,8 @@ class GAFFERIMAGE_API Text : public Shape Gaffer::StringPlug *textPlug(); const Gaffer::StringPlug *textPlug() const; - Gaffer::StringPlug *fontPlug(); - const Gaffer::StringPlug *fontPlug() const; + Gaffer::FileSystemPathPlug *fontPlug(); + const Gaffer::FileSystemPathPlug *fontPlug() const; Gaffer::V2iPlug *sizePlug(); const Gaffer::V2iPlug *sizePlug() const; diff --git a/include/GafferScene/ExternalProcedural.h b/include/GafferScene/ExternalProcedural.h index 085dfdb9d5f..c9159c6816d 100644 --- a/include/GafferScene/ExternalProcedural.h +++ b/include/GafferScene/ExternalProcedural.h @@ -40,6 +40,7 @@ #include "GafferScene/ObjectSource.h" #include "Gaffer/CompoundDataPlug.h" +#include "Gaffer/FileSystemPathPlug.h" namespace GafferScene { @@ -54,8 +55,8 @@ class GAFFERSCENE_API ExternalProcedural : public ObjectSource ExternalProcedural( const std::string &name=defaultName() ); ~ExternalProcedural() override; - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; Gaffer::Box3fPlug *boundPlug(); const Gaffer::Box3fPlug *boundPlug() const; diff --git a/include/GafferScene/SceneReader.h b/include/GafferScene/SceneReader.h index 12315c55cd9..fe2aae613f2 100644 --- a/include/GafferScene/SceneReader.h +++ b/include/GafferScene/SceneReader.h @@ -47,6 +47,7 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) +IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) IE_CORE_FORWARDDECLARE( TransformPlug ) } // namespace Gaffer @@ -65,8 +66,8 @@ class GAFFERSCENE_API SceneReader : public SceneNode GAFFER_NODE_DECLARE_TYPE( GafferScene::SceneReader, SceneReaderTypeId, SceneNode ) /// Holds the name of the file to be loaded. - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; /// Number of times the node has been refreshed. Gaffer::IntPlug *refreshCountPlug(); diff --git a/include/GafferScene/SceneWriter.h b/include/GafferScene/SceneWriter.h index 13a5ad9702b..91c0061d5d9 100644 --- a/include/GafferScene/SceneWriter.h +++ b/include/GafferScene/SceneWriter.h @@ -44,6 +44,7 @@ #include "Gaffer/TypedPlug.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "IECoreScene/SceneInterface.h" @@ -60,8 +61,8 @@ class GAFFERSCENE_API SceneWriter : public GafferDispatch::TaskNode GAFFER_NODE_DECLARE_TYPE( GafferScene::SceneWriter, SceneWriterTypeId, GafferDispatch::TaskNode ); - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; ScenePlug *inPlug(); const ScenePlug *inPlug() const; diff --git a/include/GafferScene/Text.h b/include/GafferScene/Text.h index a559327602f..9026d7f74ad 100644 --- a/include/GafferScene/Text.h +++ b/include/GafferScene/Text.h @@ -39,6 +39,7 @@ #include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" +#include "Gaffer/FileSystemPathPlug.h" namespace GafferScene { @@ -62,8 +63,8 @@ class GAFFERSCENE_API Text : public ObjectSource Gaffer::StringPlug *textPlug(); const Gaffer::StringPlug *textPlug() const; - Gaffer::StringPlug *fontPlug(); - const Gaffer::StringPlug *fontPlug() const; + Gaffer::FileSystemPathPlug *fontPlug(); + const Gaffer::FileSystemPathPlug *fontPlug() const; void affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const override; diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index b6aa463d224..3f20a531fb6 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -45,7 +45,7 @@ #include "Gaffer/DependencyNode.h" #include "Gaffer/MetadataAlgo.h" #include "Gaffer/StandardSet.h" -#include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/TypedPlug.h" #include "IECore/Exception.h" @@ -258,7 +258,7 @@ ScriptNode::ScriptNode( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new StringPlug( "fileName", Plug::In, "", Plug::Default & ~Plug::Serialisable ) ); + addChild( new FileSystemPathPlug( "fileName", Plug::In, "", Plug::Default & ~Plug::Serialisable ) ); addChild( new BoolPlug( "unsavedChanges", Plug::In, false, Plug::Default & ~Plug::Serialisable ) ); ValuePlugPtr frameRangePlug = new ValuePlug( "frameRange", Plug::In ); @@ -286,14 +286,14 @@ ScriptNode::~ScriptNode() { } -StringPlug *ScriptNode::fileNamePlug() +FileSystemPathPlug *ScriptNode::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const StringPlug *ScriptNode::fileNamePlug() const +const FileSystemPathPlug *ScriptNode::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } BoolPlug *ScriptNode::unsavedChangesPlug() diff --git a/src/GafferDispatch/Dispatcher.cpp b/src/GafferDispatch/Dispatcher.cpp index 806ff02a986..17c5f51a098 100644 --- a/src/GafferDispatch/Dispatcher.cpp +++ b/src/GafferDispatch/Dispatcher.cpp @@ -41,6 +41,7 @@ #include "Gaffer/Process.h" #include "Gaffer/ScriptNode.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/SubGraph.h" #include "Gaffer/Switch.h" @@ -131,7 +132,7 @@ Dispatcher::Dispatcher( const std::string &name ) addChild( new IntPlug( "framesMode", Plug::In, CurrentFrame, CurrentFrame ) ); addChild( new StringPlug( "frameRange", Plug::In, "1-100x10" ) ); addChild( new StringPlug( "jobName", Plug::In, "" ) ); - addChild( new StringPlug( "jobsDirectory", Plug::In, "" ) ); + addChild( new FileSystemPathPlug( "jobsDirectory", Plug::In, "" ) ); } Dispatcher::~Dispatcher() @@ -168,14 +169,14 @@ const StringPlug *Dispatcher::jobNamePlug() const return getChild( g_firstPlugIndex + 2 ); } -StringPlug *Dispatcher::jobsDirectoryPlug() +FileSystemPathPlug *Dispatcher::jobsDirectoryPlug() { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } -const StringPlug *Dispatcher::jobsDirectoryPlug() const +const FileSystemPathPlug *Dispatcher::jobsDirectoryPlug() const { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } const std::string Dispatcher::jobDirectory() const diff --git a/src/GafferImage/Catalogue.cpp b/src/GafferImage/Catalogue.cpp index 7621396e57a..2e236094d37 100644 --- a/src/GafferImage/Catalogue.cpp +++ b/src/GafferImage/Catalogue.cpp @@ -52,6 +52,7 @@ #include "Gaffer/ParallelAlgo.h" #include "Gaffer/ScriptNode.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "boost/algorithm/string.hpp" #include "boost/bind.hpp" @@ -104,7 +105,7 @@ class Catalogue::InternalImage : public ImageNode { storeIndexOfNextChild( g_firstChildIndex ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new StringPlug( "description" ) ); // Used to load an image from disk, according to @@ -164,14 +165,14 @@ class Catalogue::InternalImage : public ImageNode } } - StringPlug *fileNamePlug() + FileSystemPathPlug *fileNamePlug() { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } - const StringPlug *fileNamePlug() const + const FileSystemPathPlug *fileNamePlug() const { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } StringPlug *descriptionPlug() @@ -187,7 +188,7 @@ class Catalogue::InternalImage : public ImageNode void copyFrom( const InternalImage *other ) { descriptionPlug()->source()->setValue( other->descriptionPlug()->getValue() ); - fileNamePlug()->source()->setValue( other->fileNamePlug()->getValue() ); + fileNamePlug()->source()->setValue( other->fileNamePlug()->getValue() ); imageSwitch()->indexPlug()->setValue( other->imageSwitch()->indexPlug()->getValue() ); text()->enabledPlug()->setValue( other->text()->enabledPlug()->getValue() ); @@ -570,7 +571,7 @@ class Catalogue::InternalImage : public ImageNode { // Set up the client to read from the saved image client->text()->enabledPlug()->setValue( false ); - client->fileNamePlug()->source()->setValue( m_writer->fileNamePlug()->getValue() ); + client->fileNamePlug()->source()->setValue( m_writer->fileNamePlug()->getValue() ); client->imageSwitch()->indexPlug()->setValue( 0 ); // But force hashChannelData and computeChannelData to be called // so that we can reuse the cache entries created by the original @@ -609,21 +610,21 @@ GAFFER_PLUG_DEFINE_TYPE( Catalogue::Image ); Catalogue::Image::Image( const std::string &name, Direction direction, unsigned flags ) : Plug( name, direction, flags ) { - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new StringPlug( "description" ) ); addChild( new StringPlug( "__name", Plug::In, name, Plug::Default & ~Plug::Serialisable ) ); nameChangedSignal().connect( boost::bind( &Image::nameChanged, this ) ); } -Gaffer::StringPlug *Catalogue::Image::fileNamePlug() +Gaffer::FileSystemPathPlug *Catalogue::Image::fileNamePlug() { - return getChild( 0 ); + return getChild( 0 ); } -const Gaffer::StringPlug *Catalogue::Image::fileNamePlug() const +const Gaffer::FileSystemPathPlug *Catalogue::Image::fileNamePlug() const { - return getChild( 0 ); + return getChild( 0 ); } Gaffer::StringPlug *Catalogue::Image::descriptionPlug() @@ -749,7 +750,7 @@ Catalogue::Catalogue( const std::string &name ) addChild( new Plug( "images" ) ); addChild( new IntPlug( "imageIndex" ) ); addChild( new StringPlug( "name" ) ); - addChild( new StringPlug( "directory" ) ); + addChild( new FileSystemPathPlug( "directory" ) ); addChild( new IntPlug( "__imageIndex", Plug::Out ) ); // Switch used to choose which image to output @@ -813,14 +814,14 @@ const Gaffer::StringPlug *Catalogue::namePlug() const return getChild( g_firstPlugIndex + 2 ); } -Gaffer::StringPlug *Catalogue::directoryPlug() +Gaffer::FileSystemPathPlug *Catalogue::directoryPlug() { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } -const Gaffer::StringPlug *Catalogue::directoryPlug() const +const Gaffer::FileSystemPathPlug *Catalogue::directoryPlug() const { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } Gaffer::IntPlug *Catalogue::internalImageIndexPlug() diff --git a/src/GafferImage/ImageReader.cpp b/src/GafferImage/ImageReader.cpp index ebd62bbc676..ed0e339c4c0 100644 --- a/src/GafferImage/ImageReader.cpp +++ b/src/GafferImage/ImageReader.cpp @@ -40,6 +40,7 @@ #include "GafferImage/OpenImageIOReader.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "OpenEXR/ImathFun.h" @@ -118,7 +119,7 @@ ImageReader::ImageReader( const std::string &name ) { storeIndexOfNextChild( g_firstChildIndex ); addChild( - new StringPlug( + new FileSystemPathPlug( "fileName", Plug::In, "", /* flags */ Plug::Default, /* substitutions */ IECore::StringAlgo::AllSubstitutions & ~IECore::StringAlgo::FrameSubstitutions @@ -167,14 +168,14 @@ ImageReader::~ImageReader() { } -StringPlug *ImageReader::fileNamePlug() +FileSystemPathPlug *ImageReader::fileNamePlug() { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } -const StringPlug *ImageReader::fileNamePlug() const +const FileSystemPathPlug *ImageReader::fileNamePlug() const { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } IntPlug *ImageReader::refreshCountPlug() diff --git a/src/GafferImage/ImageWriter.cpp b/src/GafferImage/ImageWriter.cpp index 8fa7f8c7dee..c8b6535d4d3 100644 --- a/src/GafferImage/ImageWriter.cpp +++ b/src/GafferImage/ImageWriter.cpp @@ -48,6 +48,7 @@ #include "Gaffer/Context.h" #include "Gaffer/ScriptNode.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "IECoreImage/OpenImageIOAlgo.h" @@ -1228,7 +1229,12 @@ ImageSpec createImageSpec( const ImageWriter *node, const ImageOutput *out, cons spec.attribute( "HostComputer", boost::asio::ip::host_name() ); - if ( const char *artist = getenv( "USER" ) ) +#ifdef _WIN32 + const char *artist = getenv("username"); +#else + const char *artist = getenv( "USER" ); +#endif + if ( artist ) { spec.attribute( "Artist", artist ); } @@ -1261,7 +1267,7 @@ ImageWriter::ImageWriter( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new ImagePlug( "in" ) ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new StringPlug( "channels", Gaffer::Plug::In, "*" ) ); addChild( new StringPlug( "colorSpace" ) ); addChild( new ImagePlug( "out", Plug::Out, Plug::Default & ~Plug::Serialisable ) ); @@ -1366,14 +1372,14 @@ const GafferImage::ImagePlug *ImageWriter::inPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::StringPlug *ImageWriter::fileNamePlug() +Gaffer::FileSystemPathPlug *ImageWriter::fileNamePlug() { - return getChild( g_firstPlugIndex+1 ); + return getChild( g_firstPlugIndex+1 ); } -const Gaffer::StringPlug *ImageWriter::fileNamePlug() const +const Gaffer::FileSystemPathPlug *ImageWriter::fileNamePlug() const { - return getChild( g_firstPlugIndex+1 ); + return getChild( g_firstPlugIndex+1 ); } Gaffer::StringPlug *ImageWriter::channelsPlug() diff --git a/src/GafferImage/LUT.cpp b/src/GafferImage/LUT.cpp index c49e9cb4213..c3a10d55749 100644 --- a/src/GafferImage/LUT.cpp +++ b/src/GafferImage/LUT.cpp @@ -36,7 +36,7 @@ #include "GafferImage/LUT.h" -#include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" using namespace std; using namespace IECore; @@ -51,7 +51,7 @@ LUT::LUT( const std::string &name ) : OpenColorIOTransform( name ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new IntPlug( "interpolation", Plug::In, @@ -73,14 +73,14 @@ LUT::~LUT() { } -Gaffer::StringPlug *LUT::fileNamePlug() +Gaffer::FileSystemPathPlug *LUT::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::StringPlug *LUT::fileNamePlug() const +const Gaffer::FileSystemPathPlug *LUT::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::IntPlug *LUT::interpolationPlug() diff --git a/src/GafferImage/OpenImageIOReader.cpp b/src/GafferImage/OpenImageIOReader.cpp index bf32bd98633..afbef914216 100644 --- a/src/GafferImage/OpenImageIOReader.cpp +++ b/src/GafferImage/OpenImageIOReader.cpp @@ -45,6 +45,7 @@ #include "Gaffer/Context.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "IECoreImage/OpenImageIOAlgo.h" @@ -699,7 +700,8 @@ FilePtr retrieveFile( std::string &fileName, OpenImageIOReader::MissingFrameMode return nullptr; } - const std::string resolvedFileName = context->substitute( fileName ); + // All other substitutions are handled in the FileSystemPathPlug + const std::string resolvedFileName = context->substitute( fileName, Gaffer::Context::Substitutions::FrameSubstitutions ); FileHandleCache *cache = fileCache(); CacheEntry cacheEntry = cache->get( resolvedFileName ); @@ -761,10 +763,9 @@ OpenImageIOReader::OpenImageIOReader( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( - new StringPlug( + new FileSystemPathPlug( "fileName", Plug::In, "", - /* flags */ Plug::Default, - /* substitutions */ IECore::StringAlgo::AllSubstitutions & ~IECore::StringAlgo::FrameSubstitutions + /* flags */ Plug::Default ) ); addChild( new IntPlug( "refreshCount" ) ); @@ -779,14 +780,14 @@ OpenImageIOReader::~OpenImageIOReader() { } -Gaffer::StringPlug *OpenImageIOReader::fileNamePlug() +Gaffer::FileSystemPathPlug *OpenImageIOReader::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::StringPlug *OpenImageIOReader::fileNamePlug() const +const Gaffer::FileSystemPathPlug *OpenImageIOReader::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::IntPlug *OpenImageIOReader::refreshCountPlug() diff --git a/src/GafferImage/Text.cpp b/src/GafferImage/Text.cpp index 5d8695b46c5..8b47125052e 100644 --- a/src/GafferImage/Text.cpp +++ b/src/GafferImage/Text.cpp @@ -39,6 +39,7 @@ #include "GafferImage/BufferAlgo.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/Transform2DPlug.h" #include "Gaffer/Private/IECorePreview/LRUCache.h" @@ -214,7 +215,7 @@ Text::Text( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new StringPlug( "text", Plug::In, "Hello World" ) ); - addChild( new StringPlug( "font", Plug::In, "Vera.ttf" ) ); + addChild( new FileSystemPathPlug( "font", Plug::In, "Vera.ttf" ) ); addChild( new V2iPlug( "size", Plug::In, V2i( 50 ), V2i( 0 ) ) ); addChild( new Box2iPlug( "area" ) ); addChild( new IntPlug( "horizontalAlignment", Plug::In, Left, Left, HorizontalCenter ) ); @@ -237,14 +238,14 @@ const Gaffer::StringPlug *Text::textPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::StringPlug *Text::fontPlug() +Gaffer::FileSystemPathPlug *Text::fontPlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const Gaffer::StringPlug *Text::fontPlug() const +const Gaffer::FileSystemPathPlug *Text::fontPlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } Gaffer::V2iPlug *Text::sizePlug() diff --git a/src/GafferScene/ExternalProcedural.cpp b/src/GafferScene/ExternalProcedural.cpp index 390b7fa859b..fe15acc5616 100644 --- a/src/GafferScene/ExternalProcedural.cpp +++ b/src/GafferScene/ExternalProcedural.cpp @@ -36,7 +36,7 @@ #include "GafferScene/ExternalProcedural.h" -#include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "IECoreScene/ExternalProcedural.h" @@ -52,7 +52,7 @@ ExternalProcedural::ExternalProcedural( const std::string &name ) : ObjectSource( name, "procedural" ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new Box3fPlug( "bound", Plug::In, Box3f( V3f( -0.5 ), V3f( 0.5 ) ) ) ); addChild( new CompoundDataPlug( "parameters" ) ); } @@ -61,14 +61,14 @@ ExternalProcedural::~ExternalProcedural() { } -Gaffer::StringPlug *ExternalProcedural::fileNamePlug() +Gaffer::FileSystemPathPlug *ExternalProcedural::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::StringPlug *ExternalProcedural::fileNamePlug() const +const Gaffer::FileSystemPathPlug *ExternalProcedural::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::Box3fPlug *ExternalProcedural::boundPlug() diff --git a/src/GafferScene/Outputs.cpp b/src/GafferScene/Outputs.cpp index 6bb554a0ea0..a941e96ddb2 100644 --- a/src/GafferScene/Outputs.cpp +++ b/src/GafferScene/Outputs.cpp @@ -39,6 +39,7 @@ #include "Gaffer/CompoundDataPlug.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "boost/multi_index/member.hpp" #include "boost/multi_index/ordered_index.hpp" @@ -132,7 +133,7 @@ Gaffer::ValuePlug *Outputs::addOutput( const std::string &name, const IECoreScen activePlug->setFlags( Plug::Dynamic, true ); outputPlug->addChild( activePlug ); - StringPlugPtr fileNamePlug = new StringPlug( "fileName" ); + FileSystemPathPlugPtr fileNamePlug = new FileSystemPathPlug( "fileName" ); fileNamePlug->setValue( output->getName() ); fileNamePlug->setFlags( Plug::Dynamic, true ); outputPlug->addChild( fileNamePlug ); diff --git a/src/GafferScene/SceneReader.cpp b/src/GafferScene/SceneReader.cpp index ec6e49221f5..0a57fcfd72d 100644 --- a/src/GafferScene/SceneReader.cpp +++ b/src/GafferScene/SceneReader.cpp @@ -38,6 +38,7 @@ #include "Gaffer/Context.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/TransformPlug.h" #include "IECoreScene/SceneCache.h" @@ -71,7 +72,7 @@ SceneReader::SceneReader( const std::string &name ) : SceneNode( name ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new IntPlug( "refreshCount" ) ); addChild( new StringPlug( "tags" ) ); addChild( new TransformPlug( "transform" ) ); @@ -84,14 +85,14 @@ SceneReader::~SceneReader() { } -Gaffer::StringPlug *SceneReader::fileNamePlug() +Gaffer::FileSystemPathPlug *SceneReader::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::StringPlug *SceneReader::fileNamePlug() const +const Gaffer::FileSystemPathPlug *SceneReader::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::IntPlug *SceneReader::refreshCountPlug() diff --git a/src/GafferScene/SceneWriter.cpp b/src/GafferScene/SceneWriter.cpp index 8dd0040425d..3acba3bfba9 100644 --- a/src/GafferScene/SceneWriter.cpp +++ b/src/GafferScene/SceneWriter.cpp @@ -39,7 +39,7 @@ #include "GafferScene/SceneAlgo.h" #include "Gaffer/Context.h" -#include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include "IECoreScene/SceneInterface.h" @@ -160,7 +160,7 @@ SceneWriter::SceneWriter( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new ScenePlug( "in", Plug::In ) ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new ScenePlug( "out", Plug::Out, Plug::Default & ~Plug::Serialisable ) ); outPlug()->setInput( inPlug() ); } @@ -179,14 +179,14 @@ const ScenePlug *SceneWriter::inPlug() const return getChild( g_firstPlugIndex ); } -StringPlug *SceneWriter::fileNamePlug() +FileSystemPathPlug *SceneWriter::fileNamePlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const StringPlug *SceneWriter::fileNamePlug() const +const FileSystemPathPlug *SceneWriter::fileNamePlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } ScenePlug *SceneWriter::outPlug() diff --git a/src/GafferScene/Text.cpp b/src/GafferScene/Text.cpp index 4d99b7c6048..a72d761f4eb 100644 --- a/src/GafferScene/Text.cpp +++ b/src/GafferScene/Text.cpp @@ -38,6 +38,7 @@ #include "Gaffer/StringPlug.h" #include "Gaffer/Private/IECorePreview/LRUCache.h" +#include "Gaffer/FileSystemPathPlug.h" #include "IECoreScene/Font.h" #include "IECoreScene/MeshPrimitive.h" @@ -100,7 +101,7 @@ Text::Text( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new StringPlug( "text", Plug::In, "Hello World" ) ); - addChild( new StringPlug( "font", Plug::In, "Vera.ttf" ) ); + addChild( new FileSystemPathPlug( "font", Plug::In, "Vera.ttf" ) ); } Text::~Text() @@ -117,14 +118,14 @@ const Gaffer::StringPlug *Text::textPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::StringPlug *Text::fontPlug() +Gaffer::FileSystemPathPlug *Text::fontPlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const Gaffer::StringPlug *Text::fontPlug() const +const Gaffer::FileSystemPathPlug *Text::fontPlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } void Text::affects( const Plug *input, AffectedPlugsContainer &outputs ) const From 044a14c18a12c851079b66b45cab0939694f04c3 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 30 Nov 2018 18:35:58 -0500 Subject: [PATCH 129/243] remove incorrect library paths causing lots of warnings --- contrib/cmake/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index 3afaceedbeb..20cb9481fda 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -149,10 +149,9 @@ set( BASE_LIBS ) set( BASE_PYTHON_LIBS - ${PYTHON_LIBRARIES} ${Boost_PYTHON_LIBRARY} ${Cortex_IECOREPYTHON_LIBRARY} - Gaffer) + ) #-****************************************************************************** #-****************************************************************************** From d664a728cc1b54bcede7531c3e94b7da3d3b0f85 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 3 Dec 2018 19:25:43 -0500 Subject: [PATCH 130/243] GafferImageTest : compile module for running tests on Windows --- contrib/cmake/CMakeLists.txt | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index 20cb9481fda..c855c19386b 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -191,6 +191,12 @@ set( GAFFERTEST_LIB_NAMES GafferScene ) +set ( GAFFERTEST_MODULE_LIB_NAMES + Gaffer + GafferScene + GafferImage + ) + set( GAFFER_PYTHON_NAMES Gaffer GafferAppleseed @@ -339,7 +345,7 @@ target_link_libraries( Gaffer ${BASE_LIBS} ) # Gaffer Bindings add_library( GafferBindings SHARED ${GAFFERBINDINGS_CXX_FILES} ${GAFFERBINDINGS_H_FILES} ) -target_link_libraries( GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) +target_link_libraries( GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} Gaffer ) # Gaffer Module add_library( _Gaffer MODULE ${GAFFER_CXX_MODULE_FILES} ${GAFFER_H_MODULE_FILES} ) @@ -379,6 +385,10 @@ target_link_libraries( GafferImage Gaffer GafferDispatch ${BASE_LIBS} ${ILMBASE_ add_library( _GafferImage MODULE ${GAFFERIMAGE_CXX_MODULE_FILES} ${GAFFERIMAGE_H_MODULE_FILES} ) target_link_libraries( _GafferImage GafferImage GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) +# GafferImage Test Module +add_library( _GafferImageTest MODULE ${GAFFERIMAGETEST_CXX_MODULE_FILES} ) +target_link_libraries( _GafferImageTest ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBindings GafferImage GafferDispatch ) + # GafferImageUI add_library( GafferImageUI SHARED ${GAFFERIMAGEUI_CXX_FILES} ${GAFFERIMAGEUI_H_FILES} ) target_link_libraries( GafferImageUI Gaffer GafferImage GafferUI ${BASE_LIBS} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} ) @@ -399,7 +409,7 @@ add_library( _GafferScene MODULE ${GAFFERSCENE_CXX_MODULE_FILES} ${GAFFERSCENE_H target_link_libraries( _GafferScene GafferScene GafferBindings GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) # GafferScene Test -add_library( GafferSceneTest SHARED ${GAFFERSCENETEST_CXX_FILES} ${GAFFERIMAGETEST_H_FILES} ) +add_library( GafferSceneTest SHARED ${GAFFERSCENETEST_CXX_FILES} ${GAFFERSCENETEST_H_FILES} ) target_link_libraries( GafferSceneTest ${BASE_LIBS} Gaffer GafferScene GafferDispatch ) # GafferScene Test Module @@ -520,6 +530,17 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) endif() endforeach() +foreach( GAFFER_LIB ${GAFFERTEST_MODULE_LIB_NAMES} ) + if( DARWIN ) + set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".so" ) + set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) + elseif( WINDOWS ) + set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) + else() + set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) + endif() +endforeach() + # Gaffer OSL Shaders file( GLOB_RECURSE OSL_HEADER_FILES ${GAFFER_SOURCE_DIR}/shaders/*.h) file( GLOB_RECURSE OSL_SOURCE_FILES ${GAFFER_SOURCE_DIR}/shaders/*.osl) @@ -600,6 +621,7 @@ add_dependencies( _GafferDelight Gaffer GafferScene GafferBindings GafferDispatc add_dependencies( _GafferTest Gaffer GafferBindings GafferTest ) add_dependencies( _GafferSceneTest Gaffer GafferBindings GafferScene GafferSceneTest GafferDispatch ) +add_dependencies( _GafferImageTest Gaffer GafferBindings GafferImage GafferDispatch ) # Install Libs foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) @@ -615,6 +637,13 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) string( TOUPPER ${GAFFER_LIB} _GAFFER_LIB ) install( TARGETS ${GAFFER_LIB}Test DESTINATION lib/ ) + install( FILES ${${_GAFFER_LIB}_H_FILES} + DESTINATION include/${GAFFER_LIB}Test ) +endforeach() + +# Install Test Module Libs +foreach( GAFFER_LIB ${GAFFERTEST_MODULE_LIB_NAMES} ) + string( TOUPPER ${GAFFER_LIB} _GAFFER_LIB ) install( TARGETS _${GAFFER_LIB}Test DESTINATION python/${GAFFER_LIB}Test ) install( FILES ${${_GAFFER_LIB}_H_FILES} From 654e86869b1731edaf37d2b595401578c4602f1b Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 3 Dec 2018 19:26:25 -0500 Subject: [PATCH 131/243] load test files cross-platform --- python/GafferImageTest/ImageReaderTest.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/python/GafferImageTest/ImageReaderTest.py b/python/GafferImageTest/ImageReaderTest.py index 3f42eafbf09..12e63afdb91 100644 --- a/python/GafferImageTest/ImageReaderTest.py +++ b/python/GafferImageTest/ImageReaderTest.py @@ -49,12 +49,16 @@ class ImageReaderTest( GafferImageTest.ImageTestCase ) : - fileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/circles.exr" ) - colorSpaceFileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/circles_as_cineon.exr" ) - offsetDataWindowFileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100.exr" ) - jpgFileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/circles.jpg" ) - def setUp( self ) : + if os.name == "nt": + gaffer_root = os.path.expandvars( "%GAFFER_ROOT%" ) + else: + gaffer_root = os.path.expandvars( "$GAFFER_ROOT" ) + + fileName = Gaffer.FileSystemPath( gaffer_root + "/python/GafferImageTest/images/circles.exr" ).nativeString() + colorSpaceFileName = Gaffer.FileSystemPath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles_as_cineon.exr" ).nativeString() + offsetDataWindowFileName = Gaffer.FileSystemPath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100.exr" ).nativeString() + jpgFileName = Gaffer.FileSystemPath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles.jpg" ).nativeString() GafferImageTest.ImageTestCase.setUp( self ) self.__defaultColorSpaceFunction = GafferImage.ImageReader.getDefaultColorSpaceFunction() From aeca1d18448cdd5223e2c6f61ac225bca45698e8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 4 Dec 2018 16:17:59 -0500 Subject: [PATCH 132/243] on Windows the %GAFFER_ROOT% variable contains a parent directory (..) element that needs to be expanded --- python/GafferImageTest/ImageReaderTest.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/GafferImageTest/ImageReaderTest.py b/python/GafferImageTest/ImageReaderTest.py index 12e63afdb91..e5e8e9ea082 100644 --- a/python/GafferImageTest/ImageReaderTest.py +++ b/python/GafferImageTest/ImageReaderTest.py @@ -55,10 +55,10 @@ def setUp( self ) : else: gaffer_root = os.path.expandvars( "$GAFFER_ROOT" ) - fileName = Gaffer.FileSystemPath( gaffer_root + "/python/GafferImageTest/images/circles.exr" ).nativeString() - colorSpaceFileName = Gaffer.FileSystemPath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles_as_cineon.exr" ).nativeString() - offsetDataWindowFileName = Gaffer.FileSystemPath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100.exr" ).nativeString() - jpgFileName = Gaffer.FileSystemPath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles.jpg" ).nativeString() + self.fileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles.exr" ) + self.colorSpaceFileName = os.path.abspath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles_as_cineon.exr" ) + self.offsetDataWindowFileName = os.path.abspath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100.exr" ) + self.jpgFileName = os.path.abspath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles.jpg" ) GafferImageTest.ImageTestCase.setUp( self ) self.__defaultColorSpaceFunction = GafferImage.ImageReader.getDefaultColorSpaceFunction() From ab23fd9229d60e2433a0cecd2c61e4b1fd2e0620 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 7 Dec 2018 17:52:07 -0500 Subject: [PATCH 133/243] ImageReaderTest : adapt for Windows --- python/GafferImageTest/ImageReaderTest.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/GafferImageTest/ImageReaderTest.py b/python/GafferImageTest/ImageReaderTest.py index e5e8e9ea082..3f38e3840da 100644 --- a/python/GafferImageTest/ImageReaderTest.py +++ b/python/GafferImageTest/ImageReaderTest.py @@ -56,9 +56,9 @@ def setUp( self ) : gaffer_root = os.path.expandvars( "$GAFFER_ROOT" ) self.fileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles.exr" ) - self.colorSpaceFileName = os.path.abspath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles_as_cineon.exr" ) - self.offsetDataWindowFileName = os.path.abspath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100.exr" ) - self.jpgFileName = os.path.abspath( gaffer_root + "$GAFFER_ROOT/python/GafferImageTest/images/circles.jpg" ) + self.colorSpaceFileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles_as_cineon.exr" ) + self.offsetDataWindowFileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/rgb.100x100.exr" ) + self.jpgFileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles.jpg" ) GafferImageTest.ImageTestCase.setUp( self ) self.__defaultColorSpaceFunction = GafferImage.ImageReader.getDefaultColorSpaceFunction() From 33459dea8777d3b412adabb409208ba78eb9e1ca Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 15 Dec 2018 13:47:54 -0500 Subject: [PATCH 134/243] UserPlugs : add FileSystemPathPlug and set default widget to FileSystemPathPlugValueWidget --- python/GafferUI/FileSystemPathPlugValueWidget.py | 2 ++ python/GafferUI/UserPlugs.py | 1 + 2 files changed, 3 insertions(+) diff --git a/python/GafferUI/FileSystemPathPlugValueWidget.py b/python/GafferUI/FileSystemPathPlugValueWidget.py index 0a40d60a64a..6fe0ada2519 100644 --- a/python/GafferUI/FileSystemPathPlugValueWidget.py +++ b/python/GafferUI/FileSystemPathPlugValueWidget.py @@ -130,3 +130,5 @@ def __metadataValue( self, name ) : v = Gaffer.Metadata.value( self.getPlug(), "fileSystemPathPlugValueWidget:" + name ) return v + +GafferUI.PlugValueWidget.registerType( Gaffer.FileSystemPathPlug, FileSystemPathPlugValueWidget ) diff --git a/python/GafferUI/UserPlugs.py b/python/GafferUI/UserPlugs.py index 30de2a130fd..142cc955ae5 100644 --- a/python/GafferUI/UserPlugs.py +++ b/python/GafferUI/UserPlugs.py @@ -53,6 +53,7 @@ def appendPlugCreationMenuDefinitions( plugParent, menuDefinition, prefix = "" ) menuDefinition.append( prefix + "/NumericDivider", { "divider" : True } ) menuDefinition.append( prefix + "/String", { "command" : functools.partial( __addPlug, plugParent, Gaffer.StringPlug ), "active" : active } ) + menuDefinition.append( prefix + "/FileSystemPath", { "command" : functools.partial(__addPlug, plugParent, Gaffer.FileSystemPathPlug ), "active" : active } ) menuDefinition.append( prefix + "/StringDivider", { "divider" : True } ) menuDefinition.append( prefix + "/V2i", { "command" : functools.partial( __addPlug, plugParent, Gaffer.V2iPlug ), "active" : active } ) From ae9aa4b48f480c9e45d46f180c9dc56af20fea28 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 15 Dec 2018 13:48:58 -0500 Subject: [PATCH 135/243] ImageWriterTest : adapt for Windows --- python/GafferImageTest/ImageWriterTest.py | 42 +++++++++++++++++------ 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/python/GafferImageTest/ImageWriterTest.py b/python/GafferImageTest/ImageWriterTest.py index 37f90e1d8f6..4e1027524b5 100644 --- a/python/GafferImageTest/ImageWriterTest.py +++ b/python/GafferImageTest/ImageWriterTest.py @@ -54,15 +54,21 @@ class ImageWriterTest( GafferImageTest.ImageTestCase ) : - __largeFilePath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/large.exr" ) - __rgbFilePath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100" ) - __negativeDataWindowFilePath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/checkerWithNegativeDataWindow.200x150" ) - __representativeDeepPath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/representativeDeepImage.exr" ) - longMessage = True def setUp( self ) : + if os.name == "nt": + gaffer_root = os.path.expandvars( "%GAFFER_ROOT%" ) + else: + gaffer_root = os.path.expandvars( "$GAFFER_ROOT" ) + + self.__largeFilePath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/large.exr" ) + self.__rgbFilePath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/rgb.100x100" ) + self.__negativeDataWindowFilePath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/checkerWithNegativeDataWindow.200x150" ) + self.__representativeDeepPath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/representativeDeepImage.exr" ) + + GafferImageTest.ImageTestCase.setUp( self ) self.__defaultColorSpaceFunction = GafferImage.ImageWriter.getDefaultColorSpaceFunction() @@ -477,7 +483,11 @@ def __testExtension( self, ext, formatName, options = {}, metadataToIgnore = [] # the writer adds several standard attributes that aren't in the original file expectedMetadata["Software"] = IECore.StringData( "Gaffer " + Gaffer.About.versionString() ) expectedMetadata["HostComputer"] = IECore.StringData( platform.node() ) - expectedMetadata["Artist"] = IECore.StringData( os.environ["USER"] ) + if os.name == "nt": + user_key = "username" + else: + user_key = "USER" + expectedMetadata["Artist"] = IECore.StringData( os.environ[user_key] ) expectedMetadata["DocumentName"] = IECore.StringData( "untitled" ) for key in overrideMetadata : @@ -784,7 +794,11 @@ def __testMetadataDoesNotAffectPixels( self, ext, overrideMetadata = {}, metadat expectedMetadata["DateTime"] = regularReaderMetadata["DateTime"] expectedMetadata["Software"] = IECore.StringData( "Gaffer " + Gaffer.About.versionString() ) expectedMetadata["HostComputer"] = IECore.StringData( platform.node() ) - expectedMetadata["Artist"] = IECore.StringData( os.environ["USER"] ) + if os.name == "nt": + user_key = "username" + else: + user_key = "USER" + expectedMetadata["Artist"] = IECore.StringData( os.environ[user_key] ) expectedMetadata["DocumentName"] = IECore.StringData( "untitled" ) expectedMetadata["fileFormat"] = regularReaderMetadata["fileFormat"] expectedMetadata["dataType"] = regularReaderMetadata["dataType"] @@ -983,7 +997,13 @@ def testFileNamesWithSubstitutions( self ) : with context : s["w"]["task"].execute() - self.assertTrue( os.path.isfile( self.temporaryDirectory() + "/test.tif" ) ) + self.assertTrue( os.path.isfile( os.path.join( self.temporaryDirectory(), "test.tif" ) ) ) + + s["w"]["fileName"].setValue( self.temporaryDirectory() + "/test.#.tif" ) + context.setFrame( 5 ) + with context : + s["w"]["task"].execute() + self.assertTrue( os.path.isfile( os.path.join( self.temporaryDirectory(), "test.5.tif" ) ) ) def testErrorMessages( self ) : @@ -1070,7 +1090,7 @@ def __init__( self, name = "DerivedImageWriter" ) : GafferImage.ImageWriter.__init__( self, name ) - self["copyFileName"] = Gaffer.StringPlug() + self["copyFileName"] = Gaffer.FileSystemPathPlug() def execute( self ) : @@ -1112,7 +1132,7 @@ def testStringMetadata( self ) : def __testFile( self, mode, channels, ext ) : - return self.temporaryDirectory() + "/test." + channels + "." + str( mode ) + "." + str( ext ) + return os.path.join(self.temporaryDirectory(), "test." + channels + "." + str( mode ) + "." + str( ext )) def testJpgChroma( self ): @@ -1127,7 +1147,7 @@ def testJpgChroma( self ): chromaSubSamplings = ( "4:4:4", "4:2:2", "4:2:0", "4:1:1", "" ) for chromaSubSampling in chromaSubSamplings: - testFile = os.path.join( self.temporaryDirectory(), "chromaSubSampling.{0}.jpg".format( chromaSubSampling ) ) + testFile = os.path.join( self.temporaryDirectory(), "chromaSubSampling.{0}.jpg".format( chromaSubSampling.replace(":", ".") ) ) w["fileName"].setValue( testFile ) w["jpeg"]["chromaSubSampling"].setValue( chromaSubSampling ) From 86857cd7341a12df033877edc909ed35a5405083 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 21 Dec 2018 16:15:36 -0500 Subject: [PATCH 136/243] FileSystemPath : return correct owner for single files --- python/GafferTest/FileSystemPathTest.py | 9 ++++----- src/Gaffer/FileSystemPath.cpp | 7 ++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index a4609df30ef..bb12854efc4 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -389,14 +389,13 @@ def tearDown( self ) : def getFileOwner( self, filepath ): # Windows Python does not have a reliable native method to get the owner - # Call "dir" as a workaround + # without installing the Win32 package. Since the files being tested + # are created within the test process, assume the current user is + # an acceptable standin for the file owner if os.name is not "nt" : return pwd.getpwuid( os.stat( filepath ).st_uid ).pw_name else : - cmd = "dir /q {}".format( filepath ) - fileInfo = os.popen( cmd ).read().split() - self.assertTrue( len( fileInfo ) > 11 ) - fileOwner = fileInfo[-11] + return os.environ["USERNAME"] GafferTest.TestCase.tearDown( self ) diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 14bcd2fc74b..5b997db1f7a 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -266,13 +266,14 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr } std::string n = this->string(); - struct stat s; - stat( n.c_str(), &s ); + #ifndef _MSC_VER + struct stat s; + stat(n.c_str(), &s); struct passwd *pw = getpwuid( s.st_uid ); return new StringData( pw ? pw->pw_name : "" ); #else - return new StringData( "" ); + return new StringData( getOwner( n.c_str() ) ); #endif } else if( name == g_groupPropertyName ) From 87051f1c4a6e1a5f68179bcf899aa5fdd77dc650 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 23 Dec 2018 15:48:20 -0500 Subject: [PATCH 137/243] buildWindows : add ability to build other types than release --- contrib/cmake/buildWindows.bat | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildWindows.bat index f23ce9a63c6..cff76d763a9 100644 --- a/contrib/cmake/buildWindows.bat +++ b/contrib/cmake/buildWindows.bat @@ -2,7 +2,11 @@ set ROOT_DIR=%~dp0%..\.. cd %ROOT_DIR% set CMAKE_GENERATOR="Visual Studio 15 2017 Win64" -set BUILD_TYPE=RELEASE +if not "%1" == "" ( + set BUILD_TYPE=%1 +) else ( + set BUILD_TYPE=RELEASE +) del /f CMakeCache.txt From 9fe7213ab409323d789d2eaf8df360970250c581 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 28 Dec 2018 15:43:03 -0500 Subject: [PATCH 138/243] Backups : add Windows path compatibility --- python/GafferUI/Backups.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/python/GafferUI/Backups.py b/python/GafferUI/Backups.py index a61ffda15ee..a9a3429d73b 100644 --- a/python/GafferUI/Backups.py +++ b/python/GafferUI/Backups.py @@ -46,6 +46,9 @@ import stat import weakref +if os.name == "nt": + import ctypes + class Backups( object ) : def __init__( self, applicationRoot ) : @@ -95,6 +98,11 @@ def backup( self, script ) : dirName = os.path.dirname( fileName ) try : os.makedirs( dirName ) + # Avoid the win32 module dependency by using ctypes to make directory hidden + # The magic number 2 comes from https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfileattributesa + if os.name == "nt": + ctypes.windll.kernel32.SetFileAttributesW( unicode( dirName, "utf-8" ), 2 ) + except OSError : # makedirs very unhelpfully raises an exception if # the directory already exists, but it might also @@ -266,7 +274,7 @@ def __potentialFileNames( self, script ) : context = Gaffer.Context() context["script:name"] = os.path.splitext( os.path.basename( fileName ) )[0] - context["script:directory"] = os.path.dirname( os.path.abspath( fileName ) ) + context["script:directory"] = os.path.dirname( os.path.abspath( fileName ) ).replace( "\\", "/" ) pattern = self.__settings["fileName"].getValue() fileNames = [] From 3ec0306e1854fcc66d70be0dcd294853f04dd0db Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 2 Jan 2019 18:14:14 -0500 Subject: [PATCH 139/243] Gaffer Windows : make sure the built-in Python is used and handle error return codes appropriately --- bin/gaffer.bat | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 923e47e49e7..cbbb25bd3d4 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -64,11 +64,10 @@ rem if defined ARNOLD_ROOT ( rem ) @echo on -python %GAFFER_ROOT%/bin/gaffer.py %* +%GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/gaffer.py %* if %ERRORLEVEL% NEQ 0 ( echo "Error(s) running Gaffer" exit /b %ERRORLEVEL% - ENDLOCAL ) -ENDLOCAL +ENDLOCAL \ No newline at end of file From 9083658aae1193883b58b20843a37ef277c56e51 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 2 Jan 2019 18:21:14 -0500 Subject: [PATCH 140/243] Windows Build : use JOM for faster builds - MSVC make doesn't use multiple threads --- .gitignore | 2 +- contrib/cmake/buildWindows.bat | 5 +- contrib/cmake/jom/changelog.txt | 185 ++++++++++++++++++++++++++++++++ contrib/cmake/jom/ibjom.bat | 5 + contrib/cmake/jom/jom.exe | Bin 0 -> 2654208 bytes contrib/cmake/jom/xgejom.bat | 6 ++ contrib/cmake/jom/xgejom.xml | 13 +++ 7 files changed, 214 insertions(+), 2 deletions(-) create mode 100644 contrib/cmake/jom/changelog.txt create mode 100644 contrib/cmake/jom/ibjom.bat create mode 100644 contrib/cmake/jom/jom.exe create mode 100644 contrib/cmake/jom/xgejom.bat create mode 100644 contrib/cmake/jom/xgejom.xml diff --git a/.gitignore b/.gitignore index de644ba6862..a2c6fced7a5 100644 --- a/.gitignore +++ b/.gitignore @@ -34,5 +34,5 @@ Debug/ *.dir/ CMakeFiles/ x64/ -cmake/ +./cmake/ graphics/ diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildWindows.bat index cff76d763a9..355710bff2a 100644 --- a/contrib/cmake/buildWindows.bat +++ b/contrib/cmake/buildWindows.bat @@ -1,13 +1,16 @@ set ROOT_DIR=%~dp0%..\.. cd %ROOT_DIR% -set CMAKE_GENERATOR="Visual Studio 15 2017 Win64" +set CMAKE_GENERATOR="NMake Makefiles JOM" + if not "%1" == "" ( set BUILD_TYPE=%1 ) else ( set BUILD_TYPE=RELEASE ) +set PATH=%ROOT_DIR%\contrib\cmake\jom;%PATH% + del /f CMakeCache.txt cmake -Wno-dev -G %CMAKE_GENERATOR% ^ diff --git a/contrib/cmake/jom/changelog.txt b/contrib/cmake/jom/changelog.txt new file mode 100644 index 00000000000..e3338470dc7 --- /dev/null +++ b/contrib/cmake/jom/changelog.txt @@ -0,0 +1,185 @@ +This is the changelog for jom 1.1.2, the parallel make tool. + +Changes since jom 1.1.1 +- Fixed exit code propagation in xgejom.bat and ibjom.bat (QTCREATORBUG-16619). +- Updated the CMake build system to use Qt5. +- Fixed bogus path in error message for failed targets. +- Fixed error "JobClient destroyed while still acquiring." that could be yielded + for failed builds. +- Fixed /k option (QTCREATORBUG-17131). +- Fixed sub-jom detection for chocolatey shims (QTCREATORBUG-15494). + +Changes since jom 1.1.0 +- Added the special .NOTPARALLEL target that disables parallel build for the + containing makefile. +- Fixed glitches in !include directives. Includes like <"foo.mk"> were not + possible. Includes like "foo.mk" did not recursively search through parent + makefiles directories. +- Introduced the JOMFLAGS environment variable. This is a MAKEFLAGS pendant. + JOMFLAGS is useful to set up separate flags for nmake and jom. +- Renamed ibjom.cmd to ibjom.bat for consistency. +- Added xgejom.bat, a wrapper for the IncrediBuild XGE interface. +- Fixed wildcard handling for subdirectories (QTCREATORBUG-16499). +- Implemented the "build all targets" option (QTCREATORBUG-16500). + +Changes since jom 1.0.16 +- Restrict the number of parallel jobs in recursively called instances + similar to GNU make's jobserver (QTCREATORBUG-10846). + +Changes since jom 1.0.15 +- Fix occasional hang on exit (QTCREATORBUG-14600). + +Changes since jom 1.0.14 +- Fix potential hang on error in a sub-jom. +- Yield error on missing !endif directives (QTCREATORBUG-14211). +- Fix ignoring exit codes greater than 255. +- Fix /DUMPGRAPHDOT option (QTCREATORBUG-14004). +- Fix $? filename macro for nonexistent targets (QTCREATORBUG-14125). +- Fix quoting of dependencies with spaces (QTCREATORBUG-12296). + +Changes since jom 1.0.13 +- Fix exit code forwarding. (QTCREATORBUG-11556) +- Fix file name macro modifers for $** and $?. (QTCREATORBUG-6932) +- Fix equal signs in semicolon command syntax. (QTCREATORBUG-7942) +- Fix error line numbers for inline files. (QTCREATORBUG-8451) +- Ignore macro assignments in inline files. (QTCREATORBUG-8452) +- Yield error on unexpected !ENDIF directive. +- Support wildcards in dependency lines. (QTCREATORBUG-10439) +- Use IcrediBuild's BuildConsole instead of the XGE interface in ibjom. + +Changes since jom 1.0.12 +- Fix spurious "Can't start command" error. +- Fix passing of -j argument to subjoms. +- Sanity check the -j argument. +- Fix regression of non-functional set command in command blocks. +- Fix handling of environment variables that would cause a syntax errors in + makefiles. +- Fix handling of environment variables with lowercase names. + +Changes since jom 1.0.11 +- Performance improvements. +- Fixed whitespace in command line arguments. (QTCREATORBUG-7428) +- Enhanced responsiveness of subjom output. +- Separate output of stdout and stderr. +- Fix the output of silent commands in /n mode. (QTCREATORBUG-7170) +- Implemented the /U switch for dumping inline files. +- Fix expansion of environment variables. + +Changes since jom 1.0.10 +- Fix exit code for /k command line switch. (QTCREATORBUG-6987) +- Fix spurious 0x0d characters in process output. (QTCREATORBUG-6986) +- Fix process output ordering and printing of large amounts of output + in recursive jom scenarios. +- Improved performance by caching file time stamps. + +Changes since jom 1.0.9 +- Fix regression that caused jom to fail on Windows XP. + +Changes since jom 1.0.8 +- The GNU Make option -w is now supported to print the current working + directory before and after other processing. +- Fix crash when specifying a target for an empty makefile. + (QTCREATORBUG-6552) +- Fix lookup for targets in the Makefile's directory. (QTCREATORBUG-6546) +- Fix handling of environment variables. (QTCREATORBUG-6578) +- Specifying an exit code with the '-' command modifier was fixed. +- Fix command modifiers in inference rules. (QTCREATORBUG-6742) +- Fix parsing of the "ignore exit code" command modifier. +- Fix (very rare) deadlock and zombie processes. +- The preprocessor directive !include now looks up files in the + include directories correctly. (QTCREATORBUG-6869) + +Changes since jom 1.0.7 +- Fix spawning of child processes that expect a valid stdin handle. + E.g. xcopy couldn't be called anymore. +- CMakeList.txt was fixed (thanks to Ryan Pavlik). + +Changes since jom 1.0.6 +- Fix blank lines in output. (QTCREATORBUG-3974) +- Small performance improvement due to compilation with + QT_USE_FAST_CONCATENATION and QT_USE_FAST_OPERATOR_PLUS. +- Ctrl-C handling has been revisited. Much simpler and more correct. + Before the compiler jobs didn't get a Ctrl-C but were terminated. +- Special .SYNC dependents implemented. See README for a small description. + (QTCREATORBUG-3257) +- Handle quoted dollar signs in inline files correctly. (QTCREATORBUG-2875) +- Respect the MAKEFLAGS environment variable. (QTCREATORBUG-5028) +- Complete detection of cmd builtins. This fixes annoying warnings when building + with IncrediBuild. + +Changes since jom 1.0.5 +- Fix mean monster spawn issue. + +Changes since jom 1.0.4 +- Fix out of date check for pseudotargets. (QTCREATORBUG-3909) + +Changes since jom 1.0.3 +- Fix that -j1 wasn't passed to sub jom calls. (QTCREATORBUG-3729) +- /KEEPTEMPFILES was added for debugging purposes. (QTCREATORBUG-3852) +- Performance boost for incremental builds. +- Improved Ctrl-C handling for recursive make. + +Changes since jom 1.0.2 +- Support variable names with underscores. (QTCREATORBUG-3235) +- Keep order of dependencies on build. This is important for makefiles + lacking complete dependencies. These might fail in parallel builds + otherwise. +- Fix issues wrt environment variables. (QTCREATORBUG-3108) + +Changes since jom 1.0.1 +- Make target names case insensitive. (QTCREATORBUG-3037) +- Fix reading of include files without newline at the end. + (QTBUG-15021) +- Repair the cmake project file for jom. + +Changes since jom 1.0.0 +- Cleaner and faster determination of targets that must be built. +- Fix incomplete up-to-date check for inference rule targets. + (QTCREATORBUG-2713) +- Don't filter comments in inline files. (QTCREATORBUG-2874) + +Changes since jom 0.9.4 +- Inference rule batch mode implemented. + This improves performance for makefiles that make heavy use of the batch + mode, e.g. qmake generated makefiles. +- Improved command execution. No more batch file writing. +- Macro substitution implemented. Macro expansions like + $(TARGET:suffix=d) are now possible. +- .SUFFIXES content is handled properly. +- Fixed several bugs in file name macro expansion. +- Output of concurrent processes is explicitely separated. + +Changes since jom 0.9.3 +- Opening files from volume mounted to NTFS directory fixed. + (QTCREATORBUG-1475) +- Output buffering issue fixed. (QTBUG-10798) + +Changes since jom 0.9.2 +- Support for multiple inline files per command line added. +- Its now possible to use "." as target name. (QTCREATORBUG-1131) +- Support file name macros in the file name part of inline file defitions. + (QTCREATORBUG-1136) +- Multiple file name macros per command line are possible now. +- Single name macro invocation was added. + They can be invoked like this: $A instead of $(A). +- Several bugs related to file name macros have been fixed. +- Handle quoted arguments from command files correctly. + +Changes since jom 0.9.1 +- Fixed conditionals in preprocessor expressions. (QTCREATORBUG-1091) +- Improved parser error messages. Now we see the file, in which the + error occurred. (QTCREATORBUG-1114) + +Changes since jom 0.9.0 +- Having too many rules for a target is now a warning and not an error. +- Fixed several bugs in the preprocessor expression parser, e.g. + QTCREATORBUG-1056. + +Changes since jom 0.8.9 +- Reset the ERRORLEVEL to zero, if command's exit code should be ignored. + (QTCREATORBUG-837) +- Command files can be used to pass command line options to jom. + Usage: jom @commands.txt +- ANTLR isn't used anymore. We're using QLALR to generate the parser for + preprocessor expressions now. This makes building jom much easier. + diff --git a/contrib/cmake/jom/ibjom.bat b/contrib/cmake/jom/ibjom.bat new file mode 100644 index 00000000000..cc8843d1ce8 --- /dev/null +++ b/contrib/cmake/jom/ibjom.bat @@ -0,0 +1,5 @@ +@echo off +setlocal enabledelayedexpansion +if "%IBJOM_NUMBEROFJOBS%" == "" set IBJOM_NUMBEROFJOBS=20 +BuildConsole /command="jom -j%IBJOM_NUMBEROFJOBS% %*" || exit /b !ERRORLEVEL! +endlocal diff --git a/contrib/cmake/jom/jom.exe b/contrib/cmake/jom/jom.exe new file mode 100644 index 0000000000000000000000000000000000000000..acb790273f1f748b61feab07f281e1c919ccb84d GIT binary patch literal 2654208 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

NIpANL4_%V_ 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

YN8B)Cum-LVoB>{v$BPzr!;jPy8L8C$iuF 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 G{qQ}8 zbj^9uW9e%|gH#}H3+u@R4jEsG<4G_9 zhoEe{2@13(k>;CTStCB7g?f*_U4H@AS)k*(=suG}m*FjwG%!Z-?a{ZKz@scsUZnzi zJV8Cb$^A9|5hm1K=gQo(?e*@j0kLv4a*l$5oowm>p-qA<8`CHy&qj~uEgy!7Lx1ME z1O6kZ#$61Ec9+aTy04(;50E6DPPkR*c(eFLS67H9gsV_HG1wn?ZLc6#BwQ*Q^Epvr1AY)o6bl-5S`~i`+Y24_3p@(M z#rUy&S@@OaUti$Ojp|3ycCJq1DxF@|YOtA9aAC3(lk)O~G#$@Te!VId-C9t4GtL2Z zS9l$3x61qbcL2uAZ5z8LU?w?5q9)5vmc#32wyZV`@E@DBDN&Z;5Fy!vOmQ~v^0FSX z<`L3-gX&(d3il;YI!O@Q3mk;(=qod2_h`v$YgT?J!u#c)!oNVVJOW6knfMai+oJT! z%)iJmE@Z0Rez53Rg z04~_pd}mB@M9-MdlDR!(UiAhHanlH59OZh2`DuPL$Q+}5rO~#u!12|)Ij%n9q;5Xd z>n*wy|I-)ZG&4L&zG%e-c1azBm~Ebh$yoA=TG}=T<{RnaVUb|J09NJ(&M4&&IKY<_kOF{LTiw*Y`4DqiKAUmU5-7IJy zZ60RcS&tOV4~X)zYCSzZCT|Y??vcl&SaoHEc_Zy+8W&TaXu|XPK9leECHuo%F5yf%hLR|C+JJ`y!9!)UG%I-9=;l*xG>tHks)p(6_H8vS^r9V+so^uS)1q%^IGp?r zHI`Gb;m2veo96MT5QeQ+`Rl|n;F1yGmgc{?+J&7?KZx=fN;%1Ab~+A4)tqv29<<3GIoJ#3%sIc+kv&3!5a4^<1Wa?9RG$hQ2q-IEnZ3z_?fb;k^v zTx+fTw$_@gmFyYhLJItO_3ni?BMPfG@XaQpf6RqK;tgzmkzGq;q$R>HL=j7iFzvD8 za8;?bmK^Jdy(2r&wI*E_u+2V3E4RWba{>BInxt0T&9!a9KiJJKrYd`xT~87ast~ix3X+~tcxFtNqI$&z#Fk*F6Mn;^aU^TvL zS@DGfvcrk1v~2e&se{6kP|7FS_C(T>)n*m$0SST=}U0Picf*zXvSZuI>}#ATIF6r zW3yd5NlBZiyXO}4;WxPhJ@q%sdJ&~rfxO@6qCwuQfTrH|nNz)O zhI-qq0dFH%UUTFlocRssZjNDw9P9$zV?`)18M7HqLXKsNVnS!A1z=j zoFr$>$)puMjz*j{iV5~JB7j9tq*ZDUwp8J?ON8tre~QNmb~4M*M57u(W#OYhc!XTb zMqFWC-E7Z>CW za4gTd;j#%#u&>>oCLsM~mZxy`y6c>wd29%>9bBXEy;8RW%U%jZ1lApK$^^LPh`!K+ zmzFTdz{GG>^tf-$g|>qbDzg7pyB#-k81Z4|xhs?vKPNVk9A|>tD2IQ+_TXvJBUhp# zwe{iVW%!B;-=f=5Xj3}S6&@K_=m`(2G@E{4)w{-xWNW*kt1(gb+|$rkiLkup0(~3m zsgOBu5OsG(22q!nN}YQEb>FHwHFbag{wb(S=retMViRT*oVxN9AR&VN85`|6z zbvEFz`%!04+U489g<4nswge1`1P(^6!h$1!>N6;2F5{paSm<6ul$yRrba0Z~UHtcx z-_7kz^VmW+)pW~|hsaU;s9&l4Eq7G0d@L6Xur_ZE(UF)Q)B18yUjk+BH8Rsu+EZz|X$0&Wh^#VC(HxIulP@as#O8Q<(iJX& zu7P}XaeugbE|LfqISY0zGE(S{Uuk|sYh{96c`}lPGMQWYl)}{UBFDwa79AO{m-GO+ zss;^K#48^D1u{~l_DJVo;Jd5ok2xGDF@Fa-3uZuO8JIp~Uz1@YR}*VFvFU30yzJtx;7b-UU#t-f3^{^$ z9^%9-Tw1_3!{gVUI2@0UUy*Kp>o)PxxMB&YF!MQZsaTAC|6q%A$_PqMt7%ab`H=v@ zV#1_2OilbTZRtXcM1PWQ&ZC0Zc>Q`$(Qa$@U3NW_wWGuugQfocqP{LX@H6J%sEMtz$l zgx+|WyT>_8(GobMtq+Tq5KFh(d=M_O&39s4xs>Ci<=qMXH-TK*hBu`J60JnM7~xDi z;eY=MU(dEdzMj~tm9J+`6we;O=5~$QAYMaBIWJI zB=)ggvPyQolrFiHmZCpfKRUHb5@Rao2bGj98};$gq{|q>N%cIgB>ce`uIbo4aoJ8d zD%llO8NbN?=xIVh+$9(Z{&<70?RDDPtW#Dcq!`h%v-(pKbty?j^E2W)}Yx;_MY6Fw|A9+n%m zU3x33@RbW9q$ZiUGVQ8_oAsG*(e>rxLWb*VTI-P!O)YD_8fZh4e5ZF>th}!$gRc~r z73f?2$3FJ#J&x8EO9DR)|(V zxvn?KW3i@Q{-^4maq`~}jr%_0cZa&FWV1vCP+qhhBcwCh;U>Fnto)$Tx7J1P{Ahs% z0V=84RdcKuo{(A6D^1$3nzS^n^~4DLa8?H1y>q!9+=b_Uto%u!o`g{ZI_swrt#0*2 zVaUwnLG@J9@5K0CzCX}*=SaPe2Wh!L_>}KQ<*o-0NQ&JjNwMqp#lk*Mbc+|& zda|vQqrt)6X`IO+KG3PHpCPj~vRCya42k@`+Io|z#J0x>S5}*Ud6CZQiq#%aSqenO ztp_{x$+7w_1=!#bloD58JQMQ)Ne#t3E7(TsUV|*X%kbXJ&Ilxv{2PREu*uX1y2;ph#*^`+<#tIuJNzOu5<)==P7XBJYx&DrEkBwpAXWsctWU>a;_P zT`nC~dw@QZCE|XQMs$jRnwdg;CX1!U>w1ybq>Il|*UH@ZN|&@Il&5$6mx+Mp>@hYFH=q22a@6^ymp zk`b8i);5fj$*xv_(IgX{t+&yjo_S``x0KA@eJ8()TCiMvpyoF+zt!O9{v^|Zxe&fY zwI51Y<^Imtg5%hGj}v)Y>LScUXbYNaC6WZ-GTg z_HHlY4fZBZ1t{n|%nnC`9IwjhQ^oUF>k z^aVEImyq)a(3`mp``UiYYUO*4VuwCVaMTTV2(P(H6BaHD192Uz*Dkp|&0C}H+@|gz z@#JuG_BOX`_BKa}unsJ9?W=zVm9bh=W)!Bo`n?D>AdiX1sjEeVAi{g8WuEDmTB>@B zS}4OdtlXNV4Y8`;@LB!s8Xl;2*Qdv--94rK7k!pHlqH@8T32MVYDl;wX&?^1Z?(Fr z_wXzaGyBf4#={D*o0g$$C>*pZKUU`Y&9!RL#I96GZu&^J1BMbV&B7#TW}J2W7`QOk zSkDNYoTLi*hDapVbeq}4{2C0eXE;ijoX?n7or`YwKV?U>Q56%rZQ^{Hf*&@d{~0?m z_*YkmQFkEk$rSEW<#FwnlNBLN*7gVpOD+rugJ>0pa9B_mzRbdb5T1{*ZGQ~=xxdU} zCqsBT4%+Rl_!G1X@DbdC_pQ80L@Uu~_;<*+fWSfcz@|a!ZJVjoh)IfQml?|Jz{8Tn~^zZrP|HpIqACNkSZisNN-WQ5 zVq7(r7aBpf!h@AyYn}}&lP5>%P0|tmHtp9PuDqM zVnhb(Kn~Ypn;abPoyFl~mQ&oxKNMgsbaFgXsRH&mT}*H?xe3ifZI~UIsP8Ol@$a6t zuN$p)X(tQTS2yMAh^sC(x58`Q!=~)wx`(H)io`GJgU|)}*ow|#j z#eAEsm3A>F_UahL68i3|^*wsWzeMKm7$oy|*fReFp>^VPq4l}Q23AWB^rEyDYEuYT z9ct+_M!c5PKiLMflQkN`BfPQ41>)N_n_Z^NX6N1uLsn)pLomO^)@jZH#9miFElluO zlVFSYj5ZVsc!&C>OlYbM;Btw%U15&+o0=Vb`5dZcE>9IQT!H9gNm^q$Q& zx%aQEZ?FX8kIO1FTlvXmtM3H3ug2;|dQ;tcLyVDhrLYHG)naw!)y-B{o&?!`p?zcU z4uo_1z!eJqhv;ZIw(E`>>}OarSd1WvEJh+S++PvRF9jy+N5q17_%*&43$}-dE5hQB za$%-6`zXI~E|P*v#oOKAuKoH5KXU?G(2Z!nZby^IO+WY~$CHU?@<1G7r2*XKiv>k4 zOgEoeL{|nKI5OS%>t}jt-Y%&&UI9O%+*@PWV9&yYo|ta_S_NjN6rQ$L#)!1SIdm>x(;`Xfr`s*Y4)8TafgRyyAGrI&!Y^gwL(Wk2CbOU zyOp6UaZf=fqs>0zKZ4~{!L;iyN^H{xBDu42l%mR*f*i|qX?Op+z=|nj_1BoAAr8U> z!8S*jSVE5xcrCJE@J=Yu&`WUDt&?_IsW`=>mi86$?+Yg67}@CH%ZPhl54S05=&f#9S#Z`Mk!UpGQ-a<#U&X%xH8`@3?hxm@gQ!5x*GDGK19INzuj$?C)jQHUd`iuVOMB7rHL*@khp^>gB zq`SWkN2@Z8Nw^;#)JGZKan`{{rh+I+`v+n;WFVxGM@4m})xxFph3TV(qSxqP3NR~i zQlKh%Yvh}Hus0CQmfiAZ1?2%F93XlrKHgu*!uuc#46690cwzO=Z_%84idqCA9tpEg z*F-7K5^^Svre}~DuAbPg+lcH!LQY=y>DLn6;!K{s&OlyAAVbOcWs^CQX#;(Pvq;WG zzAP1Qg<_XfVaePULIrEmU4;_^`w8ZQ*1x%3-GOJqU#_f9#HUnvC0t{+tX+M+Y#qj= zsNP1j&lGijpW*}krbXgN-sjqd!VCynIg+Mle;rq^OmLJ++=5CG%j%ehoPbqrjLQ7(O*1;3N-$9Qi(Qt=!h2Z@qX0mI01xQa~A*`q|S4_6}lN~EJ zPsPf8vxADxBvx+3CybT*>{KNhO03*Y^WAUp^vQ0osj+fuzBr{vs|5w^1?g#R#tZ&; zm|`&xeK!DE#hT+*s2t{ObCk5x@&G)W9px-xDc6MNF@UnxesZO1(Mc8ytN*)F`#)zW z{!a!1JgH@ZF@bJ$bNc!;ESLO69yA(_fKFSO@b~aVfOH10);7q{S79G>9W~tZ;WNQr zV}_ma?(E4B&hgGlKlX=e%u)+6_$?&q7;;d=ROkW&kNJuHVvy=>pmO4M>J>&UAaFQ) z>n}ZuBCsz|-y2?tvNn1oFMNIU$Qdisqeq4B}y96 z?)o-ALT2F$@%WJ8tH8mp6mO~e-pGG)^n|AcUJj3_i~jqGJY&WQ@bKYk{+IV1(;cG3 zYuZh1joYu4LfkEB(D%D9k%KZP z_?EipH4#004dWYqS<7G+OhOMyuXqDHg9}+(DW{qhfVVy08PQgCbedIg90jdEg3b0-UV3 z>F0IRj&- zGXW(94y+p!!Z!%fgB*n;ERUSumP5ASvcv1=&B_$_R zahdBw$o1h^S*K@Oq4y^rMOB=)4>b9`OmV5YJFi>q!+^BWI7FQz(W|@ep=()?l$@BIGH2 zj7Pq&TJ``$lRNCg2hd!N47?Z_zDRFX)nmrDUJOuNopvU3Uv@|ZPsA|U^=DB(o8l_= zrITaz`mgDH(u%_L<@z%-tmNN`>tVDAU5AGf=!I!l8RQd#3FOAT34iXUeq7TA_+=4r7dz->Hh|LkfW&6^|tN!)ES%W=|~f;o-b4pfo6pk*dkp$F4@MxdJ}D{bsO{zV#($`pyypehXkunsgNAKjEmZ+cHo4k- z?HQ>Qyr~Rl_*~598L4qW}HAWt7IS+vilNFvnyVmU43TcPG0o<^Y&tF}&l zoEKD>`7Ud}kuY;L|2bf#u77I@=BnlY=yz48HPdND+lhoblQ*ZW8<|+_qNs7(e4u{; z4Bh{AR#n%W-2c*Fr^H)Q>t-O{(tz>0beBC|9&5ZjryDQNCmgSvzBph!pl{%KeK=^m z=>5cqeS-DAD_sRzCf7Um2wY56`a-zmQT<9W^caaug`@G0OPt(Ar+CVn`dp6-)O%!* z99z&JI!=TPbEg~ya4|bowH#4=%Kv|FWLiq0EEG%q@0LO?PQ*Bcita0qTLK0!mvegI z!dimv(RX>7P}mF3m-}eAI$&&|7Fy6EHq?M!O1gM5C} zH5W{m!iD>e)yC!vvWxwE|7;VyUfFcO_Dirzy^wQ?zQ&C~9D-eOev$4{et75*kMv4z z$b1}GojY_4@66#~Dj{2YaagxX2Rez5qx)io`bcEC^W-Ry+ZQJxBu}(~T5?q4vU28` z^-(ohvaK5s20hB{O%bGaW4$Papxjh~ywKtmg7QM9ih)ZIl&c8xLeNG11dWBD9Gjq7 zLeMlt5Pd?din7O#gL9sfATD>FdEo1cIQ*@xLh#axd8i_-{mUodYwAX7f1b?0)Nz9@ zW`u3|d*FJw1NJFHVBeS4<1dYL4azH;-Q48BNThGzDBDoGzeALwHRKPyRGotThxMKN zPQZWPvU*b=v1p;CQ;2y|gS{bCYR2;tVHQW;jOFtyb_6ANw&X9igGYuB)JF>71HEssB3#wv4Whf{{ zQ91kcy)p*5`cB~({@wnLeMk2l!6how$eznPd{yKwxE0m)hgx(4OH|u5M&F{poC1%S zt8YtzW*n()ddA8;qR^)+^*7B;?Ka;9mvJon<1#Hv`LN?8d-buBBkL?^qk#) z=)v?>=_OC}z!B*vU-b1%{|SkFF|ubFvovBSF0I3O+Nc;3GIZu43$&Avh!?jX-dBgk z@zaFBMcaMo-ta6TNQxBS9E`5iHjVUmMy`iNWQ(C8uV}l7zJPeP>U$NNb>n8{Eu`q> zi~Mq9)66R|=*&susk4@()l}D1R~Xa5?);rXlF8LO)$^(Ajn|2~5=Nlayh4z3@w8~` zxWJy}r3rl`W2pJAMfT55(nR;yc%0Y-xSNH=^(G3rvQ~ zqOB6n7ud6`MQS!Cg=efv1(q^o zezH!>%guR_dR7sU4G~nYzgUXzQzNnB?`MD(aUm%a^{v!h7b`S>RC7FD+Rf2bg4%Jp z8s8vI(f){f`9SoDZ{_9M?;0i?nC<|6$je7`yR)?C_2~Ar(w#fwEA44(9#2J}A2s4AGLIKFw{-*$@Pc?jVev5SuFKiCu&Wv z)BNT|&eG;KUSLuDb1o_E01mNK;%a;)eDPq4U$7|NWmZ)8Q@o2RAlIVXJ_Njex1xB* z4xu;}+z-(wQCy3I=6<7GUgj|Su1m+^yW!X+TGK3HPZ9F;@Gsi#j^XVz=OY|u%XXHc z%H(BAD@W1DSbZD?nqHv@rxs!(%eqRblOkeW+ix}e4vq(;-$ZHA@>ul9#FaNO*7L2g zF6N_@(hb)vj$}T;h&g&DKY7wVnCzQ+TxF_gEN6(p0FyM|J?-R^C zM^E|_a{QAAn#VMv5O(uKNAREwz4pf~(UzxapgVfxO6{(PsD!saY`uM*%(SDPmHv3X zae(g#7OJ%m^n6ObdZgjiAN8D*xL)*ZPhz+q(yM-=2OrXF`}D|x%IYPw6@p^oFo!_}gU>-T+VX?wk&KmNSmOCK81(ood;R{d+v#eFa6DXMLntK#N-b2hDuBAut&I&wh#?7iaS+j_@$z8tS5x z9g)NS)_q6don*L7`@1ZWgFXHw@%W05jNoI$`~6gL#E#&4q0T6O3=ieVL7TdJO4A+6 z6?zk$LWr4W{E9D?Qq_y-ox3067yW1iABpZH$lNV`KyMOd71@t^V8urvQ$ue?%F82v zk{(!>(gTm!@0iFtdTOtwW7a?;s;*PzWq?NYmJQiiS9EU!2opJm+a1f2VCdc8MM(?wF#`$y#M4Luo#al3FP;<0vLcAQJSFvxhJ zIjxb=+8OV;d7fb`<-Yky>fH;t+f#y#^IQcyoWvcT$Kdyx>GreZi?&-A-lIKI*~tD4 z@6izOW`eoZ8?zjeX~S8fRVpHk?pzr?JN4!T{U(E7j^nN3R7I4AMB`SQftQZU4n4?Q zOJFYBj&)6Ubn}<_(sYNDzxVn6Hh*XE-I0;u%*e<{JxwemB_i|EoAG9@0u*#(N@5_Zcgk&2!?V>xRc207j~$be7a>$#<*z z{#cV=HJaJbXWxr9Oj7tH&051i8F)JjS0mTy^o~QTQDTOIH?S? z0&^Pw02zt%1|fTT$)u?1MBvcY-OC-l3V4eK65cBLOYYClcD*{~hWoKZF64fE()}dc z1u|ysm2h8X`eZf(eI>09EOke2l#nOFBlo)YME~JlmZdubX-HJ9ZXhnXu>9@liI2jc zZgx&hi%g83I37N~d75+TbZ6we=!p~Ivzn)+O`V<=$rkrpPxCa_)akBBrrKu2P}SIi z#HQUFeD^fCfL*Ljd@0Wwt2lc@{ksl3s4mhgVysD^fIjnn&y;eXw&9?(ww7a9lgKNv zTEY2}`vHAYnuzQVbCqDbh2)yTVcrNnkMm(K{+L%_+_gvBTyQlkp70!TKxU|(k8bsy zhPvl1>Q10TPBsyzCrSXG~RFSO99$@McG>y(crbgjtQ!A=Ra0u7yc#VU#+P3Te} zTRaMOO z8X_!cz#7`cc`|hk{dCY8>SChyh0I`4${NZE3|K=FGklu4W3TWci#)YzOj$!Sgp#U0 zI-cmb=vNQQ8al}NE)eY0j1@8s?D1GQv_AMLb9Wzc@Kb?ktp^#8|x^x7zU8GZ8o=oi)_|FZoE`BriXfIkvFGJMVW)&s7P z`5&JXD}Fqc_jE}8Fj^!pd!p{ge%Z0)+zELQ-luG`$^ z5ud6{F)eAoGv?06HyZ6So(~>A#AKJPk$Wu5srlUbT9$(}gH}t#{^Ut?k-7U_wiU|v z`&n50&-Z##KYXh51BZrMNeO0w+5~-KG7mdv5%>85=wX=3?o4mEx&T>gWW&+oh^wS0 zqv7b)5oa0c)gph<+l_LMe+%KFPcr`mlN-J-gDsie_RTY|xDYOIjm#N=tHp~s#a}QJ zDU;*7lLJycO;J`aD2{sMAD?G82uqP8Rfs~CBa>sWU=VV<6u3Ka!;aRK3G&lE2vlBh~? zhlG4wm^z<__O~Y9<0Xl2K9jTy%pJ@-hWqPGKXbUj#5z+yA}BkgF0tn+xeQxj0nIQH zih}XlEWX#f3sAuj>aJv%#QeJ4;t2Nq$_LR$-^nq>aNh-dkjMUJ{+JVAjrmJn#U5>xG&i0U0nh<^F$LM#2?SwOIHQ0jQe34^`4g?5l|Hqg+e#@O61l`dZ)X ze__>VmXmlZd2zNPrHOJ@!f!|PUro>6?t`j8C=W;7l6-xSF=->uc^4_4?2{d`Eq<{! zwSOlKb$;&%cB%CpwEeVDVuE=unrF4{xsCYiFn`I^L9bTyioS)VOt<&fO{HgkYajE)% ztWK~PwWp@^fK~n$ zyL|0_hHr+xM~1C%6pH6AE9W%BCy?MSwN0G0_(6!{RR61UQGR-*XmKTDdxE8tYG2wO&7)Fv1O?t5Zax~64= z^Od-2vm5g3Rp~E*w#tb8mfGRoIru>3SkBo^t6Zs`iP=u84#~1(T2G~d06t_ zGu%@pzAhm#*yp9x^?ytCN%?b(;6qqWZEJEYct7?Ok@}3_Mtl8Zd|{G$Lgp^i@$m>6 zI*-h|c;w!Ys2a^Lz5|Ku8Gt3B`1}W461m{ieI^;=d!X2nJ*o(Xu(_T_VMD_WE104=Vz;{6g`If z@`272)c3FMuLm(Y4AEcz`R2c_zhW85{yOpA$MsjYpEoBK1E1YD<8zeq+iL%b{`s=D z_ZQ5B1RzwfkIjQ2PoO~&^6e2-=Ik_9M*#1G8SDKXA4%I`J5 z`I{5*?&sKV_(3i7bKI=w8o9y#sCFi?iRQ+F59-1ESnwe|SP%9KCB0eW5HkO z!I`n(BYJRlEclonyaAJ-9$XL$KB)(9fmz%8$;`*^hnlmEkkj%P@RY#uj{3KRGiF6k zj9C2|`gxKYlz0MRly4hm@?vxTqiGH}Y_P%nRaANdaSB|k^${-s%jFG-fhEeWMv(PZ z0x41I>A^g<3OzU>#eiq?JcLAXv zY>d^eg93k9_U308%EPbg<&CXxrp4|PGnZP2L<0(kn6IY2lrC>Xx5SgE)(Jd}RO!J+ zTA77Kx?NYy~PGW4fYxlSGRO^}cV@S&( zPydapqDRuSrlQ1zm~E%$F`5=Y)?$+#CZuJlA018N1|s=-%-;8b3ftW6iL#(ysB7_hikzw+en_r^>cV= zNufFAg%MWk*RwfB?$tYO@vJibxOCAH@Mq(Z#`xow<#U~R%SD83IYKpwg)@^?&QA4+ zvm03mwYzcuz~L(C8FIL;dXMg`+W52#0gne>TvJ5v8p{Qvie`7=Kghhw*1bit8*pGL zj?-OL(p?;N+<^~Qze+nR&Gc(YZ5p}PJPtZh_eY!}=(H)p20+~=q=%lYaMUnUK)nI; zWj_C_neq->PRLMK7q1iQ%tzjpxkKQIQN9lU9JgahA%O{IC=g;vi{D$V>f9yqj%hn6_a15_zhKg=f`brWRT`^EKtNuI~o_TI`H zPsJ}0+H1YB`pvOg&|xB(m$!7EiIh{cy`yOzwK;gwXu6+oF+=h%#hNzC|K%Tvxbh74 zQT<(`I++mp9U_P~Y~pGx@+62DJiGc+O{AG=p~29JwE3hqr`0f|=6E5I$PbawSyvV7 zs^V%_D}v2AC!}jYCXqJ=9+%RQ(Soc|Z9Qs!Ssqh&t;h7;v&6#Zu%2jldnPC@1}}q) z!OP%c@UlY1%V1$JGFTXl3>F3>gN4D!U||Op3xkm@hLI)x6ZM(j+bX$5{)-oYu#uAf zSz5bMuHGkv8pW5#>RSR&3AwAmM;-;=rpu0@ zo`2kG_fx9fsv>FkHK7{2-M7h;>aN}HJ*6{Z>NjmJh#nhZEk4QiGR1mB;J!rfjRNyo zb-d{x^nQKE^q6V^m0ZjMH)M!)m2RtjrZax=scU*2{LR#sq}Bur+Dw{XU;J@Z-4XB~ z(?oXa!v_Hq;{xkCzC7TQjg%?v(MbcgN1YuMqOtiL0AB2RdIs0fc7(G?9&nD{hM1oc z#p z3*wRaad2uQ$dcDLDq*Y@VNO`O{&X{T$8iuTR3qa=h47G_h4?aPu?eE)r)%KS>ONrQK$!p*5 z=ReWjAy~o~Ts62qWIp>lIH^!;tZsrNIu+WVTA{70xV*cdv(i;dbVKG2!+=cm>BWkG^0X+R}Ak>A_WE<(&cndy}xq8O+wL zbsITyqv!#U+v93Ayx%bQ`|;>ehZ7ga@B`*YokF4KX(2uaD&Bmr3m3=dQLpSYDxCNa z+4;kF-~g~)(mJ)RxTs{(X_hy{a;o8Wa^iNK<{)L8FqeL4^>^_3X3tcOGbdW5<}&Bh zxpL+tnNmj@qU?Y(=T!n6C_8ql;&ssaw=1nW7=6wHPP1c+YgY0RS|^J74-h z25-a->)d(<@M@>6ar;q4X45OHvJgip>S`BfO#%Vb(5ZGR$iH(3C^T)YgU5_n&tsKM zPQuZ$_{I$=&NLKN2-EOJyFB1A<(-I8ov0W5vpiy1|CR9K`d;R<@~RO91oUK!lh!0= z^f-GdPe9ivK`rEZ#hn2?qx&0%cZ0YAn&!`Qj+2kPX_br?+J`}6EW)ctBIt*@tWII# z56@9n5~TXD8K{p?4&vr8J*`6Dfn3-IpAUHwOyCsyM2Vey4;6_IyyEtLed4@<`os@x zy<3eZFx}R>9d=zO_<-mW3sYe+6m9aKI!Ndx!tAZ{bcGx&rmKU6(4-HOa{(%eLDv%% zRNy{ohl>pk?xU?9vzHX!ygzC2sIV+YN)@C6m(RrrRionnM$I$FovTiSsMAB{J#d#r zIA;m<3oRfBFbs$X1XPxM+qTj`#a&CfB~oCZdqux9&zxZGh^k9Jjy|s}-BkMU1S2b} z8|@G`tO}*y=b2m3u90DDkb%nL*WIc7I&>;w5e|W~!A@Y~{JVww1%J{U%w*tksJ~)?Q$n~c_6PQ88@@%c&Egx4%;;~|U*@b^x3MAcg-9K_P25u#7s~Es z9uq+Ba<(nuJlE>MM_g@z*805WnOCP5e{QwA_>MJ`il^~;)0%?fLO!Rg$uC|Mmiux0 zeztwzYu|SlFN)NPoa!pRC_J+GlJM~2;&4XkjKI;=YhjuV^*QW4!ZwXH8Mt$PL!6VA zWK=Jn3_a$pkfUhPngj>3c}Cp0K3;s0*7Siix_oQ*NUoB!xO}sD-Vx6FXptYkM1d#oa39d~HZ}hrubi1&2Z0+8|Va)F49J`x+b~k$%26yq*ku?1Ag2Hqmjx{}GYt0y3r&l1#INRnf4L#*}@bvTYyZPtRVM*Zdyt%2t# zYLq{s&DawnUTY_f{Nfp$DHCJ1*~&1%{Lxg$VLoZkFy|rVEb&w?E|FoqFHuBmx>$yF zmd99w)hk>;<2=Q8Xd6~@l?Hl>Z_+j_mG6aopQ3HJMZPc68pVx!iMwX;Y^kj@QCnn; zUcW2a?p>V6Wn|u0;Q`%~q-c80;v1xBZnEfY#+oxQmsB{DTYmJYdl`yaRcDR)PGw@| zHA-#>RWwCDh#pO+aJs6s#@yClc#9N13>}LnSVY_?LR7!$_Gk{=gG5vR^m9BzciH_uA&?W_L}Z|?%%WO?@S zCr#Q02qZ|ws#U9Yu2^&kY=Qx7fu-t?Mn_zswCKwk(FfNRC=2DJtUEY*psK<~JBA5**Rg8aG|Kk1!AK^Xi<$dPhuJWq zl3&%b!x6rRAFW-cb0ZkTE^&>NUm|arU-UUq;KD^hfJBC->nc8N2E&}M=f9bO#}qP# z*;Sr;hu|C|q!V1mmT?4Z@yoaio}JGZ>llf?ZU3}&`BmuYkCq+9^EB3WfJRT%aZWEr z#Fc1@y@D7%b&&h$q=u;$TwW}FY3YY!ZTtC&P^3>ue+gR5zd97Dex{*L7Mj`ww}XUE zSnWntH2ZjR-Pse8crsy&K4rbET-+ymkb^+@gPm*4> z@DQ&rat1M6e+fJC_ygMV0rosDO^oH)&SjG57oWD3pQi_e--mIPxt<|h^p!Rj-Cf4} z`f+Qxj2Gf$B2T{X;2HAZc}9({V;`j@zh1L2-uj1G7@4XZiCCOYvzuZMZF%;K1LtqB z%F3p1so9I9XO95JugIpK#_VkqVzM)n=2yhxGHGOuV`5t`u2qjn1Vs~mSI?S+-%Si< z*7OJsn6>zTS<}zdHt1Os{{<$-cGc4JL&#|AQXY|QGX`G>OxE#FPWb<5{Fl&f7Rex0 zTF1-qvTpcQY=}i`iq16dT}`mQL(XCozcqeE&nzy8-@4^Q{PEaBS2={g*8KZG{@Cot zU-r$X1boQi?|{9peQ?2HU}J?Y8sR^@-koqs`S#Z25vI*C`Satr*HXMeeiF`V1X9}2 z1~f)L`xCp1aCJLW$5$A1!g1$tR!LDS)?&}nx+Fg3Igur-p(3JBoWz77qTd4-$M9gs zZnMwo0Z2JJfr&MKui1G@dv$xd&FI$mkjq2D_-)7*SkDL`W<2)wjYpQT5QmTB>+)ca z#(>ypiN!NzY`AF3m~i2gDUn=a?#G-^(MV2m$hsh#dvoM92`W$?YHYe!&VW1gJs96 zqs5%aM~6g4f;@=o>>ZKMu0_J{(9gWb;`7Qw{4*q+zjo-lSIfKalAk#9WgDm7_om)o zJM>!f>UFD*UcZ8}?`%DN)zJ$1c1^2q)zNYCZE`FBERLKnrz{M?ovnP6M~+>?!^h;2 zW0QIK*kX8wqnAa735$@|nN$2k@pN5x+m|>}I&&P?rsV7tfvOdSvtO*QNWgQog+_SAQ%>f9u)x>Yxsx=*D8gRrVIAFvb?tKPU^}N*#{E9m~i9DCUJ?<0clIVy{sw z#`lZdfo?I>usVFRU*bzaV481@DCEdKFUblue;HCU(hV#|HW;Fo=IRC($EMlI3dP2N zGNplb^T?5Lt60>D9N*w+f5YY40}AaPL(2AbZ!?|R^qK{q(uitkZV5m_yd(BZ(JTBqsY2?=+6%3sRAc4XQg3saJbVy}VE<(50nz@hCz zEOrVSiJbCtc70cGg_L;_<}aKJ6Hv2h#UkKsSv4EJb&|~= zVyxh89?MH_>gswqS6w^f?zPq~LTrT8aC0|k-Xp*3uI4d3{A;-#fp_=_Cc*^V%mzA= zh6Yt6>5&9+6wKTHrt&^G4(RB=Nmf8s&@pW?gW8|H=pq&<GMU^k1Z)-5^zPa5_j~ z22IlO++=CDzmY<@TtM^CznDje7xaOXv;pH$K|&mTmZ=@~Qu((CNlR)B%IYzmW`M4D;V&-}jiGniA;AOdtBKa{H!YZ_HnE6gr-sxb zkH#-E_Nzy3KJWypvrflOB5%UxYvJg?w1j@#MUbd_Jl4(kV8GJ$N^7A|gZNx1 z?~j+P4_p!+SsrcoklC5!Vnv3GBN?w98?3+>o;j(;duFLwm zz!BoECT%+6_T3|LzXUfqX9l-`9E6(VhW@|!hGmG)x@LYvf4@H4FO_ISz5LG3Q(vpe z`l>oSKFj@7mB823x)=4*z*_MTiOiIy>2t<0b=ABXj>u@q+&1{xsjI%skIf0E9AtwF zaz-u{t1u~S9A%2dE1U4$D|vP_u`ou&YrHYPTA4?Pls@D@cO4_5$S8T2=uf)IG`8{T z!F9lEcAhoE@fLp_XU}k)%iqcTHS1-4AAQK0zX>T)cdF9cTx!qiy7>j2) zZ>jOFx}(4m9@<>2j=ZI>i4u<`cRpswWg&?=ecz8L1NwhmGpB{WsTA1+dzb$(>%PV- zfRav~iJ{B%v)rs1+8YPjJh?*!rsX>hxDaJ^B zEuCYxG(TusDQP9If$}wvQ4@4SysMVeDK9Y0R&}nqvvz&~6f@)g5OZH7*cxxL+#AbN zcl)R(t1!<|;n5jwbx5kRojQx{_V%uGT-!M%#|d?7w3d6U_V1Q$v3BqIFz%igSaCP9 z=iMv4@ugl)pt3EltuSRgzVcNa|0?4&g1(A;0ZsDbgFoFX-XthUy=y0ICSns#_|Xnm zdv}gF;!ED3(M#6r_;qr@gzb{rB4Yjbk5?q%~uQ8VpBH3f z@4(`U_KNi0xOorg2jA{jRi~iKrSei z{3G5avEW$wLZtlQ#a3q`Z`?aT0zttV90c+#k&5g;W7v~-hJ~Q7tG{aB4I36pG-6q!592}u&JLX^>_1}zP_Ylkk8`Nd> z0^aMBWrO=C{~-$KJZ+Gfm9Zl!a!rqQMX~ze?i{gZb127NJ@Ea;qwH_#^YR4zwY|Po zbGaD~rGAE-2vbPP)1Jh1uLfaqN@d)q7t6ROrk9wHQu8s^d`vPQQ{=;%?vEbmMW`|N zG=mu3IxaTdpO}s_hm^ti$Oi|TeBjE-0=mKfLSj1B!5qPj%!$W(?NiUm#W!Wl$t7#` zoLn?uPJVMn=A7suPt;NSryg=vu^IAJZT67IUr7(S$=_7Os%Oo+S)+R3^7Oz3i=|VE zpc%NJ8MvSsxS$!hpdPrXP7cEGSli^NNv&fzeJ4AXqSNWORSlhbxhGW#>+u65kF zK}I8`{01*g*_4m$bFe(sV9K@}pP#%$O<~kB2+$w|O0(~F+C2NU;aZ9(PI_-6iSp8v z-*l29fBwXiyoBUv|GV3D#C0q_u`qBrJVKI3`PKL@ z5U=)dtSq&z8$*NXdP^U#(J&wpE zsNh86g*c&Z+SX_=zT&}~?&rVPt!gf4P}Yxy^Y#pM*f8x|&`000fy=}do?9SBJyM+* zHWq2a#ta|eoaF5Vs@&8TpX(?KuVU4ke+SPp-_+(C$@wNP+b z9&=Isr(PdaqdR%KSM4N>H>X2_#YUP$TS`O>)(d((W@5 zVNbX1mPWuk0@=v#o3VHhj-!ugnDzEh-+GJoOv<|CFyGk6&P%v7b3rQJD*PL#L=Su%-Rh22 z;hPk$in1SC&rchcKHGHQT}{?2$>aU9wkiGdi`pB)21m{Iw$1T|G^k>ZE!NqgDl$dX z9jY2fgjTC+5+fM2hL76~=ddk21;TN=JCxj`d64i$m`f6<5~FMhL(=SMQW(x-VIY)P z)nai+ak%k5Jwyt|&r}L4I^=L#!;2{|l4lJsGUevi=`!)NAIl^8c6{sT$`ai6^nn%` z8eLh6299vwj!hqoJ^w>%$Kf~I-yZU%EnXzVvaRi1Iq`|{Nt70g^jLppIEIqv>-bWp zeTUPkDiNd9dY(+8x~VDwHmG*fecVAYAIDPfzQ3_Yv_IEe9=#(sUg7N~xb8G;B#5y` zcsR6xzv7Yg9RBcaH4?-p=p|p?R)KVaMH;;u?^}sk7r?` zqU!AR-FuGQsw#<=dyjRsRkcRr%UZ7 zJi-bPyxGi|?f*WKN)6LNE)>ml^sSRKWu1&R>!j{0dYv$|JJr*-nCbwyeqm-&>Kdw- zrTU)y2rc9^tndaZJbF!666t7z$ChsDq#Ad0rH9=Ivaw5DTFtCnDIBEDN%bSv{mcdo zJ?_k;#|7Drprck*Q6gX1aGCbi^x7)-YG>!=*6qa>C(D1`k>d#TMuOJd;^-Zvj_@$+ zic)B&SliCzWuTsN@8qTK)@m+*@99k3y)ik_qbAE~QdJbB4?Kcv`iehw_fho&O%9u? z9{^?2RNaGB6K7a-CD6-oO`ug|rBGZCb*l?$hc#C`?l^sEK$1MJRYgoAl<7Ds4XNgK z{A@8{->E*v$)lMJAzyh^Z>B_kFQP0%ZIi1${_6C88*`X2A8*W-Iy1T0%!AOd$Hbd| zZxsw%_)HC?e0bjaBze=;<^TiQO~v-IM?L=$=vG9~F(>9T zMNLos>nc2%yedc(Ly-hQ3X>JyF0qjUqq25tgf1`X2fcdpSshK(tIm*TkD$2mskwNE zT0YIv2zFMkFNyz8EQ5^OW4LXrcNSer!46p#>>l3(m7|1d6n${Nfd zoSUP0#j_~&f)O>TPi?~W=ny|S!^4`#HK+~WHwS}`B_zMEWs#?T_cW;01Ajkqtnc^o z26cVr?`A#zTBX-xR{R%1i~Zf=fr45U#n${%VBM5v??TH*NI4>mXvB3Ui0h8zQi0o( zo#{ZS$^9bpuJrtvARwW@w>maU3K@k$fZ_L*ucUxPdTEIfJrHqGQ$0)SA^G$6ignz zlyAN@uVIGT4X-Ho2|aqK+>amdOWceupTzbqfS82WBWC@sY>)6^MVb$bE%d_Dz|E+Qg3#@7 za)TtXDT;^*!O{}4I6^>O$)Jv60I8{$18bB%uy|ZpsW+P;boHJM(j~f|-#AZBDIjpA zO7Sz}dEc7%IHk=Y_mn)HDN*P{${Il|%oa?I*dj*&rd@HIMsSHF8u~sl4ZW53$*gI0 z!ULz|q1y?r{xXf54d-gr>;-KMRF^D)VIq6hLLZj5X4mWXDg9F>)*QrfoZ zp=uA2&HUgz^%iIn291Ik)O%n_@K*^O@vS+^X>Y9raHRIg16^-(NhvM@FhWoVjldgU z%5ki#8AV;wAqhKeIi&&Dw~dL)&2o}y!rS~bgssLCs^zp2LVOL^@J}0?s-b=%b>=2H z>X*b?$677>FpRfr2B)s{!-kV1pdTvTzdZt5OJ=Ev z#MRGH`@SlB8BP8H9%dn4tg7E;8boP5)AM*y8zAS%R=Tw%EHZFT9j|-oGqM=Bptv@92 zOZ8Z}S1)|X2+}FDpSvzbbTeDK>wLcIH_tx7o4n@YHC=~~mmoru3C7%ZE61jgv#XK& zZ6067!e-mw1WHd4Kf?bXlv7CeWiXkuSw;PU*@pIAlTVd=-5?73;s$N?;O~P{^z(8Y zTSo;rh>UM8P`5rH$DSLTGOq~~wnU3UHolN3_p)-3j{Ncw0~cs45n}`^N4W0u#fEi} zoyc{<=D@41`PL4d(I8Y?XKh#43sVMMaL9%W8k7$wVt@r=wF$eO8@t-uof9i0bjN(R z`ao#q40pVaGmBy|lO7Z=Kk7ikVE@dqrK`yB0T(*1yVt7l>~0cb{=Ms1K%~j(1OG zyv$W*<$TxneY*bBtZUrXtsX1K4oCfEXW$**ciK~qOB1o(9A|aJz2z1;)xB$7+rziQ z&lP>(YbDF(AHWGcvNrQE0!fxjrZP#tDG&Tc6cO^2Ji#?_wzu)Z%o4w~%U8L@SNX3{ z1NgH{&S`{#v@3A0b!`ccFN~ z4Xf;NrN{1Q55`+g$>y8`6i4Ijqm#KR7Nrd`C7PUq^a)zJQ4G~kdxo@@rz!k_9GrjM zs1MHZo0-s#jZXPj&llpY*kKC)5MyLn|Dr1`B`Qt}Vr-o?zqlT9Gm^M8I}CmO1&dsD z=RQ}C913IMOHfLAu~8e_RG^1t$1gI5MY7Np*)RMRzmRiOe8RC|(WoGH*6~)abtyk}-)1cmtBBY+eYj;dIIim+6Q zz=1`nZO%#VUN^Jkw3P1CwD+yd`7g>k|B(~~GZafltCe6%MVN*oP@1{<*E=s9Zm=j`^k^hjAy`s@$A#NYt($#3K8_ z_yi<=@oKH?7Bub|zIIj~a2~2GUS&%?;V(+K0gQ#KMQt(U%kS;zxm@N0me9o9TAuI9U= zHx;jJ9;=>+!_J#z5NViUc8E61}n%XME3ZU_)6v-k6JpG@)JC zAPvD@G6SBvAU4BIRGB5Q8Rt=_KZVmcE#V*pv3AP z#mHn`XA7rTEi`{+mic@>rd z{L@fpF9Y>e?cV4|FL8ktnG~-nNno>x>L+*;XXF4-D1Os8OuY3e5{nea_{bs?Nd+QNQ=bUc`Q92D~)vZMxT@V9Hv?tp`#mV{!5}8&D)h~ zk(5ho&ZRY0eW?fqq|7R%C`=3&NV&RGrlE9*wq~~THBMuA1++>Hdh`fBQ>P-V;Kn+A zt*(ZdV)URGX7u7Ur7D+V%@C!eA6UE-#ZbR0sXZO(Oe=%00$rt{jVXEIxe78Tmpo@-WX6u#ne^h?grI0ugun z-Q31a28dT>F5NJrpq^B*x>N4c1iwsVu|1L9H`o*DcXcKzHRB#_xgQvZO?bb|V9otH zIMug*%WTQcl!%gEio4-|WcsGq(>Dd|lIi=tltv$P`|Xw&XKQ&ux{=*y4`~08zMsf+ zMknr=VNbNDQQeCjY-*yHjuJV&kikw(^b}P@18B0k|1p{6V&&z!>q7_xl`w2(QJLkW z4zLm!C?@PyX>%Wd(pJp#iMDb4o93_1{}CHSuS|j<3664#+=%N(n>MnGLu&VrfNo{m zGAQ=iQ}450J)T3{B)thu%hXRxq)$5Lk2Zm40Kg@R1UJHv z*j=ZN9g%lg-NmuIuA#J0Ql>0rDaDXZ=26&Axle>AdsG@5=&M%`OOZV+O*c!g3H&Cv)$hQl z2#F{?7iuto?a;)kkKb6)M_P%8l+8pujWceJTxvIgTpUfi1+xO-+MB36C{v>rNVPRZ zGGrKbi-oUEOS@Yw;&|8lagQY>3Al>p?&b8e>!!-h=;5Wx6#vT>W+!ZJ`bfiQdw(cwFYrbY^$X7P30x2d*`RUK zJP@qb+6Hyg%eqNSeF^NBYb!*KE~JBO)pAB+Um(@ISlaJkNbylA9?$Sg+xv}o_H)c@ zwb1q+%G8J05O@JO#Kd4c+9IX`hw0Wy_$6VMyc*#>{AMlOlC>k#mcXrT2~Z;KRad+U zJZpF#8L05Ji1CK;nI(*mUl^bA48~{3-x&*3(BU%pj>$oHq)2noqlq^L)2X(joxpsv z%_yA;tYu#C;(e*Y99b-c%C`%JT?B`9D(PFooxjT!;|wF zR(Ad+0wQATir<}w^o0Gnoak1MsQKY^0I%@aE8O%hMJzctSlUpFic~#|M$m@L0kv1P z?00}qS_}8esSy_6Eie#u8o0U5sd)L?S-D?WACObRtA*67+hi?xpM=9n@|_o!AfxiwnzRt(3=nY%D(r< zq~7=1?-!UIY#RgE7#PL8o>7e1e-D3@W+k(3zW1VY{2qd~qkgcx6U$aUc|F_aH`nP&NVJr!<*zn zjWKT|jLB?tiJ$m48Ma)R+;&R-O!m>I+AOERd(D1zWR(`6MFS|YQ>Ddf?lfYEIzkeo zn2nlL=QK)NA;RhE29iTt-hJ!NK6$rsu)zBsqoRkwHbjclLw#xo3%~_2-6lAxp!8N{rYliA;X(!tW#c_|Y7PyiY`09FGl*JHiM9XCgxwk}g2 zzNF~~!78p}_rni?5(zeFPLK?J^W`k4KnlMrNaJ_w{#R7p{#f40fVn|*5tC*eTX2$3bY-nKhtGyRj7yIaE`D>&um0?2oJ8j;*rO0sIijr2K;56FKa zp~3VJ3;?a!2hPqQhCq2$f#vQMFIo$Gy2k~o-7RIcygc2!3?r9{lsQf<8vJr{j@AT( zFVl9opTY+BLOuT4oGQOn6U9s|jS^ky(=|B`Nj()NQYRcd#|m=w*E?jkz0sBfI2ZwT zaJ~RMBtzO{%~mqB^5Q!3E%vRcG@-T`43U>NMSH4|m!o}?y1M5@_Gh+v6+ecSkT4eK zqj0ts5{r4Jk~fP(?}%oNa;z!;f%#lg4cQlt0qK{@$wYD`RxsqNzxK5 zo)BKI{I6k-O?&ERI67$Wy80@3OKE!xf?qjr(Xgh8@PSQJgc)p%RZdEgsE6OydkO|+ zjj&d5$nfZ>n6G+4cd=!xRkL9HX5j{6HAQPHE7w+DD*Y3SPx@D`B}A3jWcoKL)xYu> zFN(e?d)$k1(?7r6KhkmT>aMhEWUSNui~b<9e_!4}|9;t^`*)S}uV#UCky;kcr@iYc zFO{*ctOO_4eXK?Bjn$MBwt$w?R`o+|izl+wsR;7K6BDtgRK@x1TEG)Y#;GPW{`IvB ztAv4$RgSYI>Udi@n<}B93JP+>+60m?!k3OeP&tV~kYq!%;&GA4YT>%4gw&f4!Kwf@ zLGD2hieo@lQ%*7@Q_PTj{3AW(2?N29R$)+11)?ES-w^7nBEx}Q*)m;OiCtOAr>tzf zsSF#XXv-ub0!|6fFtT2}vN-va03&o|Tu6By)oX(QRwVb*KC$w zy`7aor-VkG5^X7WM6h7xKb{~&?>OjDNIj;ZqasgbRd-mXT2T6yDb_xn+<<+5KX$`k zdqh_htDHhQmueW#cgX&1MWzILTMAP44Fnrdf8=(ccf|)%i4OQHwLrK+YAUr*1u%zo zW@lxklYRS$St!!Q@Wm1xAM9Y9>}5ASSXUn;ZwA5bLVDRC#MY^85Iq`R*L|LJB|K(b zWhKkzJXV_hOi`WsZ=R8E={xEk77#Rc-NGt@C>2Xh5t3Mh;`N23PB+-4L3K6#lEf4b ze4CC{mYifkl$Zt4^FzHL%+gYe^lQZ@d9B#I_LO-|r^G5i#3VZKSynp-zs>dPkQR;V zKJyq4=%}sQ;Qw@<8gYfqF-d6+>Oah51EUJZZ>r8GY-%3)|NER zd~K7s@;yBV1C3y@YinTpx*GC#ozKl^3+9t$`k^(WxJI;&*9=2)1)&UqbqlhOUTRg# zFl5WWv+g;X$G<{$uFc_!v;}vD`SxG5)$RqDZ=VT4{$WsC?VieNeU+~q^EXWAV~4ty zkCPg2+g96;@s?O?+qT>oZC7cdZEJ_fb83wgn&#*}iRY5IM6C9t`cnnGMoW?Nmrh1A za{9XV!ABA8VzUb zVBI-(gWkWqCR`7O7`abgC3tr)uxh+Ry}BHIMm^m7yKuoC$_!lP3DE@ zN;jKf14AN4V`3J%q8*psebzAQ&#^{EKXitPM-wqoPS2jOSsMbTW0h_Rp)@n`Kc8XJ zUAEYc>rpB$0WwL=KJZU z_NqOb(@k~#8%_PqrcY>UdAg}z`(~=CpWMt*rkN(c1#^_9(6$Mb9{2{;^GIs_Xj-18 z(7p@`okKiP^Vs0sti>16@i)HkQ`Ff;B_MdcS5R;73(s;B)b&X|8r0`F$C}49aH#+O zaj2e2oxw_cW?UC;KG^U9Uewz3+3V#>fZu?yc%SfJ)1+Qp<12fGz&7VJm2+jH z9Tq(E5j1WAMXE6`CX-nkzDcnjmjt%ndX_!>#aSO4z+RZq9(w%@$D90Z=I>1YewM!v zGs}+LEPtF??&apBZn{!m>`%8l*PS}vUd96R=mi|bgxLY%i&syKZk|F2uS+J64CfQs zJ+L+MFD}o6-k)M^Z;0QLjvl;oky8jl0*oj=MTR#7<-5d95J^kDKfX`#6GeCi~Z7xB~H-E+agB=i>Gw zIdVby*cX`)8w6(S!WbyxC~NSR{o(N2dp@*YYwteC^%@TqOCtFn%VJ^gW>{ZYdB*li z43xkqBO}FLl;jE91&Ur7*xGugwvG~;Evr(z?&9u|nD+iwJtl$K>m70LwPOD@Wi90v zy9nP=9-nv*$9P!>U)vAlgvk5(_#?97yto>lYa4JudTjnb`i?i8PZRQp`3AV!E0xSH zDRyForwhk?jPkD~VwQ{8>7Ie%sBC(%G?QLr&37TDHFw}Bqg{IvmEzhH&Q$aizCS?G zbDO1k-F_QiphVgE3q7KCzfiXD+#=5OuVBqgj?Z=?u6W_CVtmKbwh`|ge1`aah&8e< zIj>w`@wr9uf;L$MJe_hHc5QKWhFA#tQ(eaLt5g3R=Vr|MJL9CPk0{9x3B>b)n}b{O z^l5lf_VIIULn}q;_4#VfVxvjQ0~Zp_lGe~|i9yaA$h^6^={o7WTD?wAJB+UjCHbRB z`vrlWh#5Nv@ibr=B`}e~(_kK?pOnxilHEjdKyF67LOkv<9Mgy2vALf#NNO-022%LV zT6gr$LNp21tU~-?M4-xKJ2xpDQq#;Q&l|k*e=_HLb~fC{0497 zjA^&BzM0?MbQLsARD8P=l?Swn?~d3BXI@-uGnUP>P3!HK(;m80PW&>Y<&pDX*O}FQ z;JXs;!@A{WsKz1FLXlx#U}XgU>}z{k_S@oO#EfCI8D#R@=5lpYvrV~ip5Gdae56)R zgHp-#i!2bIQ&bzjlD{`(kg+r_Nt6~1QO9aY7F4&Ryzn#7a2)|_G?jLd+| zf7FJEh!U@SJW;txhP!FEJ%o=d$66Wq%%BFDE5(p#GynTC=ii%+KR8NOSd5vQN2}K^ za62}AjFQaWCQHt(d>>^j`18i84008msD~*?x%Xfg@6|#2tl4Y*GGOcI2>1Hjdj2d% z(*LB?e!Um)JH0*~eeuXn5xVwLE;UnDwy+r7+^;7Z+9TEMMoZ)KdeH1YeMumDx7$&b6jCxUUow{Uw>isEw z?~~2ila8RH^<(n9Kk%3Et@2{1zQ3HPtw{14Nx zW04mZExtCRWHX{NPcSgwx&@c(v@=j_)TC4A>x9bh;n5M zu#y%5YtGc{qW_n}dA5vk4;)9k#rh(bumxP+Bqdyf?%*_H^yj|mCS^;7Y zxyaW#yDc6v#5aK3_G|FMslf}eFOIgBI`jmFFG^cmJor8FnV2&cpNT@=0%y3G1En;T zxl!jQ*Z1dK%x`1KtjSO6(eLW&GqRT({UZaFQsi~$^#Vh@cCApPnJ_b(BWFdA=eGEy zX$^#CxYO82Mc>I~Kv-eXBi_gv@`U8@^;?dFL#R{6&(84Y#PIh*JdMJii5?jS!gjJ>=BkX3S`nTL$NuRXtZZ*7+|R8985P)D1Z= zt93?Blk7(ACZp~)ou_gpO?5lYsScSb`(` z`t{~uZt(}wk+3Elrbw4zD#Rq4DMxkk&(9C zJ`*Hb-=C$MaBiq#g;WfUPkAKf(|J3eMNr9(#< zI#mFmvoh7$n0N>iM2ygX-KV>zm14sv*`C5Vq6gzFQlFu02?$8=h)2}&U*Xo6Pb-Oq zpi7tbWFI+Yrt(2kJYA9=T1IW{_OMvy3F4#qC)7y0n^MbQw<=rJ4?{T( zQ+RA6immN^T;(X>Ak&YXaXm~tBVi!=F_!*WX~xp-^ak@V$>J`ib2b4s{DHSS11~Jj zx;|R`(L|wjsoBqcMmk0Y4H z19OIhNNRe%U~pR-@gXZ%544=sg8(-mK<`ceDdBm(CMe*G?lxJ5GEvV<#1UWR2kZct z?q6baVZ`@QtB;#lBn@ihmoyJ(U21L-6kY74rWv3U7X(a}JLBc<86@AO#oXXt!D zDg8}ee3?7u{zgS$$BGXuETl$Av>ZQL;MfRJ1^@JOaEbN3yxTf?OiMwW018{m67jpp z(@{WNmi5Vr6Yy?+YnAYlilX3QVlyv+$8fSk@u+AypbKS${S+J-CS|G%A$cQ+f8iJZ zC|}ze8fWU&QF?T}6RB4!y%6Fm(E$HA#Jh>h3nRG^%e9w+-KJ zbq}A`2p$k9=1h7_)xNe<_#)MR$*z7Nch!MUWb-&}obe^~%p#jtR|GEs*vFdA+S**k zM9WyJ$|7MOl}Lm*vsNH2d5QBvTN6%+Wf-gV#;z`m-BA>)C{9$A$ml03O3eqx&)R|Y z7I9#`S%oqx+D{TiYpd_+MQBHs;l4_3ATAE|$1_v4WmJU|2e!TkViiSHyCinYSekEY zPgHoNs=m5oca$!PU5(3XEuP-?T29)>8C(T;G1o>TfSv`d6(9R-V8R zTK@Z$vpZ+}D;m!CnfyyZ6F>k2<|25pF~a}0x?4}jxG3&Ess(5^S-Z7^uWH$ANa3yS zuK%MO7$4AN=};|1#-nDfg>rKS_>rn|RnL!DJ2jpdvRJ@s^up-7{ur3+Zgmj|Fz(*! zO5n=jI*xU6V0X9}doVoW6GE5#BpGvpb40h`<_4kW_sE-=wANtH>2591C<+bRs@v13 z{)P=AzgBxD%ppt*TYcpO`1v`W?jmUu{Q6#6#b|2Yea_d1IkZKBH4FiKOkdEBY(dc` zsPCFrV-p5V1>Bfz-_tk#C$N8!8F()iIbco0>o7G5zm!SXhJ>=V=3PNNs@MTml|2vp zB40o)G9EA_u-M&t4i1QMH#p5|S0Y5n7y*I^YPypvRZ8b$i^<{P?b4Pn=?ST$^IrAL z-Ao9S$*;-Mwf{{Wm>X8Pi4Sp&*Y#Rpy39t}5wKt_HMvH+cCBi87vJB506XC;0CN)(lUy!%Ltt(AL1d$X^5q+S47Bni=+m_w)_>AF+}u`<)I} ztFf~!?dlxYmiWZ-_P25x>S~p<4XRMDm?hUAtjGak((VDrG!uTBbQxF3Dh6S#?)5x% z$v);hk6z2P&&`BB>w5ea$8xz$6(Vyo*xOzO;miuj6b zCepOTY>QmhT&Vth^)LrdAve2?t}0RP)=@3XJ<=(ha?OX|+$@kQ3FjJ=`0WMJ&G>%& z=q>3I3Ev`@TXW3q_5!u^FD!&$5llnU~ufm-B1Xqj~JZQa7;8adRaK~Yj z&kj#Ulqb5-zku4HCKJd%OQFP(EVSgin*NK{&0ni zaJhv4C=P#K4s+T%Q<5rfDv;+f@YU>;ZtG2SEVHef)$iyKZKb!~$mv$&B#poiFOjez zL`DkL&C?-4vNa{O6!fRy4Kqvp0+kCW1$JcByGf^YGjWKoBEm4j|6~aGjn>U2B@

=A3h|Rj1lv36D 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≶lFS58!#z&V!=Hvcba_%r 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 HO_Nd{JtdD$td5nblLIc1 zHk$edPlmH$8F-WCFmU@x&ZVb0jLqcyHfSJ#;gntK;7T{BsO&4oLi$k+>S*;!>oj;m&NroZHmCBCH(2v0>#5 zUMGL1#p5KtadO9|e@()Cn%-yk6BCkL5+Y^r&LonXu2@WyP! zx3LR33FcKOeCEwjq1W>vnq-Sbf+?S%Oy>ym4s`(b)o4J7`3x%9_Uo67Mushm)9ydx$nR>hS22*>l zlU5&cjyzklsh`MS>~p*329x$lBCe?2$!H{Aef{0&X}V1K+Pan&2PPIIANo z9Vita81&kglYMU|hhbmEA*bJ_4be?NJ%KB>CDt_3b|ru?eXJQ4IM{J;t|0J2W8Us65;2 zd%SN|380iA0*bR&gf}nrh?qL$6W}gMI_3)N7sJG9o4V;{=2c$WW=qzTQmbrU@{q;+ zuBuz)2>O<`7B6x*mG_bi$EM;+NBqES;6FYI|8&6r1eS{LuXZ@=W99p#k`d#tZ)aqmwWSDM^?<61OM?O=4q>10UId*3k?&^<>eCoUn z`?5@{olc5=aCEsiW@WoJl&Uq=%pTnY66`Rpcg3lIZFNj(x!U&Rk=VJnluEx&nLdx& z#{_O-B=;@^7guHlaAxw|HJj@W5AU+Y(@Q2Il)q}_)nr>W85(0wa^J1 z?V8wMW8pVq_7p9){%mciTxj2Ik@&)*rOe<7sf>kLN-^`j3+zOn?{ zZ1^*K$VV^iyK;LhFR{m5Rd+Qcaelb{}{6- zKLcz6?^+u+6<@aZ*aQa6-KVA!#5?qH*}3PdjsNBVI;v&bsoq}Xp2*H zY0!z%?=xij5HqC^+EO-2vGDb&_Qp3b_1PrgKQk}4>Woyz9f%_kt z>A+wB!OqxH8XTLrkQ=q~x18jr<&6t(92=iCvp$w5_p5aNa}w?d?o-XakMG%CGMkw+ za(P5<&$Tz7R+BqJVg%EJiYotOV6L`}aaNS}mrjGJfR`ID9POs!Ne<Y(z&=dzFirBnTuM*`C&3*(H5-2tZG zEvKaO<$#pKpU@>dLK4ScPk>A=EG^%IEvr2n(m6`pCY+^{yV!7f!#P1OB07)1Y~ zv+|%&6CBQ-^Q_8X1nuuePS%`E=Bm2!j?lQOPQB*epQ4wXewIr?ud{e;xMCbb39yDV zL1!=lr)q7F0VFENjQrJw35tjx}?`x0x3;FM*KE)yJu5jaTm- znbFyKb_x;on<{2!c3zd^QPwL*=tqcYADKTURx^5O>-6ysC-NXy3&{-GWY(HZ<|}-? zdin$@H+_s+4(C{v!=h1-=y`NQxfV*3ix;kQ%CA8>Xe_a32u?dSiyCTO|xfaeZL@ZpTO^B521Il1NW zNeAh1gLZY=sn%_+Gj+25b@5J zsmc1A?4$}n_!PUoGfjOx+e^fY{!R1#Sd##)=X+u6{HO@DKW6(}z>`BhgzbQpNSSwx zZ;XXbLvLRDRcwOF)od;6@P|KgiPpSwArl#nd2!F9gok`+I-*eOTcKZUdmv?M{OK-w z@xO{cP50vQrw#rI+IQ=DHtTygPxT8{ZrhT!FhDdU4QT%`l37OiB4$_ zcQ2}$NE<=E<*cS2N;r#WLFPp_MhmArD-##9=_;p|ABs?~0FVcQaitD}*o#rz3uh)#`-e4W7k;r9!}Ew@G8 zGos#$TJ{cHJfvmehQ)-;Hz*_>tsvNq0N}tT2Q(yjW^{@b?jBTgO7wEw$Z+m&Y+k&0 zzlraGmg!+U=gb$t<8fKUBOR#qjz&dl;7eK70%YLqIY+1b6O!U`(yF@0s=lJH~ zhAfkJ=*-Z#aQB5FkA}I_)IFJ-tXzkD6YehLW)gOJ`sNmHWP-S19eDtxyIpeW0-nVZKjly}o zdnT_xFi#R)xEsP|I*{5vg;PeED13FIFrWN)=F9q9a=t)69GDL-5BUN+mW>V{s;fCG zK4HOhbNGSG;k))6{y8~^)ql9Q#~dd6KMJ?~?n@YK0%TLU+1G32lTv|i#$(UF23E@V ziShTCFT;b=Kbp+#DiCem5)bMZwZ|TGLFVuU|Hq-`Nj{>h=_!au8xuH8>6PZ)MVmbYL~b& zjD4)Jwpmb-ClWGR`t-s~k&mJ2`Qt*v+nZD*$B?Iq@RRaS#LIW#(%vovIlr}(-t5Jn zP4`Be@LZxG+yDk7d$aG@y|E+vUly-@uZ;K@y|F`)`t0(xd!{4Qc5SMfq-WrcimDx?8{AmUx}RYxaVUtav-_jzRHDqKASGT1qPRzjnTJ+j~x8SUM}z zfU9jh?h3G)?tMW7G9<)(VZ)4Y_kfxkV|k5LKb`5Q_NWKOAYtf=Xgw4RNypcDR-1fw zzdW18vm27nn&jC;o|Pw`?UiR=;n|erGY@0xIDu#9C7)GMF0$AiM$vy9^&yL^aDf>_ zs$9UfwZH#YKbh$m&JbGo{WJgC`S&INgdSGZAF5~OmU-$AJ<0FwL!x)(LiWPlzM5*- zQ*Zca;j-((M^^?H)gL`VftqPcir{x1rVAIIg z54;_2IV1m*A#Ymi7jFoxkGfA7`Fj2PQnm)m}h=&TVpO`%EZv;6tUt_oSvQaG?1HTnKXR;nZZs{DA!4L^? zxDhs`O*1RaWu+M6&+$rqX0L(XAAo-Z?}B;4LPqN|HC!@kPP7?9HgjPKXD-#dOd5Wu zEN;M}&tGaX2ETNOqm|d3YYhK2L|BT+0+?kPJuBe__RgU*bOB)@*rOKlLmyMi6Fe%k zpSnDkhCXf*ri%A^!`A%oG=VB}G6d#HOa$B|*Y3H_u@r&DS4pt2U`qI4<+65Ouz$$Q z+;`2(p}ZW1&A_*v^y}}sUro-r6U+t%#W247(bNFDe9E^qpSFQ`QY%;MZp2#qjjM(3Ys~@ zz)Hn(gP+&yY!}4uD}GWK?0w-)h0*(#$YdP6wB}8s!t4|qWJ=rcIyV8(#sOYjzk9N&mnMeL(adSg#q< z3DzeqfApybrh1ac|GV|95{=TH;pP4tlu{i&e=#`T@+fq40)8&-@k|caluw?STOQXe;pO&A? zCa;yB@rfFua>8Z^1H#=Wb^Id?$BH=m1j)*FcIcg^%j07l8yXz$&Iz^YKHI~284F+r zTxrTo-b=;Y-e%vvZ*G^_w;#xDq-myMpcBwd^6S9YYe4JMjo6*KwBzGMU*AWRli=?u zPnQ<;2IKFgOzMBf#;18XDfqOO={Y_=b^YnO-uNWE^{D!T%a?1Kf3S{UXny^Bmf%kQSyN!gPX$!xrb0R=+`SmkUSfbZd7lC8RCAjE&j}iXQsy7{)P+t>t%w6gN=1n; zcc-Ay|K$4_?Cx=x>%eh->un)O{tC+_B*|(+u{i~zbdpV!CJRv-4^avhSX(=?g(7{` zrbwe~igappR$=nIEm`b6XogxA%A$5zn}yWnu&jO9C*d5;e$K|6@-BCY9C3LN-)}CI zfh9_h{CHj1biAbf-0s}+1aJO=zLA{9d8nIwjeQd8x*|@4^9#*Xq zwyU_RkVdqbO~=G4p>kD)^8Ebz*eVJIbEtub47!OQ)Kj{s{-|Scl>-V`RmdMme^!Nh zm~3urfRR5u$frW(6Vf4*uagtT*t$ldgX+9PAwNVc5~ItZqcEgQlqpeD+vLue_xT8v;Us^DKIcNxQQRflJLf?4dGWGmg~@m^l5Zl z{VkH=yDnxbL{K@p#v|#szrw9RCtJ4KT&#pf6U@qQ>}A8RO1+p%oG#Px&}wd^20wQ- zp1?c4yE5hZ=KMDRXQ0b>&jF@$nJ3WhyXQl$Xn7nj|5)vqGjbC_K);1^A#M2S4ZGlI zYqxLhR+sfpt(ebo5#*|+-DQ1O8mT`h2!zSNhrYYQT$!HUY3j^nX^U~Sq^?2xtRA{i zHqBg`Y+HK)7t~M3P5oyj>OUn}zi8>D z{%q>6AtWHTxu*UsQ-8Luzl!>^O#KpxK-d2#-G4cLnEE$xZ~FfdS5lF5FQxvI(YmIu z|D#pO`d7s3U#{zy^%Pnt@cBlf{;Sj1|8HaZslR^HY9`li;!WQ@re{hn^0WzgkU}t&1|<%`2?5)A>GwV7UfIqA z2rcY(yYlBF-?`s;ojG&n%*>g&Gd*|UcFzSnA2v?dwcv#r)6uZklW@kH$3c$KMj*@C zQhfCBL%#ktjS1d4kXc63DL z)h*~nklvcK7rW3Va?Z9tX&HWf`#?UyrTLUo+7F2~shiT&+dU}DgKo%0YhHX7n}yNL zyXD0v;KB+8v@fZaL8Zs*5u%yMn8+>G5pJf0@iAChHIZbBHM0f*HoJ8qH@d+fWBeBe z;dV0^

%$T#yRMHB%o! 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 z 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 z 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 z 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⁣zF8MC|uKI5HZu(q4w=dV1 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%0D8qC{ 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

    lRTHaki3*sOI}G{ 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

    UPYL%Pg0%Ky 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

    Rg7IjkimBqVy0|jQP70bctJO86wa9hq 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 literal 0 HcmV?d00001 diff --git a/contrib/cmake/jom/xgejom.bat b/contrib/cmake/jom/xgejom.bat new file mode 100644 index 00000000000..80a9054d70e --- /dev/null +++ b/contrib/cmake/jom/xgejom.bat @@ -0,0 +1,6 @@ +@echo off +setlocal enabledelayedexpansion +if "%IBJOM_NUMBEROFJOBS%" == "" set IBJOM_NUMBEROFJOBS=60 +set NINJAFLAGS=-j60 +xgConsole /profile="%~dp0\xgejom.xml" /command="jom -j%IBJOM_NUMBEROFJOBS% %*" || exit /b !ERRORLEVEL! +endlocal diff --git a/contrib/cmake/jom/xgejom.xml b/contrib/cmake/jom/xgejom.xml new file mode 100644 index 00000000000..c561a149b5b --- /dev/null +++ b/contrib/cmake/jom/xgejom.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + From 421b869087e924b1b8a45ae873753a52059d1863 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 6 Jan 2019 17:26:58 -0500 Subject: [PATCH 141/243] Windows Build : add appveyor configuration --- appveyor.yml | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000000..57995f9518e --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,88 @@ +#---------------------------------# +# general configuration # +#---------------------------------# + +# version format +version: 0.53.0.0.{build} + +# Maximum number of concurrent jobs for the project +max_jobs: 1 + +#---------------------------------# +# environment configuration # +#---------------------------------# + +# Build worker image (VM template) +image: Visual Studio 2017 + +# clone directory +clone_folder: c:\gaffer_source + +# environment variables +environment: + BUILD_DIR: c:\gaffer_build + VERSION: 0.53.0.0 + +# uncomment this line to enable RDP access at the start of the build +# init: + # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + +# build cache to preserve files/folders between builds +# cache: + # - packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified + # - projectA\libs + # - node_modules # local npm modules + # - '%LocalAppData%\NuGet\Cache' # NuGet < v3 + # - '%LocalAppData%\NuGet\v3-cache' # NuGet v3 + +# scripts that run after cloning repository +install: + # by default, all script lines are interpreted as batch + - if not exist %BUILD_DIR% mkdir %BUILD_DIR% + - cd %BUILD_DIR% + - appveyor DownloadFile https://github.com/hypothetical-inc/gafferDependencies/releases/download/%VERSION%/gafferDependencies-%VERSION%-windows.zip + - 7z x gafferDependencies-%VERSION%-windows.zip -aoa -y + - cd %APPVEYOR_BUILD_FOLDER% + - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" + - call contrib\cmake\buildGafferWindows.bat + - cd %APPVEYOR_BUILD_FOLDER% + - 7z a gaffer-%VERSION%-windows.zip %BUILD_DIR% + + # to run script as a PowerShell command prepend it with ps: + # - ps: Write-Host 'This is PowerShell' + +#---------------------------------# +# build configuration # +#---------------------------------# + +# build platform, i.e. x86, x64, Any CPU. This setting is optional. +platform: x64 + +# build Configuration, i.e. Debug, Release, etc. +configuration: Release + +# scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services) +# before_package: + +# the install step takes care of everything since we're using cmake +build: off + +#---------------------------------# +# artifacts configuration # +#---------------------------------# + +artifacts: + - path: gaffer-%VERSION%-windows.zip +# # pushing a single file +# - path: test.zip + +# # pushing a single file with environment variable in path and "Deployment name" specified +# - path: MyProject\bin\$(configuration) +# name: myapp + +# # pushing entire folder as a zip archive +# - path: logs + +# # pushing all *.nupkg files in build directory recursively +# - path: '**\*.nupkg' + From c59273694f02315532bbb4095bb10e678eaa32e1 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 6 Jan 2019 17:29:16 -0500 Subject: [PATCH 142/243] change build batch file to be consistent with Cortex --- contrib/cmake/{buildWindows.bat => buildGafferWindows.bat} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename contrib/cmake/{buildWindows.bat => buildGafferWindows.bat} (100%) diff --git a/contrib/cmake/buildWindows.bat b/contrib/cmake/buildGafferWindows.bat similarity index 100% rename from contrib/cmake/buildWindows.bat rename to contrib/cmake/buildGafferWindows.bat From 4ca793280c3a20a5ae8472855bebf5946f003ef1 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 7 Jan 2019 11:05:08 -0500 Subject: [PATCH 143/243] remove artifacts archive so it isn't packaged with release install inkscape for building graphics --- appveyor.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 57995f9518e..e2dff85a681 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -37,16 +37,21 @@ environment: # scripts that run after cloning repository install: - # by default, all script lines are interpreted as batch + # install inkscape for building graphics + - appveyor DownloadFile https://inkscape.org/gallery/item/12189/inkscape-0.92.3-x64.exe + - inkscape-0.92.3-x64.exe /S + # download and extract dependencies - if not exist %BUILD_DIR% mkdir %BUILD_DIR% - cd %BUILD_DIR% - appveyor DownloadFile https://github.com/hypothetical-inc/gafferDependencies/releases/download/%VERSION%/gafferDependencies-%VERSION%-windows.zip - 7z x gafferDependencies-%VERSION%-windows.zip -aoa -y + - del gafferDependencies-%VERSION%-windows.zip + # build Gaffer and package artifacts - cd %APPVEYOR_BUILD_FOLDER% - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" - call contrib\cmake\buildGafferWindows.bat - cd %APPVEYOR_BUILD_FOLDER% - - 7z a gaffer-%VERSION%-windows.zip %BUILD_DIR% + - 7z a gaffer-%VERSION%-windows.zip %BUILD_DIR%\* # to run script as a PowerShell command prepend it with ps: # - ps: Write-Host 'This is PowerShell' From 95f94e1cabe87351953d2bed4ef6ed3bcbbf9bc4 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 31 Jan 2019 13:11:38 -0500 Subject: [PATCH 144/243] Arnold : correct symbol exports --- include/GafferArnold/ArnoldAtmosphere.h | 2 +- include/GafferArnold/ArnoldBackground.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/GafferArnold/ArnoldAtmosphere.h b/include/GafferArnold/ArnoldAtmosphere.h index 90a4069a06b..e682a217b37 100644 --- a/include/GafferArnold/ArnoldAtmosphere.h +++ b/include/GafferArnold/ArnoldAtmosphere.h @@ -45,7 +45,7 @@ namespace GafferArnold { -class GAFFERSCENE_API ArnoldAtmosphere : public GafferScene::GlobalShader +class GAFFERARNOLD_API ArnoldAtmosphere : public GafferScene::GlobalShader { public : diff --git a/include/GafferArnold/ArnoldBackground.h b/include/GafferArnold/ArnoldBackground.h index cf0d56be58d..fc111011a0a 100644 --- a/include/GafferArnold/ArnoldBackground.h +++ b/include/GafferArnold/ArnoldBackground.h @@ -45,7 +45,7 @@ namespace GafferArnold { -class GAFFERSCENE_API ArnoldBackground : public GafferScene::GlobalShader +class GAFFERARNOLD_API ArnoldBackground : public GafferScene::GlobalShader { public : From 01bdea5daf8e81b6566f4370d75d70006743632b Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 31 Jan 2019 13:12:59 -0500 Subject: [PATCH 145/243] gaffer.bat : refactor to prepend / append environment variables This helps particularly with conditionals that batch files treat with a different syntax --- bin/gaffer.bat | 80 ++++++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index cbbb25bd3d4..1eee08c558d 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -1,67 +1,67 @@ -SETLOCAL -@echo off +setlocal EnableDelayedExpansion set GAFFER_ROOT=%~dp0%.. set HOME=%USERPROFILE% -set IECOREGL_SHADER_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_PATHS% -set IECOREGL_SHADER_INCLUDE_PATHS=%GAFFER_ROOT%\glsl;%IECOREGL_SHADER_INCLUDE_PATHS% +call :prependToPath "%GAFFER_ROOT%\glsl" IECOREGL_SHADER_PATHS +call :prependToPath "%GAFFER_ROOT%\glsl" IECOREGL_SHADER_INCLUDE_PATHS -set IECORE_FONT_PATHS=%GAFFER_ROOT%\fonts;%IECORE_FONT_PATHS% -set IECORE_OP_PATHS=%GAFFER_ROOT%\ops;%IECORE_OP_PATHS% +call :prependToPath "%GAFFER_ROOT%\fonts" IECORE_FONT_PATHS +call :prependToPath "%GAFFER_ROOT%\ops" IECORE_OP_PATHS -set IECORE_OP_PRESET_PATHS=%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets;%IECORE_OP_PRESET_PATHS% -set IECORE_PROCEDURAL_PATHS=%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals;%IECORE_PROCEDURAL_PATHS% -set IECORE_PROCEDURAL_PRESET_PATHS=%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets;%IECORE_PROCEDURAL_PRESET_PATHS% +call :prependToPath "%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets" IECORE_OP_PRESET_PATHS +call :prependToPath "%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals" IECORE_PROCEDURAL_PATHS +call :prependToPath "%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets" IECORE_PROCEDURAL_PRESET_PATHS set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat -set GAFFER_APP_PATHS=%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps;%GAFFER_APP_PATHS% +call :prependToPath "%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps" GAFFER_APP_PATHS -set GAFFER_STARTUP_PATHS=%USERPROFILE%\gaffer\startup;%GAFFER_STARTUP_PATHS%;%GAFFER_ROOT%\startup +call :prependToPath "%USERPROFILE%\gaffer\startup" GAFFER_STARTUP_PATHS +call :appendToPath "%GAFFER_ROOT%\startup" GAFFER_STARTUP_PATHS -set GAFFERUI_IMAGE_PATHS=%GAFFER_ROOT%\graphics;%GAFFERUI_IMAGE_PATHS% +call :prependToPath "%GAFFER_ROOT%\graphics" GAFFERUI_IMAGE_PATHS set OSLHOME=%GAFFER_ROOT% -set OSL_SHADER_PATHS=%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders;%OSL_SHADER_PATHS% +call :prependToPath "%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders" OSL_SHADER_PATHS set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode -set PATH=%GAFFER_OSL_CODE_DIRECTORY%;%PATH% +call :prependToPath "%GAFFER_OSL_CODE_DIRECTORY%" PATH set PYTHONHOME=%GAFFER_ROOT% -set PYTHONPATH=%GAFFER_ROOT%\python;%PYTHONPATH% +call :prependToPath "%GAFFER_ROOT%\python" PYTHONPATH -set PATH=%GAFFER_ROOT%\lib;%PATH% +call :prependToPath "%GAFFER_ROOT%\lib" PATH set QT_OPENGL=desktop set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins -set PATH=%GAFFER_ROOT%\bin;%PATH% +call :prependToPath "%GAFFER_ROOT%\bin" PATH rem Appleseed -rem if not defined APPLESEED ( -rem if EXIST %GAFFER_ROOT%\appleseed ( -rem set APPLESEED=%GAFFER_ROOT%\appleseed -rem ) -rem ) - -rem if defined APPLESEED ( -rem set PATH=%APPLESEED%\bin;%APPLESEED%\lib;%PATH% -rem set PYTHONPATH=%APPLESEED%\lib\python2.7;%PYTHONPATH% -rem set OSL_SHADER_PATHS=%APPLESEED%\shaders\gaffer;%OSL_SHADER_PATHS% -rem set APPLESEED_SEARCHPATH=%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays;%APPLESEED_SEARCHPATH% -rem ) +if "%APPLESEED%" == "" ( + if EXIST %GAFFER_ROOT%\appleseed ( + set APPLESEED=%GAFFER_ROOT%\appleseed + ) +) +rem Appleseed +if "%APPLESEED%" NEQ "" ( + call :prependToPath "%APPLESEED%\bin;%APPLESEED%\lib" PATH + call :prependToPath "%APPLESEED%\lib\python2.7" PYTHONPATH + call :prependToPath "%APPLESEED%\shaders\gaffer" OSL_SHADER_PATHS + call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplay" APPLESEED_SEARCHPATH +) rem Arnold -rem if defined ARNOLD_ROOT ( - rem set ARNOLD_PLUGIN_PATH=%GAFFER_ROOT%\arnold\plugins;%ARNOLD_PLUGIN_PATH% - rem set PATH=%PATH%;%ARNOLD_ROOT%\bin - rem set PYTHONPATH=%PYTHONPATH%;%ARNOLD_ROOT%\python -rem ) +if "%ARNOLD_ROOT%" NEQ "" ( + call :prependToPath "%GAFFER_ROOT%\arnold\plugins" ARNOLD_PLUGIN_PATH + call :appendToPath "%ARNOLD_ROOT%\bin" PATH + call :appendToPath "%ARNOLD_ROOT%\python" PYTHONPATH +) @echo on %GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/gaffer.py %* @@ -70,4 +70,14 @@ if %ERRORLEVEL% NEQ 0 ( exit /b %ERRORLEVEL% ) -ENDLOCAL \ No newline at end of file +ENDLOCAL +exit /B 0 + +:prependToPath + set "%~2=%~1;!%~2!" + echo !%~2! + exit /B 0 + +:appendToPath + set "%~2=!%~2!;%~1" + exit /B 0 \ No newline at end of file From 11749867f54eff23dd2160cadd897fdbf1627030 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 3 Feb 2019 15:28:06 -0500 Subject: [PATCH 146/243] gaffer.bat : add GAFFER_EXTENSION_PATHS to environment variables --- bin/gaffer.bat | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 1eee08c558d..33a1fa936c7 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -63,6 +63,18 @@ if "%ARNOLD_ROOT%" NEQ "" ( call :appendToPath "%ARNOLD_ROOT%\python" PYTHONPATH ) +rem Set up 3rd party extensions +for %%A in (%GAFFER_EXTENSION_PATHS%) do ( + call :appendToPath "%%A\bin" PATH + call :appendToPath "%%A\python" PYTHONPATH + call :appendToPath "%%A\apps" GAFFER_APP_PATHS + call :appendToPath "%%A\graphics" GAFFERUI_IMAGE_PATHS + call :appendToPath "%%A\glsl" IECOREGL_SHADER_PATHS + call :appendToPath "%%A\glsl" IECOREGL_SHADER_INCLUDE_PATHS + call :appendToPath "%%A\shaders" OSL_SHADER_PATHS + call :prependToPath "%%A\startup" GAFFER_STARTUP_PATHS +) + @echo on %GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/gaffer.py %* if %ERRORLEVEL% NEQ 0 ( From b63acc1d4fc9cb1653e19b1fd7321186b3b25104 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 8 Feb 2019 15:19:41 -0500 Subject: [PATCH 147/243] GafferArnoldUI : use AtStringStruct --- python/GafferArnoldUI/ArnoldShaderUI.py | 2 +- python/GafferArnoldUI/ShaderMenu.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/GafferArnoldUI/ArnoldShaderUI.py b/python/GafferArnoldUI/ArnoldShaderUI.py index fa5c7ef34eb..87b65bbe7c5 100644 --- a/python/GafferArnoldUI/ArnoldShaderUI.py +++ b/python/GafferArnoldUI/ArnoldShaderUI.py @@ -56,7 +56,7 @@ def __aiMetadataGetStr( nodeEntry, paramName, name, defaultValue = None ) : - value = arnold.AtStringReturn() + value = arnold.AtStringStruct() if arnold.AiMetaDataGetStr( nodeEntry, paramName, name, value ) : return arnold.AtStringToStr( value ) diff --git a/python/GafferArnoldUI/ShaderMenu.py b/python/GafferArnoldUI/ShaderMenu.py index 159d127be9f..69589cb6370 100644 --- a/python/GafferArnoldUI/ShaderMenu.py +++ b/python/GafferArnoldUI/ShaderMenu.py @@ -136,7 +136,7 @@ def __colorManagerCreator( colorManagerName, nodeName ) : def __aiMetadataGetStr( nodeEntry, paramName, name ) : - value = arnold.AtStringReturn() + value = arnold.AtStringStruct() if arnold.AiMetaDataGetStr( nodeEntry, paramName, name, value ) : return arnold.AtStringToStr( value ) From da63c7ec00b42daf8d5a38c4b430c453442f4010 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 8 Feb 2019 16:13:07 -0500 Subject: [PATCH 148/243] Windows Build : remove conditional Arnold building --- contrib/cmake/CMakeLists.txt | 62 +++++++++++++----------------------- 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index c855c19386b..a5e2229feec 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -112,9 +112,7 @@ include_directories( ${ILMBASE_INCLUDE_DIR} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) include_directories( ${Cortex_INCLUDE_DIRS} ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) -if (Arnold_FOUND) - include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) -endif() +include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) include_directories( ${APPLESEED_INCLUDE_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} ) @@ -177,10 +175,9 @@ set( GAFFER_LIB_NAMES GafferVDB GafferVDBUI GafferOSLUI + GafferArnold + GafferArnoldUI ) -if (Arnold_FOUND) - SET(GAFFER_LIB_NAMES ${GAFFER_LIB_NAMES} GafferArnold GafferArnoldUI) -endif() set( GAFFERBINDINGS_LIB_NAMES Gaffer @@ -208,10 +205,8 @@ set( GAFFER_PYTHON_NAMES GafferScene GafferTractor GafferVDB + GafferArnold ) -if (Arnold_FOUND) - SET(GAFFER_PYTHON_NAMES ${GAFFER_PYTHON_NAMES} GafferArnold) -endif() # Get lists of files foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) @@ -469,27 +464,24 @@ add_library( _GafferAppleseed MODULE ${GAFFERAPPLESEED_CXX_MODULE_FILES} ) target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferScene GafferBindings GafferAppleseed ) target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) +# GafferArnold +file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${CMAKE_SOURCE_DIR} src/GafferArnold/IECoreArnoldPreview/*.cpp ) +add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) +target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) +target_compile_options( GafferArnold PRIVATE ) -if (Arnold_FOUND) - # GafferArnold - file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${CMAKE_SOURCE_DIR} src/GafferArnold/IECoreArnoldPreview/*.cpp ) - add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) - target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) - target_compile_options( GafferArnold PRIVATE ) +# GafferArnold Python Module +add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) +target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) - # GafferArnold Python Module - add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) - target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) +# GafferArnoldUI +add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) +target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) - # GafferArnoldUI - add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) - target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) - - # GafferArnoldUI Python Module - add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) - target_link_libraries( _GafferArnoldUI GafferArnoldUI ) -endif() +# GafferArnoldUI Python Module +add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) +target_link_libraries( _GafferArnoldUI GafferArnoldUI ) # GafferDelight add_library( GafferDelight SHARED ${GAFFERDELIGHT_CXX_FILES} ${GAFFERDELIGHT_H_FILES} ) @@ -581,10 +573,8 @@ add_custom_target(Shaders ALL DEPENDS ${COMPILED_OSL_SHADERS}) # Dependencies add_dependencies( GafferAppleseed Gaffer GafferDispatch GafferScene ) -if (Arnold_FOUND) - add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) - add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) -endif() +add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) +add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) add_dependencies( GafferCortex Gaffer GafferDispatch ) add_dependencies( GafferDispatch Gaffer ) add_dependencies( GafferImage Gaffer GafferDispatch ) @@ -613,10 +603,8 @@ add_dependencies( _GafferSceneUI Gaffer GafferSceneUI GafferImageUI GafferBindin add_dependencies( _GafferUI Gaffer GafferUI GafferBindings ) add_dependencies( _GafferOSL GafferBindings GafferScene GafferImage GafferOSL ) add_dependencies( _GafferAppleseed GafferDispatch GafferScene GafferBindings GafferAppleseed ) -if (Arnold_FOUND) - add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) - add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) -endif() +add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) +add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) add_dependencies( _GafferDelight Gaffer GafferScene GafferBindings GafferDispatch GafferDelight ) add_dependencies( _GafferTest Gaffer GafferBindings GafferTest ) @@ -669,10 +657,8 @@ endforeach() # Install Gaffer Files install( DIRECTORY ${GAFFER_SOURCE_DIR}/apps DESTINATION . ) -if (Arnold_FOUND) install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) -endif() install( DIRECTORY ${GAFFER_SOURCE_DIR}/bin DESTINATION . FILES_MATCHING PATTERN "*gaffer*" @@ -682,10 +668,6 @@ install( DIRECTORY ${GAFFER_SOURCE_DIR}/glsl DESTINATION . ) install( DIRECTORY ${GAFFER_SOURCE_DIR}/python DESTINATION . ) -if (Arnold_FOUND) - install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold - DESTINATION . ) -endif() install( DIRECTORY ${GAFFER_SOURCE_DIR}/startup DESTINATION . ) From 7d0d64862bb6e0facd5219568ba14b8c26349cf1 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 10 Feb 2019 11:32:54 -0500 Subject: [PATCH 149/243] GafferArnold : include IECoreArnoldPreview in build --- contrib/cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index a5e2229feec..d9460fb9dca 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -465,7 +465,7 @@ target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferD target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) # GafferArnold -file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${CMAKE_SOURCE_DIR} src/GafferArnold/IECoreArnoldPreview/*.cpp ) +file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) target_compile_options( GafferArnold PRIVATE ) From 85860532da32d248dca113070ecf630682e5626f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 10 Feb 2019 14:13:47 -0500 Subject: [PATCH 150/243] Revert "Windows Build : remove conditional Arnold building" This reverts commit 8aa6980aa8f7a03075df2eb31d273e09ce8591ac. # Conflicts: # contrib/cmake/CMakeLists.txt --- contrib/cmake/CMakeLists.txt | 59 ++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index d9460fb9dca..92ceb2f7641 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -112,7 +112,9 @@ include_directories( ${ILMBASE_INCLUDE_DIR} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) include_directories( ${Cortex_INCLUDE_DIRS} ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) -include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) +if (Arnold_FOUND) + include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) +endif() include_directories( ${APPLESEED_INCLUDE_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} ) @@ -178,6 +180,9 @@ set( GAFFER_LIB_NAMES GafferArnold GafferArnoldUI ) +if (Arnold_FOUND) + SET(GAFFER_LIB_NAMES ${GAFFER_LIB_NAMES} GafferArnold GafferArnoldUI) +endif() set( GAFFERBINDINGS_LIB_NAMES Gaffer @@ -205,8 +210,10 @@ set( GAFFER_PYTHON_NAMES GafferScene GafferTractor GafferVDB - GafferArnold ) +if (Arnold_FOUND) + SET(GAFFER_PYTHON_NAMES ${GAFFER_PYTHON_NAMES} GafferArnold) +endif() # Get lists of files foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) @@ -464,24 +471,26 @@ add_library( _GafferAppleseed MODULE ${GAFFERAPPLESEED_CXX_MODULE_FILES} ) target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferScene GafferBindings GafferAppleseed ) target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) -# GafferArnold -file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) -add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) -target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) -target_compile_options( GafferArnold PRIVATE ) +if (Arnold_FOUND) + # GafferArnold + file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) + add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) + target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) + target_compile_options( GafferArnold PRIVATE ) -# GafferArnold Python Module -add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) -target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) + # GafferArnold Python Module + add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) + target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) -# GafferArnoldUI -add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) -target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) + # GafferArnoldUI + add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) + target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) -# GafferArnoldUI Python Module -add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) -target_link_libraries( _GafferArnoldUI GafferArnoldUI ) + # GafferArnoldUI Python Module + add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) + target_link_libraries( _GafferArnoldUI GafferArnoldUI ) +endif() # GafferDelight add_library( GafferDelight SHARED ${GAFFERDELIGHT_CXX_FILES} ${GAFFERDELIGHT_H_FILES} ) @@ -573,8 +582,10 @@ add_custom_target(Shaders ALL DEPENDS ${COMPILED_OSL_SHADERS}) # Dependencies add_dependencies( GafferAppleseed Gaffer GafferDispatch GafferScene ) -add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) -add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) +if (Arnold_FOUND) + add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) + add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) +endif() add_dependencies( GafferCortex Gaffer GafferDispatch ) add_dependencies( GafferDispatch Gaffer ) add_dependencies( GafferImage Gaffer GafferDispatch ) @@ -603,8 +614,10 @@ add_dependencies( _GafferSceneUI Gaffer GafferSceneUI GafferImageUI GafferBindin add_dependencies( _GafferUI Gaffer GafferUI GafferBindings ) add_dependencies( _GafferOSL GafferBindings GafferScene GafferImage GafferOSL ) add_dependencies( _GafferAppleseed GafferDispatch GafferScene GafferBindings GafferAppleseed ) -add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) -add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) +if (Arnold_FOUND) + add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) + add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) +endif() add_dependencies( _GafferDelight Gaffer GafferScene GafferBindings GafferDispatch GafferDelight ) add_dependencies( _GafferTest Gaffer GafferBindings GafferTest ) @@ -657,8 +670,10 @@ endforeach() # Install Gaffer Files install( DIRECTORY ${GAFFER_SOURCE_DIR}/apps DESTINATION . ) +if (Arnold_FOUND) install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) +endif() install( DIRECTORY ${GAFFER_SOURCE_DIR}/bin DESTINATION . FILES_MATCHING PATTERN "*gaffer*" @@ -668,6 +683,10 @@ install( DIRECTORY ${GAFFER_SOURCE_DIR}/glsl DESTINATION . ) install( DIRECTORY ${GAFFER_SOURCE_DIR}/python DESTINATION . ) +if (Arnold_FOUND) + install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold + DESTINATION . ) +endif() install( DIRECTORY ${GAFFER_SOURCE_DIR}/startup DESTINATION . ) From 8cd76d1945da66cbbf7e154223cf37af0a186ae8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 10 Feb 2019 14:25:23 -0500 Subject: [PATCH 151/243] Windows build : fix conditional Arnold inclusion --- contrib/cmake/CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index 92ceb2f7641..a8909a09e79 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -112,7 +112,7 @@ include_directories( ${ILMBASE_INCLUDE_DIR} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) include_directories( ${Cortex_INCLUDE_DIRS} ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) endif() include_directories( ${APPLESEED_INCLUDE_DIRS} ) @@ -180,7 +180,7 @@ set( GAFFER_LIB_NAMES GafferArnold GafferArnoldUI ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) SET(GAFFER_LIB_NAMES ${GAFFER_LIB_NAMES} GafferArnold GafferArnoldUI) endif() @@ -211,7 +211,7 @@ set( GAFFER_PYTHON_NAMES GafferTractor GafferVDB ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) SET(GAFFER_PYTHON_NAMES ${GAFFER_PYTHON_NAMES} GafferArnold) endif() @@ -471,7 +471,7 @@ add_library( _GafferAppleseed MODULE ${GAFFERAPPLESEED_CXX_MODULE_FILES} ) target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferScene GafferBindings GafferAppleseed ) target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) # GafferArnold file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) @@ -582,7 +582,7 @@ add_custom_target(Shaders ALL DEPENDS ${COMPILED_OSL_SHADERS}) # Dependencies add_dependencies( GafferAppleseed Gaffer GafferDispatch GafferScene ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) endif() @@ -614,7 +614,7 @@ add_dependencies( _GafferSceneUI Gaffer GafferSceneUI GafferImageUI GafferBindin add_dependencies( _GafferUI Gaffer GafferUI GafferBindings ) add_dependencies( _GafferOSL GafferBindings GafferScene GafferImage GafferOSL ) add_dependencies( _GafferAppleseed GafferDispatch GafferScene GafferBindings GafferAppleseed ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) endif() @@ -670,7 +670,7 @@ endforeach() # Install Gaffer Files install( DIRECTORY ${GAFFER_SOURCE_DIR}/apps DESTINATION . ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) endif() @@ -683,7 +683,7 @@ install( DIRECTORY ${GAFFER_SOURCE_DIR}/glsl DESTINATION . ) install( DIRECTORY ${GAFFER_SOURCE_DIR}/python DESTINATION . ) -if (Arnold_FOUND) +if (CORTEX_ARNOLD_FOUND) install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) endif() From df284c1ae2bf3c33515f3f1b2c1e26aef04b7fa7 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 10 Feb 2019 14:29:25 -0500 Subject: [PATCH 152/243] windows build : fix cmake typo --- contrib/cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index a8909a09e79..9c6bfdd2b0e 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -473,7 +473,7 @@ target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTERO if (CORTEX_ARNOLD_FOUND) # GafferArnold - file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES RELATIVE ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) + file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) target_compile_options( GafferArnold PRIVATE ) From fcd2017391f17f404aa28b2697b5ba1aec727644 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 11 Feb 2019 11:31:42 -0500 Subject: [PATCH 153/243] Windows Build : format CORTEX_ARNOLD_FOUND properly --- contrib/cmake/CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index 9c6bfdd2b0e..db270a76e00 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -112,7 +112,7 @@ include_directories( ${ILMBASE_INCLUDE_DIR} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) include_directories( ${Cortex_INCLUDE_DIRS} ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) endif() include_directories( ${APPLESEED_INCLUDE_DIRS} ) @@ -180,7 +180,7 @@ set( GAFFER_LIB_NAMES GafferArnold GafferArnoldUI ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) SET(GAFFER_LIB_NAMES ${GAFFER_LIB_NAMES} GafferArnold GafferArnoldUI) endif() @@ -211,7 +211,7 @@ set( GAFFER_PYTHON_NAMES GafferTractor GafferVDB ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) SET(GAFFER_PYTHON_NAMES ${GAFFER_PYTHON_NAMES} GafferArnold) endif() @@ -471,7 +471,7 @@ add_library( _GafferAppleseed MODULE ${GAFFERAPPLESEED_CXX_MODULE_FILES} ) target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferScene GafferBindings GafferAppleseed ) target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) # GafferArnold file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) @@ -582,7 +582,7 @@ add_custom_target(Shaders ALL DEPENDS ${COMPILED_OSL_SHADERS}) # Dependencies add_dependencies( GafferAppleseed Gaffer GafferDispatch GafferScene ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) endif() @@ -614,7 +614,7 @@ add_dependencies( _GafferSceneUI Gaffer GafferSceneUI GafferImageUI GafferBindin add_dependencies( _GafferUI Gaffer GafferUI GafferBindings ) add_dependencies( _GafferOSL GafferBindings GafferScene GafferImage GafferOSL ) add_dependencies( _GafferAppleseed GafferDispatch GafferScene GafferBindings GafferAppleseed ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) endif() @@ -670,7 +670,7 @@ endforeach() # Install Gaffer Files install( DIRECTORY ${GAFFER_SOURCE_DIR}/apps DESTINATION . ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) endif() @@ -683,7 +683,7 @@ install( DIRECTORY ${GAFFER_SOURCE_DIR}/glsl DESTINATION . ) install( DIRECTORY ${GAFFER_SOURCE_DIR}/python DESTINATION . ) -if (CORTEX_ARNOLD_FOUND) +if (${CORTEX_ARNOLD_FOUND}) install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) endif() From 2adb6f39489eac671e9dbb5f0dcc04529e1547bb Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 16 Mar 2019 17:08:09 -0400 Subject: [PATCH 154/243] USD : dlopenflags is not supported on Windows --- startup/GafferScene/usd.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/startup/GafferScene/usd.py b/startup/GafferScene/usd.py index 9ea3562f344..6f2b4735424 100644 --- a/startup/GafferScene/usd.py +++ b/startup/GafferScene/usd.py @@ -57,11 +57,13 @@ # > https://github.com/ImageEngine/cortex/pull/810. try : - originalDLOpenFlags = sys.getdlopenflags() - sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) + if os.name != "nt" : + originalDLOpenFlags = sys.getdlopenflags() + sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) from pxr import Usd finally : - sys.setdlopenflags( originalDLOpenFlags ) + if os.name != "nt" : + sys.setdlopenflags( originalDLOpenFlags ) # Import IECoreUSD so that we get the USD SceneInterface registered, # providing USD functionality to both the SceneReader and SceneWriter. From 39d5246ed6d3fc22df8e5d847148388917995b9f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 16 Mar 2019 17:45:49 -0400 Subject: [PATCH 155/243] Help Documentation : convert to platform independent paths --- python/GafferUI/ApplicationMenu.py | 2 +- python/GafferUI/NodeUI.py | 2 +- startup/gui/menus.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/python/GafferUI/ApplicationMenu.py b/python/GafferUI/ApplicationMenu.py index ff51abad6ed..aa5b21d06c7 100644 --- a/python/GafferUI/ApplicationMenu.py +++ b/python/GafferUI/ApplicationMenu.py @@ -47,7 +47,7 @@ def appendDefinitions( menuDefinition, prefix ) : menuDefinition.append( prefix + "/About Gaffer...", { "command" : about } ) menuDefinition.append( prefix + "/Preferences...", { "command" : preferences } ) - menuDefinition.append( prefix + "/Documentation...", { "command" : functools.partial( GafferUI.showURL, os.path.expandvars( "$GAFFER_ROOT/doc/gaffer/html/index.html" ) ) } ) + menuDefinition.append( prefix + "/Documentation...", { "command" : functools.partial( GafferUI.showURL, os.path.join( os.environ["GAFFER_ROOT"], "doc", "gaffer", "html", "index.html" ) ) } ) menuDefinition.append( prefix + "/Quit", { "command" : quit, "shortCut" : "Ctrl+Q" } ) def quit( menu ) : diff --git a/python/GafferUI/NodeUI.py b/python/GafferUI/NodeUI.py index 4c226ce3e9f..93b04d13503 100644 --- a/python/GafferUI/NodeUI.py +++ b/python/GafferUI/NodeUI.py @@ -45,7 +45,7 @@ def __documentationURL( node ) : - fileName = "$GAFFER_ROOT/doc/gaffer/html/Reference/NodeReference/" + node.typeName().replace( "::", "/" ) + ".html" + fileName = os.path.join( os.environ["GAFFER_ROOT"], "doc", "gaffer", "html", "Reference", "NodeReference", node.typeName().replace( "::", os.sep ) + ".html" ) fileName = os.path.expandvars( fileName ) return "file://" + fileName if os.path.isfile( fileName ) else "" diff --git a/startup/gui/menus.py b/startup/gui/menus.py index 2c40a9c12e0..20bccdb0290 100644 --- a/startup/gui/menus.py +++ b/startup/gui/menus.py @@ -461,7 +461,7 @@ def __shaderNodeCreator( nodeName, shaderName ) : nodeMenu.append( "/OSL/Image", GafferOSL.OSLImage, searchText = "OSLImage" ) nodeMenu.append( "/OSL/Object", GafferOSL.OSLObject, searchText = "OSLObject" ) - oslDocs = os.path.expandvars( "$GAFFER_ROOT/doc/osl-languagespec.pdf" ) + oslDocs = os.path.expandvars( os.path.join( os.environ["GAFFER_ROOT"], "doc", "osl-languagespec.pdf" ) ) scriptWindowMenu.append( "/Help/Open Shading Language/Language Reference", { From ba126b0bcc332db768707ae5ac336c5814c847b6 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sun, 23 Jun 2019 16:50:26 -0400 Subject: [PATCH 156/243] Gaffer.bat : split Appleseed shader setup into separate blocks Batch files look at the contents of an if statement as one single command. If OSL_SEARCH_PATHS is set in the same block as the APPLESEED_SEARCHPATH, the latter won't find the paths added to OSL_SEARCH_PATHS --- bin/gaffer.bat | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 33a1fa936c7..bc7e71ae665 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -49,10 +49,15 @@ if "%APPLESEED%" == "" ( ) rem Appleseed + +if "%APPLESEED%" NEQ "" ( + call :prependToPath "%APPLESEED%\shaders\gaffer" OSL_SHADER_PATHS + call :prependToPath "%APPLESEED%\shaders\appleseed" OSL_SHADER_PATHS +) + if "%APPLESEED%" NEQ "" ( call :prependToPath "%APPLESEED%\bin;%APPLESEED%\lib" PATH call :prependToPath "%APPLESEED%\lib\python2.7" PYTHONPATH - call :prependToPath "%APPLESEED%\shaders\gaffer" OSL_SHADER_PATHS call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplay" APPLESEED_SEARCHPATH ) From a403e32222608d1124f88f6cf76991a856f1d48f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 5 Aug 2019 21:03:41 -0400 Subject: [PATCH 157/243] Monitor : rebase me to earlier "add exports" commit --- include/Gaffer/Monitor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Gaffer/Monitor.h b/include/Gaffer/Monitor.h index 461a89f52a3..8436ae2739e 100644 --- a/include/Gaffer/Monitor.h +++ b/include/Gaffer/Monitor.h @@ -59,7 +59,7 @@ class GAFFER_API Monitor : public IECore::RefCounted using MonitorSet = boost::container::flat_set; - class GAFFER_API Scope : boost::noncopyable + class GAFFER_API Scope : ThreadState::Scope { public : From 5cfa29d5590aaf69f71ecc3366a28536c32071bc Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 5 Aug 2019 21:05:06 -0400 Subject: [PATCH 158/243] Process : include declarations for Plug and Context MSVC is not able to cast Gaffer::Plug and Gaffer::Context to IECore::RefCounted unless their declarations are included --- include/Gaffer/Process.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/Gaffer/Process.h b/include/Gaffer/Process.h index ea1d82517a3..4860a6338f0 100644 --- a/include/Gaffer/Process.h +++ b/include/Gaffer/Process.h @@ -39,6 +39,8 @@ #include "Gaffer/Export.h" #include "Gaffer/ThreadState.h" +#include "Gaffer/Plug.h" +#include "Gaffer/Context.h" #include "IECore/InternedString.h" From 2f86043d30eeb69f15ffa26e56d4956c775596df Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 13:27:05 -0400 Subject: [PATCH 159/243] Windows : add symbol exports --- include/Gaffer/Context.h | 4 ++-- include/Gaffer/ContextMonitor.h | 2 +- include/Gaffer/PerformanceMonitor.h | 2 +- include/GafferImage/ImagePlug.h | 4 ++-- .../Private/IECoreScenePreview/CapturingRenderer.h | 6 +++--- include/GafferSceneUI/SourceSet.h | 3 ++- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/include/Gaffer/Context.h b/include/Gaffer/Context.h index a0e0f6554e8..a1af9c1928d 100644 --- a/include/Gaffer/Context.h +++ b/include/Gaffer/Context.h @@ -206,7 +206,7 @@ class GAFFER_API Context : public IECore::RefCounted /// The Scope class is used to push and pop the current context on /// the calling thread. - class Scope : private ThreadState::Scope + class GAFFER_API Scope : private ThreadState::Scope { public : @@ -226,7 +226,7 @@ class GAFFER_API Context : public IECore::RefCounted /// because it is harder to provide the necessary lifetime /// guarantees there, and performance critical code should /// not be implemented in Python in any case. - class EditableScope : private ThreadState::Scope + class GAFFER_API EditableScope : private ThreadState::Scope { public : diff --git a/include/Gaffer/ContextMonitor.h b/include/Gaffer/ContextMonitor.h index 1cb4effba17..3ea33d6e8e0 100644 --- a/include/Gaffer/ContextMonitor.h +++ b/include/Gaffer/ContextMonitor.h @@ -71,7 +71,7 @@ class GAFFER_API ContextMonitor : public Monitor IE_CORE_DECLAREMEMBERPTR( ContextMonitor ) - struct Statistics + struct GAFFER_API Statistics { size_t numUniqueContexts() const; diff --git a/include/Gaffer/PerformanceMonitor.h b/include/Gaffer/PerformanceMonitor.h index d471d39321b..d0930864e8f 100644 --- a/include/Gaffer/PerformanceMonitor.h +++ b/include/Gaffer/PerformanceMonitor.h @@ -65,7 +65,7 @@ class GAFFER_API PerformanceMonitor : public Monitor IE_CORE_DECLAREMEMBERPTR( PerformanceMonitor ) - struct Statistics + struct GAFFER_API Statistics { Statistics( diff --git a/include/GafferImage/ImagePlug.h b/include/GafferImage/ImagePlug.h index 298efbabf00..bf3ceda2a20 100644 --- a/include/GafferImage/ImagePlug.h +++ b/include/GafferImage/ImagePlug.h @@ -130,7 +130,7 @@ class GAFFERIMAGE_API ImagePlug : public Gaffer::ValuePlug /// with tile/channel specific variables removed. This can be used /// when evaluating plugs which must be global to the whole image, /// and can improve performance by reducing pressure on the hash cache. - struct GlobalScope : public Gaffer::Context::EditableScope + struct GAFFERIMAGE_API GlobalScope : public Gaffer::Context::EditableScope { GlobalScope( const Gaffer::Context *context ); GlobalScope( const Gaffer::ThreadState &threadState ); @@ -139,7 +139,7 @@ class GAFFERIMAGE_API ImagePlug : public Gaffer::ValuePlug /// Utility class to scope a temporary copy of a context, /// with convenient accessors to set tileOrigin and channelName, /// which you often need to do while accessing channelData - struct ChannelDataScope : public Gaffer::Context::EditableScope + struct GAFFERIMAGE_API ChannelDataScope : public Gaffer::Context::EditableScope { ChannelDataScope( const Gaffer::Context *context ); ChannelDataScope( const Gaffer::ThreadState &threadState ); diff --git a/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h b/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h index 06d55fd7615..c4dcd0ca207 100644 --- a/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h +++ b/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h @@ -54,7 +54,7 @@ namespace IECoreScenePreview /// If the Bool `cr:unrenderable` attribute is set to true at a location, then /// calls to object, light, lightFilter, camera, etc... for that location will /// return nullptr rather than a valid ObjectInterface. -class IECORESCENE_API CapturingRenderer : public Renderer +class GAFFERSCENE_API CapturingRenderer : public Renderer { public : @@ -71,7 +71,7 @@ class IECORESCENE_API CapturingRenderer : public Renderer /// Introspection /// ============= - class CapturedAttributes : public AttributesInterface + class GAFFERSCENE_API CapturedAttributes : public AttributesInterface { public : @@ -92,7 +92,7 @@ class IECORESCENE_API CapturingRenderer : public Renderer IE_CORE_DECLAREPTR( CapturedAttributes ); - class CapturedObject : public ObjectInterface + class GAFFERSCENE_API CapturedObject : public ObjectInterface { public : diff --git a/include/GafferSceneUI/SourceSet.h b/include/GafferSceneUI/SourceSet.h index 9d69152e95d..3a489b9d584 100755 --- a/include/GafferSceneUI/SourceSet.h +++ b/include/GafferSceneUI/SourceSet.h @@ -37,6 +37,7 @@ #ifndef GAFFERSCENEUI_SOURCESET_H #define GAFFERSCENEUI_SOURCESET_H +#include "GafferSceneUI/Export.h" #include "GafferSceneUI/TypeIds.h" #include "GafferScene/ScenePlug.h" @@ -63,7 +64,7 @@ namespace GafferSceneUI /// /// The SourceSet requires a valid context and node set in order to determine source nodes /// other than the direct selection of non-SceneNodes. -class GAFFER_API SourceSet : public Gaffer::Set +class GAFFERSCENEUI_API SourceSet : public Gaffer::Set { public : From 24ad4e0f28120ad70dbaba41c1a2c5636c478b87 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 13:27:45 -0400 Subject: [PATCH 160/243] FileSystemPathPlug : convert from filename plugs from StringPlug --- include/GafferSceneUI/UVView.h | 5 +++-- src/GafferSceneUI/UVView.cpp | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/include/GafferSceneUI/UVView.h b/include/GafferSceneUI/UVView.h index 32be86f8ce9..c5928745cc1 100644 --- a/include/GafferSceneUI/UVView.h +++ b/include/GafferSceneUI/UVView.h @@ -48,6 +48,7 @@ #include "Gaffer/BackgroundTask.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" #include @@ -71,8 +72,8 @@ class GAFFERSCENEUI_API UVView : public GafferUI::View Gaffer::StringPlug *uvSetPlug(); const Gaffer::StringPlug *uvSetPlug() const; - Gaffer::StringPlug *textureFileNamePlug(); - const Gaffer::StringPlug *textureFileNamePlug() const; + Gaffer::FileSystemPathPlug *textureFileNamePlug(); + const Gaffer::FileSystemPathPlug *textureFileNamePlug() const; Gaffer::StringPlug *displayTransformPlug(); const Gaffer::StringPlug *displayTransformPlug() const; diff --git a/src/GafferSceneUI/UVView.cpp b/src/GafferSceneUI/UVView.cpp index 925334ab775..8c99bda3b8e 100644 --- a/src/GafferSceneUI/UVView.cpp +++ b/src/GafferSceneUI/UVView.cpp @@ -101,7 +101,7 @@ class UVView::UVScene : public SceneProcessor addChild( new StringVectorDataPlug( "visiblePaths", Plug::In, new StringVectorData ) ); addChild( new StringPlug( "uvSet", Plug::In, "uv" ) ); - addChild( new StringPlug( "textureFileName", Plug::In, "" ) ); + addChild( new FileSystemPathPlug( "textureFileName", Plug::In, "" ) ); addChild( new CompoundObjectPlug( "textures", Plug::Out, new CompoundObject ) ); addChild( new StringVectorDataPlug( "__udimQueryPaths", Plug::Out, new StringVectorData ) ); @@ -169,14 +169,14 @@ class UVView::UVScene : public SceneProcessor return getChild( g_firstPlugIndex + 1 ); } - StringPlug *textureFileNamePlug() + FileSystemPathPlug *textureFileNamePlug() { - return getChild( g_firstPlugIndex + 2 ); + return getChild( g_firstPlugIndex + 2 ); } - const StringPlug *textureFileNamePlug() const + const FileSystemPathPlug *textureFileNamePlug() const { - return getChild( g_firstPlugIndex + 2 ); + return getChild( g_firstPlugIndex + 2 ); } CompoundObjectPlug *texturesPlug() @@ -611,7 +611,7 @@ UVView::UVView( const std::string &name ) storeIndexOfNextChild( g_firstPlugIndex ); addChild( new StringPlug( "uvSet", Plug::In, "uv" ) ); - addChild( new StringPlug( "textureFileName" ) ); + addChild( new FileSystemPathPlug( "textureFileName" ) ); addChild( new StringPlug( "displayTransform", Plug::In, "Default" ) ); addChild( new CompoundObjectPlug( "__textures", Plug::In, new CompoundObject ) ); @@ -678,14 +678,14 @@ const Gaffer::StringPlug *UVView::uvSetPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::StringPlug *UVView::textureFileNamePlug() +Gaffer::FileSystemPathPlug *UVView::textureFileNamePlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const Gaffer::StringPlug *UVView::textureFileNamePlug() const +const Gaffer::FileSystemPathPlug *UVView::textureFileNamePlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } Gaffer::StringPlug *UVView::displayTransformPlug() From 06030e51321e72d0c3eff0be99ff6432ee4e5ae8 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 13:28:58 -0400 Subject: [PATCH 161/243] IECoreArnoldPreview : MSVC can't compare IECore::InternedString to std::string directly --- src/GafferArnold/IECoreArnoldPreview/Renderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp b/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp index 1fd4a63241d..992b0eb8506 100644 --- a/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp +++ b/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp @@ -896,7 +896,7 @@ class ArnoldAttributes : public IECoreScenePreview::Renderer::AttributesInterfac } } - if( it->first.string() == g_arnoldLightFilterShaderAttributeName ) + if( it->first.string() == g_arnoldLightFilterShaderAttributeName.string() ) { continue; } From 4b0de703a9a9921ee489074371c40adf549abd09 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 13:35:42 -0400 Subject: [PATCH 162/243] GafferArnoldUI : add symbol exports - Symbols for GafferArnoldUI need to be exported - MSVC2017 prevents unnamed namespaces from being exported, so exports need to be in a named namespace - MSVC gives an error with multiple definitions of 'parameterOrDefault' found in multiple source files when linking - Isolate 'parameterOrDefault' to individual namespaces as a short-term fix before refactoring --- src/GafferArnoldUI/BarndoorVisualiser.cpp | 40 +++--- src/GafferArnoldUI/DecayVisualiser.cpp | 71 ++++++----- src/GafferArnoldUI/Export.h | 46 +++++++ src/GafferArnoldUI/GoboVisualiser.cpp | 116 ++++++++++++++++-- src/GafferArnoldUI/LightBlockerVisualiser.cpp | 12 +- 5 files changed, 224 insertions(+), 61 deletions(-) create mode 100644 src/GafferArnoldUI/Export.h diff --git a/src/GafferArnoldUI/BarndoorVisualiser.cpp b/src/GafferArnoldUI/BarndoorVisualiser.cpp index f5010c1725b..276735b97a4 100644 --- a/src/GafferArnoldUI/BarndoorVisualiser.cpp +++ b/src/GafferArnoldUI/BarndoorVisualiser.cpp @@ -34,6 +34,9 @@ // ////////////////////////////////////////////////////////////////////////// +#include "Export.h" + +#include "GafferSceneUI/LightFilterVisualiser.h" #include "GafferSceneUI/StandardLightVisualiser.h" #include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" @@ -58,21 +61,26 @@ using namespace IECoreGL; using namespace IECoreGLPreview; using namespace GafferSceneUI; -namespace +namespace BarndoorVisualiserUtils { -enum class BarndoorLocation { Top, Right, Left, Bottom }; - -float parameterOrDefault( const IECore::CompoundData *data, const char *key, const float def ) +float parameterOrDefault(const IECore::CompoundData *data, const char *key, const float def) { - ConstFloatDataPtr member = data->member( key ); - if( member ) + ConstFloatDataPtr member = data->member(key); + if (member) { return member->readable(); } return def; } +} // namespace BarndoorVisualiserUtils + +namespace GafferArnoldUI +{ + +enum class BarndoorLocation { Top, Right, Left, Bottom }; + const char *barndoorFragSource() { return @@ -147,7 +155,7 @@ void addBarndoor( IECoreGL::GroupPtr result, BarndoorLocation location, float co result->addChild( barndoorGroup ); } -class BarndoorVisualiser final : public LightFilterVisualiser +class GAFFERARNOLDUI_API BarndoorVisualiser final : public LightFilterVisualiser { public : @@ -184,17 +192,17 @@ Visualisations BarndoorVisualiser::visualise( const IECore::InternedString &attr const IECore::CompoundData *filterShaderParameters = shaderNetwork->outputShader()->parametersData(); - float topLeft = parameterOrDefault( filterShaderParameters, "barndoor_top_left", 0.0f ); - float topRight = parameterOrDefault( filterShaderParameters, "barndoor_top_right", 0.0f ); + float topLeft = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_top_left", 0.0f ); + float topRight = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_top_right", 0.0f ); - float rightTop = parameterOrDefault( filterShaderParameters, "barndoor_right_top", 1.0f ); - float rightBottom = parameterOrDefault( filterShaderParameters, "barndoor_right_bottom", 1.0f ); + float rightTop = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_right_top", 1.0f ); + float rightBottom = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_right_bottom", 1.0f ); - float bottomLeft = parameterOrDefault( filterShaderParameters, "barndoor_bottom_left", 1.0f ); - float bottomRight = parameterOrDefault( filterShaderParameters, "barndoor_bottom_right", 1.0f ); + float bottomLeft = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_bottom_left", 1.0f ); + float bottomRight = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_bottom_right", 1.0f ); - float leftTop = parameterOrDefault( filterShaderParameters, "barndoor_left_top", 0.0f ); - float leftBottom = parameterOrDefault( filterShaderParameters, "barndoor_left_bottom", 0.0f ); + float leftTop = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_left_top", 0.0f ); + float leftBottom = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_left_bottom", 0.0f ); addBarndoor( result, BarndoorLocation::Top, topLeft, topRight ); @@ -237,4 +245,4 @@ Visualisations BarndoorVisualiser::visualise( const IECore::InternedString &attr } -} // namespace +} // namespace GafferArnoldUI diff --git a/src/GafferArnoldUI/DecayVisualiser.cpp b/src/GafferArnoldUI/DecayVisualiser.cpp index 6d34f7fbdf0..9832c61fb86 100644 --- a/src/GafferArnoldUI/DecayVisualiser.cpp +++ b/src/GafferArnoldUI/DecayVisualiser.cpp @@ -34,7 +34,9 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" +#include "Export.h" + +#include "GafferSceneUI/LightFilterVisualiser.h" #include "IECoreGL/Group.h" #include "IECoreGL/Primitive.h" @@ -54,7 +56,34 @@ using namespace IECoreScene; using namespace IECoreGL; using namespace IECoreGLPreview; -namespace +namespace DecayVisualiserUtils +{ + +// \todo These should be consolidated with the function in BarndoorVisualiser into a templatized version +// Where should that live? +float parameterOrDefault(const IECore::CompoundData *data, const char *key, const float def) +{ + ConstFloatDataPtr member = data->member(key); + if (member) + { + return member->readable(); + } + return def; +} + +bool parameterOrDefault(const IECore::CompoundData *data, const char *key, const bool def) +{ + ConstBoolDataPtr member = data->member(key); + if (member) + { + return member->readable(); + } + return def; +} + +} // namespace DecayVisualiserUtils + +namespace GafferArnoldUI { typedef std::pair Knot; typedef std::vector KnotVector; @@ -97,39 +126,17 @@ const char *knotFragSource() ; } -// \todo These should be consolidated with the function in BarndoorVisualiser into a templatized version -// Where should that live? -float parameterOrDefault( const IECore::CompoundData *data, const char *key, const float def ) -{ - ConstFloatDataPtr member = data->member( key ); - if( member ) - { - return member->readable(); - } - return def; -} - -bool parameterOrDefault( const IECore::CompoundData *data, const char *key, const bool def ) -{ - ConstBoolDataPtr member = data->member( key ); - if( member ) - { - return member->readable(); - } - return def; -} - void getKnotsToVisualize( const IECoreScene::ShaderNetwork *shaderNetwork, KnotVector &knots ) { const IECore::CompoundData *filterShaderParameters = shaderNetwork->outputShader()->parametersData(); - bool nearEnabled = parameterOrDefault( filterShaderParameters, "use_near_atten", false ); - bool farEnabled = parameterOrDefault( filterShaderParameters, "use_far_atten", false ); + bool nearEnabled = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "use_near_atten", false ); + bool farEnabled = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "use_far_atten", false ); if( nearEnabled ) { - float nearStart = parameterOrDefault( filterShaderParameters, "near_start", 0.0f ); - float nearEnd = parameterOrDefault( filterShaderParameters, "near_end", 0.0f ); + float nearStart = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "near_start", 0.0f ); + float nearEnd = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "near_end", 0.0f ); knots.push_back( Knot( nearStart, V3f( 0.0f ) ) ); knots.push_back( Knot( nearEnd, V3f( 1.0f ) ) ); @@ -137,8 +144,8 @@ void getKnotsToVisualize( const IECoreScene::ShaderNetwork *shaderNetwork, KnotV if( farEnabled ) { - float farStart = parameterOrDefault( filterShaderParameters, "far_start", 0.0f ); - float farEnd = parameterOrDefault( filterShaderParameters, "far_end", 0.0f ); + float farStart = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "far_start", 0.0f ); + float farEnd = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "far_end", 0.0f ); knots.push_back( Knot( farStart, V3f( 1.0f ) ) ); knots.push_back( Knot( farEnd, V3f( 0.0f ) ) ); @@ -190,7 +197,7 @@ void addKnot( IECoreGL::GroupPtr group, const Knot &knot ) group->addChild( markerGroup ); } -class DecayVisualiser final : public LightFilterVisualiser +class GAFFERARNOLDUI_API DecayVisualiser final : public LightFilterVisualiser { public : @@ -245,4 +252,4 @@ Visualisations DecayVisualiser::visualise( const IECore::InternedString &attribu return { Visualisation( result, Visualisation::Scale::None ) }; } -} // namespace +} // namespace GafferArnoldUI diff --git a/src/GafferArnoldUI/Export.h b/src/GafferArnoldUI/Export.h new file mode 100644 index 00000000000..2a9d10bae77 --- /dev/null +++ b/src/GafferArnoldUI/Export.h @@ -0,0 +1,46 @@ +////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2018, Image Engine Design Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// * Neither the name of Image Engine Design nor the names of any +// other contributors to this software may be used to endorse or +// promote products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////// + +#ifndef GAFFERARNOLDUI_EXPORT_H +#define GAFFERARNOLDUI_EXPORT_H + +#include "IECore/Export.h" + +#ifdef GafferArnoldUI_EXPORTS + #define GAFFERARNOLDUI_API IECORE_EXPORT +#else + #define GAFFERARNOLDUI_API IECORE_IMPORT +#endif + +#endif // #ifndef GAFFERARNOLDUI_EXPORT_H diff --git a/src/GafferArnoldUI/GoboVisualiser.cpp b/src/GafferArnoldUI/GoboVisualiser.cpp index 98fa8ec4d50..3d810123e15 100644 --- a/src/GafferArnoldUI/GoboVisualiser.cpp +++ b/src/GafferArnoldUI/GoboVisualiser.cpp @@ -34,9 +34,9 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferArnoldUI/Private/VisualiserAlgo.h" +#include "Export.h" -#include "GafferOSL/ShadingEngineAlgo.h" +#include "GafferOSL/ShadingEngine.h" #include "GafferSceneUI/StandardLightVisualiser.h" @@ -69,7 +69,7 @@ using namespace IECoreGLPreview; using namespace GafferSceneUI; using namespace GafferArnoldUI::Private; -namespace +namespace GoboVisualiserUtils { // \todo Borrowed from StandardLightVisualiser, we need to extract these static @@ -98,10 +98,10 @@ IECoreGL::RenderablePtr quadWireframe( const V2f &size ) /// \todo We have similar methods in several places. Can we consolidate them all somewhere? Perhaps a new /// method of CompoundData? template -T parameterOrDefault( const IECore::CompoundData *parameters, const IECore::InternedString &name, const T &defaultValue ) +T parameterOrDefault(const IECore::CompoundData *parameters, const IECore::InternedString &name, const T &defaultValue) { typedef IECore::TypedData DataType; - if( const DataType *d = parameters->member( name ) ) + if (const DataType *d = parameters->member(name)) { return d->readable(); } @@ -176,6 +176,7 @@ const char *texturedFragSource() ; } +<<<<<<< HEAD const char *constantFragSource() { return @@ -187,7 +188,96 @@ const char *constantFragSource() } +======= +<<<<<<< HEAD +>>>>>>> abc85190d... GafferArnoldUI : add symbol exports class GoboVisualiser final : public LightFilterVisualiser +======= +// OSLTextureEvaluation + +CompoundDataPtr evalOSLTexture( const IECoreScene::ShaderNetwork *shaderNetwork, int resolution ) +{ + GafferOSL::ShadingEnginePtr shadingEngine = new GafferOSL::ShadingEngine( shaderNetwork ); + + CompoundDataPtr shadingPoints = new CompoundData(); + + V3fVectorDataPtr pData = new V3fVectorData; + FloatVectorDataPtr uData = new FloatVectorData; + FloatVectorDataPtr vData = new FloatVectorData; + + vector &pWritable = pData->writable(); + vector &uWritable = uData->writable(); + vector &vWritable = vData->writable(); + + int numPoints = resolution * resolution; + + pWritable.reserve( numPoints ); + uWritable.reserve( numPoints ); + vWritable.reserve( numPoints ); + + for( int y = 0; y < resolution; ++y ) + { + for( int x = 0; x < resolution; ++x ) + { + uWritable.push_back( (float)(x + 0.5f) / resolution ); + // V is flipped because we're generating a Cortex image, + // and Cortex has the pixel origin at the top left. + vWritable.push_back( 1.0f - ( (y + 0.5f) / resolution ) ); + pWritable.push_back( V3f( x + 0.5f, y + 0.5f, 0.0f ) ); + } + } + + shadingPoints->writable()["P"] = pData; + shadingPoints->writable()["u"] = uData; + shadingPoints->writable()["v"] = vData; + + CompoundDataPtr shadingResult = shadingEngine->shade( shadingPoints.get() ); + ConstColor3fVectorDataPtr colors = shadingResult->member( "Ci" ); + + CompoundDataPtr result = new CompoundData(); + + if( colors ) + { + Imath::Box2i dataWindow( Imath::V2i( 0.0f ), Imath::V2i( resolution - 1 ) ); + Imath::Box2i displayWindow( Imath::V2i( 0.0f ), Imath::V2i( resolution - 1 ) ); + + result->writable()["dataWindow"] = new Box2iData( dataWindow ); + result->writable()["displayWindow"] = new Box2iData( displayWindow ); + + FloatVectorDataPtr redChannelData = new FloatVectorData(); + FloatVectorDataPtr greenChannelData = new FloatVectorData(); + FloatVectorDataPtr blueChannelData = new FloatVectorData(); + std::vector &r = redChannelData->writable(); + std::vector &g = greenChannelData->writable(); + std::vector &b = blueChannelData->writable(); + + vector::size_type numColors = colors->readable().size(); + r.reserve( numColors ); + g.reserve( numColors ); + b.reserve( numColors ); + + for( vector::size_type u = 0; u < numColors; ++u ) + { + Color3f c = colors->readable()[u]; + + r.push_back( c[0] ); + g.push_back( c[1] ); + b.push_back( c[2] ); + } + + CompoundDataPtr channelData = new CompoundData; + channelData->writable()["R"] = redChannelData; + channelData->writable()["G"] = greenChannelData; + channelData->writable()["B"] = blueChannelData; + + result->writable()["channels"] = channelData; + } + + return result; +} + +class GAFFERARNOLDUI_API GoboVisualiser final : public LightFilterVisualiser +>>>>>>> GafferArnoldUI : add symbol exports { public : @@ -271,12 +361,18 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut imageData->writable()["dataWindow"] = singlePixelWindow; imageData->writable()["displayWindow"] = singlePixelWindow; +<<<<<<< HEAD CompoundDataPtr channels = new CompoundData; channels->writable()["R"] = new FloatVectorData( { goboColor[0] } ); channels->writable()["G"] = new FloatVectorData( { goboColor[1] } ); channels->writable()["B"] = new FloatVectorData( { goboColor[2] } ); imageData->writable()["channels"] = channels; } +======= + if( imageData->readable().empty() ) + { + const Color3f goboColor = GoboVisualiserUtils::parameterOrDefault( filterParameters, "slidemap", Color3f( 1 ) ); +>>>>>>> abc85190d... GafferArnoldUI : add symbol exports shaderParameters->members()["texture"] = imageData; @@ -307,10 +403,10 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut const float baseRadius = sin( halfAngle ) + lensRadius; const float baseDistance = cos( halfAngle ); - float rotate = parameterOrDefault( filterParameters, "rotate", 0.0f ); - float scaleS = parameterOrDefault( filterParameters, "scale_s", 1.0f ); - float scaleT = parameterOrDefault( filterParameters, "scale_t", 1.0f ); - V2f offset = parameterOrDefault( filterParameters, "offset", V2f( 0.0f ) ); + float rotate = GoboVisualiserUtils::parameterOrDefault( filterParameters, "rotate", 0.0f ); + float scaleS = GoboVisualiserUtils::parameterOrDefault( filterParameters, "scale_s", 1.0f ); + float scaleT = GoboVisualiserUtils::parameterOrDefault( filterParameters, "scale_t", 1.0f ); + V2f offset = GoboVisualiserUtils::parameterOrDefault( filterParameters, "offset", V2f( 0.0f ) ); Imath::M44f goboTrans; @@ -324,4 +420,4 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut return { Visualisation::createOrnament( result, true ) }; } -} // namespace +} // namespace GafferArnoldUI diff --git a/src/GafferArnoldUI/LightBlockerVisualiser.cpp b/src/GafferArnoldUI/LightBlockerVisualiser.cpp index e7eb2301375..9ae40f39695 100644 --- a/src/GafferArnoldUI/LightBlockerVisualiser.cpp +++ b/src/GafferArnoldUI/LightBlockerVisualiser.cpp @@ -34,7 +34,9 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" +#include "Export.h" + +#include "GafferSceneUI/LightFilterVisualiser.h" #include "Gaffer/Metadata.h" @@ -55,7 +57,7 @@ using namespace IECoreGL; using namespace IECoreGLPreview; using namespace Gaffer; -namespace +namespace GafferArnoldUI { const IECore::CompoundData *parametersAndMetadataTarget( const IECore::InternedString &attributeName, const IECoreScene::ShaderNetwork *filterShaderNetwork, InternedString &metadataTarget ) @@ -173,7 +175,11 @@ void setFalloffGroupSettings( IECoreGL::Group *group, const IECore::CompoundData // LightBlockerVisualiser implementation. ////////////////////////////////////////////////////////////////////////// +<<<<<<< HEAD class LightBlockerVisualiser : public LightFilterVisualiser +======= +class GAFFERARNOLDUI_API LightBlockerVisualiser : public LightFilterVisualiser +>>>>>>> GafferArnoldUI : add symbol exports { public : @@ -458,4 +464,4 @@ IECoreGL::ConstRenderablePtr LightBlockerVisualiser::planeShape( const IECore::C return group; } -} // namespace +} // namespace GafferArnoldUI From 514b30eb5c2b8cc98633f1e3856427aeaba0902e Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 9 Aug 2019 13:36:50 -0400 Subject: [PATCH 163/243] DocumentationAlgo : adapt parameters for MSVC - The second argument to markdown_to_html is 'size_t len' which MSVC defines as unsigned int64 --- python/GafferUI/DocumentationAlgo.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python/GafferUI/DocumentationAlgo.py b/python/GafferUI/DocumentationAlgo.py index 1da75d8306e..a357e8b9f0f 100644 --- a/python/GafferUI/DocumentationAlgo.py +++ b/python/GafferUI/DocumentationAlgo.py @@ -318,6 +318,11 @@ def __cmark() : return __cmarkDLL __cmarkDLL.cmark_markdown_to_html.restype = ctypes.c_char_p - __cmarkDLL.cmark_markdown_to_html.argtypes = [ctypes.c_char_p, ctypes.c_long, ctypes.c_long] + # The second argument is 'size_t len', the length of the markdown string + # MSVC defines size_t as unsigned int64 + if sys == "Windows" : + __cmarkDLL.cmark_markdown_to_html.argtypes = [ctypes.c_char_p, ctypes.c_ulonglong, ctypes.c_long] + else: + __cmarkDLL.cmark_markdown_to_html.argtypes = [ctypes.c_char_p, ctypes.c_long, ctypes.c_long] return __cmarkDLL From 0ca6d18fbaae837ccd7f262c17618c12f3b108f5 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 9 Aug 2019 15:29:06 -0400 Subject: [PATCH 164/243] Gaffer.bat : fix typo --- bin/gaffer.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index bc7e71ae665..8c6e107fcd8 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -58,7 +58,7 @@ if "%APPLESEED%" NEQ "" ( if "%APPLESEED%" NEQ "" ( call :prependToPath "%APPLESEED%\bin;%APPLESEED%\lib" PATH call :prependToPath "%APPLESEED%\lib\python2.7" PYTHONPATH - call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplay" APPLESEED_SEARCHPATH + call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays" APPLESEED_SEARCHPATH ) rem Arnold From 2b3b1ec5c3bd6a319299d504eda3410f1c27cb05 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 18:20:51 -0400 Subject: [PATCH 165/243] Scons : add Windows support for build options --- SConstruct | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/SConstruct b/SConstruct index fc6ec6a3b27..37fde5a4d4e 100644 --- a/SConstruct +++ b/SConstruct @@ -2,6 +2,7 @@ # # Copyright (c) 2011-2014, John Haddon. All rights reserved. # Copyright (c) 2011-2014, Image Engine Design Inc. All rights reserved. +# Copyright 2019, Hypothetical Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -80,13 +81,13 @@ options = Variables( optionsFile, ARGUMENTS ) options.Add( "CXX", "The C++ compiler.", - "clang++" if sys.platform == "darwin" else "g++", + {"darwin" : "clang++", "win32" : "cl"}.get(sys.platform, "g++") ) options.Add( "CXXFLAGS", "The extra flags to pass to the C++ compiler during compilation.", - [ "-pipe", "-Wall" ] + [ "-pipe", "-Wall" ] if Environment()["PLATFORM"] != "win32" else [], ) options.Add( @@ -101,7 +102,7 @@ options.Add( options.Add( "CXXSTD", "The C++ standard to build against. A minimum of C++11 is required.", - "c++11", + "c++11" if Environment()["PLATFORM"] != "win32" else "" ) options.Add( @@ -121,7 +122,7 @@ options.Add( options.Add( "BUILD_DIR", "The destination directory in which the build will be made.", - "./build/gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}", + os.path.join( "build", "gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}" ), ) options.Add( @@ -135,13 +136,13 @@ options.Add( options.Add( "INSTALL_DIR", "The destination directory for the installation.", - "./install/gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}", + os.path.join( "install", "gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}" ), ) options.Add( "PACKAGE_FILE", "The file in which the final gaffer file will be created by the package target.", - "${INSTALL_DIR}.tar.gz", + "${INSTALL_DIR}.tar.gz" if sys.platform != "win32" else "${INSTALL_DIR}.zip", ) options.Add( @@ -170,7 +171,7 @@ options.Add( options.Add( "APPLESEED_ROOT", "The directory in which Appleseed is installed. Used to build Gafferseed", - "$BUILD_DIR/appleseed", + os.path.join( "$BUILD_DIR", "appleseed" ), ) options.Add( From e7ebe1f3c95f1923f26114378d2787ecdcef04ef Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 18:52:19 -0400 Subject: [PATCH 166/243] Scons : make system includes cross-platform --- SConstruct | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/SConstruct b/SConstruct index 37fde5a4d4e..ae599291f49 100644 --- a/SConstruct +++ b/SConstruct @@ -320,6 +320,10 @@ options.Add( # Basic environment object. All the other environments will be based on this. ############################################################################################### +########################################################################################### +# All platforms +########################################################################################### + env = Environment( options = options, @@ -361,15 +365,31 @@ env = Environment( # this should turn off warnings from those headers, allowing us to # build with -Werror. there are so many warnings from boost # in particular that this would be otherwise impossible. -for path in [ + +# Using Scons recommendation of CPPPATH for cross-platform +# would create a lot of extra code throughout the module +# configuration, so it is handled here. + +def formatSystemIncludes( e, includeList ) : + if type(includeList) != list : + includeList = [includeList] + + includeList = [ i for i in includeList if e.subst( i ) != "" ] + if e[ "PLATFORM" ] == "win32" : + formattedList = [ "/I{}".format(i) for i in includeList ] + else: + formattedList = [] + for i in includeList: + formattedList += [ "-isystem", i ] + return formattedList + +systemIncludes = [ "$BUILD_DIR/include", "$BUILD_DIR/include/OpenEXR", "$BUILD_DIR/include/GL", - ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] : + ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] - env.Append( - CXXFLAGS = [ "-isystem", path ] - ) +env.Append( CXXFLAGS = formatSystemIncludes( env, systemIncludes ) ) if "clang++" in os.path.basename( env["CXX"] ): env.Append( From 4ef20d6f73ea08a8e7a5f1a2fea1e57c91664d91 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 6 Aug 2019 18:58:52 -0400 Subject: [PATCH 167/243] Scons : add Windows build flags --- SConstruct | 176 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 132 insertions(+), 44 deletions(-) diff --git a/SConstruct b/SConstruct index ae599291f49..10c0c7d567f 100644 --- a/SConstruct +++ b/SConstruct @@ -398,67 +398,155 @@ if "clang++" in os.path.basename( env["CXX"] ): env["BUILD_DIR"] = os.path.abspath( env["BUILD_DIR"] ) -# DISPLAY and HOME are essential for running gaffer when generating -# the documentation. TERM is needed to get coloured output from the -# compiler. -for e in env["ENV_VARS_TO_IMPORT"].split() + [ "DISPLAY", "HOME", "TERM" ] : - if e in os.environ : - env["ENV"][e] = os.environ[e] +########################################################################################### +# POSIX configuration +########################################################################################### + +if env["PLATFORM"] != "win32" : -if env["PLATFORM"] == "darwin" : + # DISPLAY and HOME are essential for running gaffer when generating + # the documentation. TERM is needed to get coloured output from the + # compiler. + for e in env["ENV_VARS_TO_IMPORT"].split() + [ "DISPLAY", "HOME", "TERM" ] : + if e in os.environ : + env["ENV"][e] = os.environ[e] - env.Append( CXXFLAGS = [ "-D__USE_ISOC99" ] ) - env["GAFFER_PLATFORM"] = "osx" + if env["PLATFORM"] == "darwin" : + + env.Append( CXXFLAGS = [ "-D__USE_ISOC99" ] ) + env["GAFFER_PLATFORM"] = "osx" - osxVersion = [ int( v ) for v in platform.mac_ver()[0].split( "." ) ] - if osxVersion[0] == 10 and osxVersion[1] > 7 : - # Fix problems with Boost 1.55 and recent versions of Clang. - env.Append( CXXFLAGS = [ "-DBOOST_HAS_INT128", "-Wno-unused-local-typedef" ] ) + osxVersion = [ int( v ) for v in platform.mac_ver()[0].split( "." ) ] + if osxVersion[0] == 10 and osxVersion[1] > 7 : + # Fix problems with Boost 1.55 and recent versions of Clang. + env.Append( CXXFLAGS = [ "-DBOOST_HAS_INT128", "-Wno-unused-local-typedef" ] ) -elif env["PLATFORM"] == "posix" : + else : - if "g++" in os.path.basename( env["CXX"] ) : + if "g++" in os.path.basename( env["CXX"] ) : - gccVersion = subprocess.check_output( [ env["CXX"], "-dumpversion" ], env=env["ENV"] ).decode().strip() - gccVersion = [ int( v ) for v in gccVersion.split( "." ) ] + gccVersion = subprocess.check_output( [ env["CXX"], "-dumpversion" ], env=env["ENV"] ).decode().strip() + gccVersion = [ int( v ) for v in gccVersion.split( "." ) ] - # GCC 4.1.2 in conjunction with boost::flat_map produces crashes when - # using the -fstrict-aliasing optimisation (which defaults to on with -O2), - # so we turn the optimisation off here, only for that specific GCC version. - if gccVersion == [ 4, 1, 2 ] : - env.Append( CXXFLAGS = [ "-fno-strict-aliasing" ] ) + # GCC 4.1.2 in conjunction with boost::flat_map produces crashes when + # using the -fstrict-aliasing optimisation (which defaults to on with -O2), + # so we turn the optimisation off here, only for that specific GCC version. + if gccVersion == [ 4, 1, 2 ] : + env.Append( CXXFLAGS = [ "-fno-strict-aliasing" ] ) - # GCC emits spurious "assuming signed overflow does not occur" - # warnings, typically triggered by the comparisons in Box3f::isEmpty(). - # Downgrade these back to warning status. - if gccVersion >= [ 4, 2 ] : - env.Append( CXXFLAGS = [ "-Wno-error=strict-overflow" ] ) + # GCC emits spurious "assuming signed overflow does not occur" + # warnings, typically triggered by the comparisons in Box3f::isEmpty(). + # Downgrade these back to warning status. + if gccVersion >= [ 4, 2 ] : + env.Append( CXXFLAGS = [ "-Wno-error=strict-overflow" ] ) - # Old GCC emits spurious "maybe uninitialized" warnings when using - # boost::optional - if gccVersion < [ 5, 1 ] : - env.Append( CXXFLAGS = [ "-Wno-error=maybe-uninitialized" ] ) + # Old GCC emits spurious "maybe uninitialized" warnings when using + # boost::optional + if gccVersion < [ 5, 1 ] : + env.Append( CXXFLAGS = [ "-Wno-error=maybe-uninitialized" ] ) - if gccVersion >= [ 5, 1 ] : - env.Append( CXXFLAGS = [ "-D_GLIBCXX_USE_CXX11_ABI=0" ] ) + if gccVersion >= [ 5, 1 ] : + env.Append( CXXFLAGS = [ "-D_GLIBCXX_USE_CXX11_ABI=0" ] ) - env["GAFFER_PLATFORM"] = "linux" + env["GAFFER_PLATFORM"] = "linux" -env.Append( CXXFLAGS = [ "-std=$CXXSTD", "-fvisibility=hidden" ] ) + env.Append( CXXFLAGS = [ "-std=$CXXSTD", "-fvisibility=hidden" ] ) -if env["BUILD_TYPE"] == "DEBUG" : - env.Append( CXXFLAGS = ["-g", "-O0", "-DTBB_USE_DEBUG=1"] ) -elif env["BUILD_TYPE"] == "RELEASE" : - env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3"] ) -elif env["BUILD_TYPE"] == "RELWITHDEBINFO" : - env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3", "-g", "-fno-omit-frame-pointer"] ) + if env["BUILD_TYPE"] == "DEBUG" : + env.Append( CXXFLAGS = ["-g", "-O0", "-DTBB_USE_DEBUG=1"] ) + elif env["BUILD_TYPE"] == "RELEASE" : + env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3"] ) + elif env["BUILD_TYPE"] == "RELWITHDEBINFO" : + env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3", "-g", "-fno-omit-frame-pointer"] ) + + if env["WARNINGS_AS_ERRORS"] : + env.Append( + CXXFLAGS = [ "-Werror" ], + SHLINKFLAGS = [ "-Wl,-fatal_warnings" ], + ) + +########################################################################################### +# Windows configuration +########################################################################################### -if env["WARNINGS_AS_ERRORS"] : +else: env.Append( - CXXFLAGS = [ "-Werror" ], - SHLINKFLAGS = [ "-Wl,-fatal_warnings" ], + CXXFLAGS = [ + "/nologo", + "/diagnostics:classic", + "/DWIN32", + "/D_WINDOWS", + "/DOPENEXR_DLL", + "/DNOMINMAX", + "/D__PRETTY_FUNCTION__=__FUNCSIG__", + "/DBOOST_ALL_DYN_LINK", + "/DBOOST_FILESYSTEM_NO_DEPRICATED", + "/DBOOST_SIGNALS_NO_DEPRECATION_WARNING", + "/DBOOST_PYTHON_MAX_ARITY=20", + "/D_WINDLL", + "/D_MBCS", + "/Zc:inline", # Remove unreferenced function or data if it is COMDAT or has internal linkage only + "/GR", # enable RTTI + "/TP", # treat all files as c++ (vs C) + "/FC", # display full paths in diagnostics + "/EHsc\";\"/MP", # catch c++ exceptions only + "/wd4910", # disable warning C4910 (https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4910?view=vs-2019) generated many times by OpenEXR + ] ) + if env["WARNINGS_AS_ERRORS"] : + env.Append( + CXXFLAGS = [ "/WX" ], + ) + + if env["BUILD_TYPE"] == "DEBUG" : + env.Append( + CXXFLAGS = + [ + "-O0", + "-Zi", + "-MDd", + "-DBOOST_DISABLE_ASSERTS", + "-bigobj", + ], + CCPDBFLAGS= + [ + "/Zi", + "/Fd${TARGET}.pdb", + ], + ) + elif env["BUILD_TYPE"] == "RELEASE" : + env.Append( + CXXFLAGS = + [ + "-DNDEBUG", + "-MD", # create multithreaded DLL + "-DBOOST_DISABLE_ASSERTS", + "-Ox", + ] + ) + elif env["BUILD_TYPE"] == "RELWITHDEBINFO" : + env.Append( + CXXFLAGS = + [ + "-DNDEBUG", + "-MD", + "-bigobj", + "-DBOOST_DISABLE_ASSERTS", + "-Zi", + ], + LINKFLAGS = + [ + "-DEBUG", + ], + CCPDBFLAGS= + [ + "/Zi", + "/Fd${TARGET}.pdb", + ], + ) + + if env["BUILD_CACHEDIR"] != "" : CacheDir( env["BUILD_CACHEDIR"] ) From 1c784b0a9fcdc88f6c35d05a25548a90c0459d06 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 11:31:51 -0400 Subject: [PATCH 168/243] Scons : add Windows compatibility to commandEnv --- SConstruct | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/SConstruct b/SConstruct index 10c0c7d567f..ed0e504f1af 100644 --- a/SConstruct +++ b/SConstruct @@ -642,7 +642,7 @@ if env["ASAN"] : # An environment for running commands with access to the applications we've built ############################################################################################### -def split( stringOrList, separator = ":" ) : +def split( stringOrList, separator = os.path.pathsep ) : if isinstance( stringOrList, list ) : return stringOrList @@ -650,14 +650,16 @@ def split( stringOrList, separator = ":" ) : return stringOrList.split( separator ) commandEnv = env.Clone() -commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/bin:" ) + commandEnv["ENV"]["PATH"] +commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/bin" + os.path.pathsep ) + commandEnv["ENV"]["PATH"] if commandEnv["PLATFORM"]=="darwin" : - commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( ":".join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) -else : - commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( ":".join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) + commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) +elif commandEnv["PLATFORM"] == "win32" : + commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv[ "LOCATE_DEPENDENCY_LIBPATH" ] ) ) ) + commandEnv["ENV"]["PATH"] +else: + commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) -commandEnv["ENV"]["PYTHONPATH"] = commandEnv.subst( ":".join( split( commandEnv["LOCATE_DEPENDENCY_PYTHONPATH"] ) ) ) +commandEnv["ENV"]["PYTHONPATH"] = commandEnv.subst( os.path.pathsep.join( split( commandEnv["LOCATE_DEPENDENCY_PYTHONPATH"] ) ) ) # SIP on MacOS prevents DYLD_LIBRARY_PATH being passed down so we make sure # we also pass through to gaffer the other base vars it uses to populate paths From 6b29586b500f9f23b581dce835d02bc2d889f964 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 11:41:21 -0400 Subject: [PATCH 169/243] Scons : replace -isystem with cross-platform function --- SConstruct | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SConstruct b/SConstruct index ed0e504f1af..904aa1cb5c0 100644 --- a/SConstruct +++ b/SConstruct @@ -370,12 +370,12 @@ env = Environment( # would create a lot of extra code throughout the module # configuration, so it is handled here. -def formatSystemIncludes( e, includeList ) : +def formatSystemIncludes( includeList ) : if type(includeList) != list : includeList = [includeList] - includeList = [ i for i in includeList if e.subst( i ) != "" ] - if e[ "PLATFORM" ] == "win32" : + includeList = [ i for i in includeList if env.subst( i ) != "" ] + if env[ "PLATFORM" ] == "win32" : formattedList = [ "/I{}".format(i) for i in includeList ] else: formattedList = [] @@ -785,7 +785,7 @@ gafferLib = {} if os.path.exists( vTuneRoot ): gafferLib = { "envAppends" : { - "CXXFLAGS" : [ "-isystem", "$VTUNE_ROOT/include", "-DGAFFER_VTUNE"], + "CXXFLAGS" : [ "-DGAFFER_VTUNE"] + formatSystemIncludes( "$VTUNE_ROOT/include" ), "LIBPATH" : [ "$VTUNE_ROOT/lib64" ], "LIBS" : [ "ittnotify" ] }, @@ -1022,12 +1022,12 @@ libraries = { "GafferAppleseed" : { "envAppends" : { - "CXXFLAGS" : [ "-isystem", "$APPLESEED_ROOT/include", "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ], + "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( "$APPLESEED_ROOT/include" ), "LIBPATH" : [ "$APPLESEED_ROOT/lib" ], "LIBS" : [ "Gaffer", "GafferDispatch", "GafferScene", "appleseed", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreAppleseed$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX" ], }, "pythonEnvAppends" : { - "CXXFLAGS" : [ "-isystem", "$APPLESEED_ROOT/include", "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ], + "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( "$APPLESEED_ROOT/include" ), "LIBPATH" : [ "$APPLESEED_ROOT/lib" ], "LIBS" : [ "Gaffer", "GafferDispatch", "GafferScene", "GafferBindings", "GafferAppleseed" ], }, From 274f7b0dbd436b1152dbf6e0e32fbb32699b3776 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 12:44:32 -0400 Subject: [PATCH 170/243] Scons : add Windows support for string substitutions in files --- SConstruct | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/SConstruct b/SConstruct index 904aa1cb5c0..38892b7e90f 100644 --- a/SConstruct +++ b/SConstruct @@ -361,6 +361,25 @@ env = Environment( ) +# Take a dictionary of the form {"old": "new", "old2": "new2",...} +# and perform platform-specific substitutions on the given file +def substituteFileText( sourceFile, destFile, subs ) : + if len(subs.keys()) == 0: + return None + + if env["PLATFORM"] != "win32" : + sedSubstitutions = "s/{}/{}/g".format( subs.keys()[ 0 ], subs[ subs.keys()[ 0 ] ] ) + for i in range( 1, len(subs.keys() ) ) : + sedSubstitutions += "; s/{}/{}/g".format( subs.keys()[ i ], subs[subs.keys()[ i ] ] ) + return env.Command( destFile, sourceFile, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) + else : + psSubstitutions = "" + for key in subs.keys() : + psSubstitutions += " -replace \\\"{}\\\",\\\"{}\\\"".format( key.replace( "!", "\!" ), subs[ key ].replace( "!", "\!" ) ) + return env.Command( destFile, sourceFile, "powershell -Command \"cat $SOURCE | % {{ $$_{} }} | Out-File -Encoding utf8 $TARGET\"".format( psSubstitutions ) ) + + + # include 3rd party headers with -isystem rather than -I. # this should turn off warnings from those headers, allowing us to # build with -Werror. there are so many warnings from boost @@ -1172,10 +1191,12 @@ for libraryName, libraryDef in libraries.items() : # header install - sedSubstitutions = "s/!GAFFER_MILESTONE_VERSION!/$GAFFER_MILESTONE_VERSION/g" - sedSubstitutions += "; s/!GAFFER_MAJOR_VERSION!/$GAFFER_MAJOR_VERSION/g" - sedSubstitutions += "; s/!GAFFER_MINOR_VERSION!/$GAFFER_MINOR_VERSION/g" - sedSubstitutions += "; s/!GAFFER_PATCH_VERSION!/$GAFFER_PATCH_VERSION/g" + fileSubstitutions = { + "!GAFFER_MILESTONE_VERSION!" : "$GAFFER_MILESTONE_VERSION", + "!GAFFER_MAJOR_VERSION!" : "$GAFFER_MAJOR_VERSION", + "!GAFFER_MINOR_VERSION!" : "$GAFFER_MINOR_VERSION", + "!GAFFER_PATCH_VERSION!" : "$GAFFER_PATCH_VERSION", + } headers = ( glob.glob( "include/" + libraryName + "/*.h" ) + @@ -1185,7 +1206,7 @@ for libraryName, libraryDef in libraries.items() : ) for header in headers : - headerInstall = env.Command( "$BUILD_DIR/" + header, header, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) + headerInstall = substituteFileText( header, "$BUILD_DIR/" + header, fileSubstitutions ) libEnv.Alias( "build", headerInstall ) # bindings library @@ -1213,7 +1234,7 @@ for libraryName, libraryDef in libraries.items() : ) for header in bindingsHeaders : - headerInstall = env.Command( "$BUILD_DIR/" + header, header, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) + headerInstall = substituteFileText( header, "$BUILD_DIR/" + header, fileSubstitutions ) bindingsEnv.Alias( "build", headerInstall ) # python module binary component @@ -1249,7 +1270,7 @@ for libraryName, libraryDef in libraries.items() : pythonFiles = glob.glob( "python/" + libraryName + "/*.py" ) + glob.glob( "python/" + libraryName + "/*/*.py" ) for pythonFile in pythonFiles : - pythonFileInstall = env.Command( "$BUILD_DIR/" + pythonFile, pythonFile, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) + pythonFileInstall = substituteFileText( pythonFile, "$BUILD_DIR/" + pythonFile, fileSubstitutions ) env.Alias( "build", pythonFileInstall ) # apps From 481e30631edde089743a716f2206fa4eeb5ed992 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 13:47:14 -0400 Subject: [PATCH 171/243] Scons : adapt Python naming convention to Windows scheme - Python names it's library as python.lib with no dots in the version number - The Python include directory does not include a version number --- SConstruct | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 38892b7e90f..de1d52b45fb 100644 --- a/SConstruct +++ b/SConstruct @@ -408,7 +408,12 @@ systemIncludes = [ "$BUILD_DIR/include/GL", ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] -env.Append( CXXFLAGS = formatSystemIncludes( env, systemIncludes ) ) +if env["PLATFORM"] != "win32" : + systemIncludes += "$BUILD_DIR/include/python$PYTHON_VERSION" +else: + systemIncludes += "$BUILD_DIR/include/python", + +env.Append( CXXFLAGS = formatSystemIncludes( systemIncludes ) ) if "clang++" in os.path.basename( env["CXX"] ): env.Append( From e27f436b13421d56793d8fe9202ea0782e4b2a82 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 13:49:37 -0400 Subject: [PATCH 172/243] Scons : Quote Inkscape command to allow spaces in the path - Inkscape on Windows is likely installed in "C:\Program Files" - the space in the directory name requires quoting to be run --- SConstruct | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct index de1d52b45fb..290d2b5e024 100644 --- a/SConstruct +++ b/SConstruct @@ -1345,6 +1345,9 @@ for libraryName, libraryDef in libraries.items() : # Graphics ######################################################################################################### +def inkscapeCmd(): + return env["INKSCAPE"] if env["PLATFORM"] != "win32" else "\"{}\"".format( env["INKSCAPE"] ) # Quote command string to support spaces in path on Windows + def buildImageCommand( source, target, env ) : # Requires env to have buildImageOptions set, containing, at minimum: @@ -1371,7 +1374,7 @@ def buildImageCommand( source, target, env ) : svgPath = os.path.abspath( svgFilename ), **substitutions ) - subprocess.check_call( env["INKSCAPE"] + " " + args, shell = True ) + subprocess.check_call( inkscapeCmd() + " " + args, shell = True ) def validateAndFlattenImageOptions( imageOptions, svg ) : @@ -1421,7 +1424,7 @@ def svgQuery( svgFile, id_ ) : objects = {} - queryCommand = env["INKSCAPE"] + " --query-all \"" + filepath + "\"" + queryCommand = inkscapeCmd() + " --query-all \"" + filepath + "\"" output = subprocess.check_output( queryCommand, shell=True ).decode() for line in output.split( "\n" ) : tokens = line.split( "," ) From 17951a2e9c937c911e8ab4639d619b498091d7cb Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 15:11:40 -0400 Subject: [PATCH 173/243] Scons : convert LOCATE_DEPENDENCY_PATH to a list if it is not already - MSVC builds need to have the Boost include directory pointed out, this seems like the most logical way and supports additional directories passed on the command line if needed --- SConstruct | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct index 290d2b5e024..aa1296816c3 100644 --- a/SConstruct +++ b/SConstruct @@ -190,7 +190,8 @@ options.Add( options.Add( "LOCATE_DEPENDENCY_SYSTEMPATH", "Locations on which to search for include files " - "for the dependencies. These are included with -isystem.", + "for the dependencies, separated by commas." + "These are included with -isystem.", [], ) @@ -402,11 +403,15 @@ def formatSystemIncludes( includeList ) : formattedList += [ "-isystem", i ] return formattedList +systemIncludesOption = env["LOCATE_DEPENDENCY_SYSTEMPATH"] +if type(systemIncludesOption) != list : + systemIncludesOption = systemIncludesOption.split(",") + systemIncludes = [ "$BUILD_DIR/include", "$BUILD_DIR/include/OpenEXR", "$BUILD_DIR/include/GL", - ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] + ] + systemIncludesOption if env["PLATFORM"] != "win32" : systemIncludes += "$BUILD_DIR/include/python$PYTHON_VERSION" From e69d6d90600e18afd9612732ce980e30305454d7 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:42:33 -0400 Subject: [PATCH 174/243] ContextSanitiser : export symbols --- include/GafferImageTest/ContextSanitiser.h | 4 +++- include/GafferImageTest/Export.h | 6 +++--- include/GafferSceneTest/ContextSanitiser.h | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/GafferImageTest/ContextSanitiser.h b/include/GafferImageTest/ContextSanitiser.h index fe5d6edd34e..f0cbe0abc72 100644 --- a/include/GafferImageTest/ContextSanitiser.h +++ b/include/GafferImageTest/ContextSanitiser.h @@ -37,6 +37,8 @@ #ifndef GAFFERIMAGETEST_CONTEXTSANITISER_H #define GAFFERIMAGETEST_CONTEXTSANITISER_H +#include "GafferImageTest/Export.h" + #include "Gaffer/Monitor.h" #include "Gaffer/Plug.h" @@ -46,7 +48,7 @@ namespace GafferImageTest { /// A monitor which warns about common context handling mistakes. -class GAFFER_API ContextSanitiser : public Gaffer::Monitor +class GAFFERIMAGETEST_API ContextSanitiser : public Gaffer::Monitor { public : diff --git a/include/GafferImageTest/Export.h b/include/GafferImageTest/Export.h index 552341dbee7..3bfc8695000 100644 --- a/include/GafferImageTest/Export.h +++ b/include/GafferImageTest/Export.h @@ -37,15 +37,15 @@ #ifndef GAFFERIMAGETEST_EXPORT_H #define GAFFERIMAGETEST_EXPORT_H -#include "Gaffer/Export.h" +#include "IECore/Export.h" // define GAFFERIMAGETEST_API macro based on whether or not we are compiling // GafferImageTest, or including headers for linking to it. the GAFFERIMAGETEST_API // macro is the one that is used in the class definitions. #ifdef GafferImageTest_EXPORTS - #define GAFFERIMAGETEST_API GAFFER_EXPORT + #define GAFFERIMAGETEST_API IECORE_EXPORT #else - #define GAFFERIMAGETEST_API GAFFER_IMPORT + #define GAFFERIMAGETEST_API IECORE_IMPORT #endif #endif // #ifndef GAFFERIMAGETEST_EXPORT_H diff --git a/include/GafferSceneTest/ContextSanitiser.h b/include/GafferSceneTest/ContextSanitiser.h index 4fa8bb0ec53..33d86c3740b 100644 --- a/include/GafferSceneTest/ContextSanitiser.h +++ b/include/GafferSceneTest/ContextSanitiser.h @@ -37,6 +37,8 @@ #ifndef GAFFERSCENETEST_CONTEXTSANITISER_H #define GAFFERSCENETEST_CONTEXTSANITISER_H +#include "GafferSceneTest/Export.h" + #include "Gaffer/Monitor.h" #include "Gaffer/Plug.h" @@ -46,7 +48,7 @@ namespace GafferSceneTest { /// A monitor which warns about common context handling mistakes. -class GAFFER_API ContextSanitiser : public Gaffer::Monitor +class GAFFERSCENETEST_API ContextSanitiser : public Gaffer::Monitor { public : From 1fb5d52ffd4831c66386d8c3f9e7666640fff492 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:43:55 -0400 Subject: [PATCH 175/243] Scons : include environment variables on Windows --- SConstruct | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index aa1296816c3..948e98bf671 100644 --- a/SConstruct +++ b/SConstruct @@ -427,6 +427,10 @@ if "clang++" in os.path.basename( env["CXX"] ): env["BUILD_DIR"] = os.path.abspath( env["BUILD_DIR"] ) +for e in env["ENV_VARS_TO_IMPORT"].split() : + if e in os.environ : + env["ENV"][e] = os.environ[e] + ########################################################################################### # POSIX configuration ########################################################################################### @@ -436,7 +440,7 @@ if env["PLATFORM"] != "win32" : # DISPLAY and HOME are essential for running gaffer when generating # the documentation. TERM is needed to get coloured output from the # compiler. - for e in env["ENV_VARS_TO_IMPORT"].split() + [ "DISPLAY", "HOME", "TERM" ] : + for e in [ "DISPLAY", "HOME", "TERM" ] : if e in os.environ : env["ENV"][e] = os.environ[e] From 5f4aaabb31f5423f07bb2fe5aa80301d373f4541 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:44:21 -0400 Subject: [PATCH 176/243] Scons : Windows needs to access various DLLs in the lib directory --- SConstruct | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SConstruct b/SConstruct index 948e98bf671..b031fed0982 100644 --- a/SConstruct +++ b/SConstruct @@ -684,6 +684,8 @@ def split( stringOrList, separator = os.path.pathsep ) : commandEnv = env.Clone() commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/bin" + os.path.pathsep ) + commandEnv["ENV"]["PATH"] +if env["PLATFORM"] == "win32" : + commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/lib" + os.path.pathsep ) + commandEnv["ENV"]["PATH"] if commandEnv["PLATFORM"]=="darwin" : commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) From 3cf5e3f98cc53a27275a308dd52d3d9577513e16 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:44:52 -0400 Subject: [PATCH 177/243] Scons : MSVC needs Advapi32 library for file owner information --- SConstruct | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct index b031fed0982..732318bd779 100644 --- a/SConstruct +++ b/SConstruct @@ -815,8 +815,6 @@ else : vTuneRoot = env.subst("$VTUNE_ROOT") -gafferLib = {} - if os.path.exists( vTuneRoot ): gafferLib = { "envAppends" : { @@ -828,6 +826,15 @@ if os.path.exists( vTuneRoot ): "CXXFLAGS" : [ "-DGAFFER_VTUNE"] } } +else: + if env["PLATFORM"] == "win32" : + gafferLib = { + "envAppends" : { + "LIBS" : [ "Advapi32" ] + } + } + else: + gafferLib = {} libraries = { From 3802dd806a84027d4a26d3a5dcb9852944f777f7 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:45:18 -0400 Subject: [PATCH 178/243] Scons : Arnold on Windows stores ai.lib in the lib directory --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 732318bd779..a1b8c9f28bd 100644 --- a/SConstruct +++ b/SConstruct @@ -981,7 +981,7 @@ libraries = { "GafferArnold" : { "envAppends" : { "CPPPATH" : [ "$ARNOLD_ROOT/include" ], - "LIBPATH" : [ "$ARNOLD_ROOT/bin" ], + "LIBPATH" : [ "$ARNOLD_ROOT/bin", "$ARNOLD_ROOT/lib" ], "LIBS" : [ "Gaffer", "GafferScene", "GafferDispatch", "ai", "GafferVDB", "openvdb$VDB_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreArnold$CORTEX_LIB_SUFFIX", "IECoreVDB$CORTEX_LIB_SUFFIX", "GafferOSL" ], }, "pythonEnvAppends" : { From 82c81c86b21429582aa386a23a498f60099f074b Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:45:34 -0400 Subject: [PATCH 179/243] Scons : add Windows location for opengl --- SConstruct | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SConstruct b/SConstruct index a1b8c9f28bd..b6340dddc0d 100644 --- a/SConstruct +++ b/SConstruct @@ -1158,6 +1158,8 @@ libraries = { for library in ( "GafferUI", "GafferScene", "GafferSceneUI", "GafferImageUI" ) : if env["PLATFORM"] == "darwin" : libraries[library]["envAppends"].setdefault( "FRAMEWORKS", [] ).append( "OpenGL" ) + elif env["PLATFORM"] == "win32" : + libraries[library]["envAppends"]["LIBS"].append( "opengl32" ) else : libraries[library]["envAppends"]["LIBS"].append( "GL" ) libraries[library]["envAppends"]["LIBS"].append( "GLEW$GLEW_LIB_SUFFIX" ) From f99b862f7dd59ba5e0e54c231efcb5c168a1a8ff Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:45:54 -0400 Subject: [PATCH 180/243] Scons : Windows Python libraries end in .pyd --- SConstruct | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SConstruct b/SConstruct index b6340dddc0d..379db28b386 100644 --- a/SConstruct +++ b/SConstruct @@ -1284,6 +1284,8 @@ for libraryName, libraryDef in libraries.items() : # LIBSUFFIXES variable used by the library scanner. pythonModuleEnv["LIBSUFFIXES"].append( pythonModuleEnv.subst( "$SHLIBSUFFIX" ) ) pythonModuleEnv["SHLIBSUFFIX"] = ".so" + elif pythonModuleEnv["PLATFORM"] == "win32" : + pythonModuleEnv["SHLIBSUFFIX"] = ".pyd" pythonModule = pythonModuleEnv.SharedLibrary( "python/" + libraryName + "/_" + libraryName, pythonModuleSource ) pythonModuleEnv.Default( pythonModule ) From c3590abe0412a55a8e550c2cf46e3296a628c251 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 16:46:21 -0400 Subject: [PATCH 181/243] Scons : MSVC preprocessor variables are case-sensitive --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 379db28b386..305a765ab6e 100644 --- a/SConstruct +++ b/SConstruct @@ -1240,7 +1240,7 @@ for libraryName, libraryDef in libraries.items() : pythonEnv.Append( **(libraryDef.get( "pythonEnvAppends", {} )) ) bindingsEnv = pythonEnv.Clone() - bindingsEnv.Append( CXXFLAGS = "-D{0}BINDINGS_EXPORTS".format( libraryName ) ) + bindingsEnv.Append( CXXFLAGS = "-D{0}Bindings_EXPORTS".format( libraryName ) ) bindingsSource = sorted( glob.glob( "src/" + libraryName + "Bindings/*.cpp" ) ) if bindingsSource : From 9616023c0d78bce268961903bea7bec0ad32169d Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 17:44:46 -0400 Subject: [PATCH 182/243] Documentation : convert from shell scripts to Python scripts for Windows compatibility --- .../generate.py | 31 ++++++++++++++++++ .../generate.sh | 32 ------------------- .../ControlsAndShortcuts/generate.py | 6 ++++ .../WorkingWithScenes/Camera/generate.py | 16 ++++++++++ .../WorkingWithScenes/Camera/generate.sh | 16 ---------- .../BoxNode/generate.py | 12 +++++++ .../BoxNode/generate.sh | 12 ------- .../TutorialUsingTheOSLCodeNode/generate.py | 6 ++++ .../TutorialUsingTheOSLCodeNode/generate.sh | 6 ---- .../ThePythonEditor/generate.py | 12 +++++++ .../ThePythonEditor/generate.sh | 12 ------- .../generate.py | 10 ++++++ .../generate.sh | 10 ------ .../TutorialStartupConfig1/generate.py | 7 ++++ .../TutorialStartupConfig1/generate.sh | 7 ---- .../TutorialStartupConfig2/generate.py | 8 +++++ .../TutorialStartupConfig2/generate.sh | 8 ----- doc/source/generate.py | 8 +++++ doc/source/generate.sh | 8 ----- 19 files changed, 116 insertions(+), 111 deletions(-) create mode 100644 doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py delete mode 100755 doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh create mode 100644 doc/source/Interface/ControlsAndShortcuts/generate.py create mode 100644 doc/source/WorkingWithScenes/Camera/generate.py delete mode 100755 doc/source/WorkingWithScenes/Camera/generate.sh create mode 100644 doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py delete mode 100755 doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh create mode 100644 doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py delete mode 100755 doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh create mode 100644 doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py delete mode 100755 doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh create mode 100644 doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py delete mode 100755 doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh create mode 100644 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py delete mode 100755 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh create mode 100644 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py delete mode 100755 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh create mode 100644 doc/source/generate.py delete mode 100755 doc/source/generate.sh diff --git a/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py b/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py new file mode 100644 index 00000000000..303a2817bec --- /dev/null +++ b/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py @@ -0,0 +1,31 @@ +# BuildTarget: images/expansion.png +# BuildTarget: images/plus.png +# BuildTarget: images/nodeSetDriverNodeSelection.png +# BuildTarget: images/nodeSetDriverNodeSet.png +# BuildTarget: images/nodeSetStandardSet.png +# BuildTarget: images/layoutButton.png +# BuildTarget: images/objects.png +# BuildTarget: images/addObjects.png +# BuildTarget: images/replaceObjects.png +# BuildTarget: images/collapsibleArrowRight.png +# BuildTarget: images/timelinePlay.png +# BuildTarget: images/removeObjects.png +# BuildTarget: images/gafferSceneUITranslateTool.png +# BuildTarget: images/gafferSceneUIRotateTool.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "expansion.png" ), os.path.join( "images", "expansion.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "plus.png" ), os.path.join( "images", "plug.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodeSetDriverNodeSelection.png" ), os.path.join( "images", "nodeSetDriverNodeSelection.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodeSetStandardSet.png" ), os.path.join( "images", "nodeSetStandardSet.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "layoutButton.png" ), os.path.join( "images", "layoutButton.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "objects.png" ), os.path.join( "images", "objects.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "addObjects.png" ), os.path.join( "images", "addObjects.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "replaceObjects.png" ), os.path.join( "images", "replaceObjects.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "collapsibleArrowRight.png" ), os.path.join( "images", "collapsibleArrowRight.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "timelinePlay.png" ), os.path.join( "images", "timelinePlay.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "removeObjects.png" ), os.path.join( "images", "removeObjects.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "gafferSceneUITranslateTool.png" ), os.path.join( "images", "gafferSceneUITranslateTool.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "gafferSceneUIRotateTool.png" ), os.path.join( "images", "gafferSceneUIRotateTool.png" ) ) diff --git a/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh b/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh deleted file mode 100755 index fd029ed2e63..00000000000 --- a/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh +++ /dev/null @@ -1,32 +0,0 @@ -#! /bin/bash -# BuildTarget: images/expansion.png -# BuildTarget: images/plus.png -# BuildTarget: images/nodeSetDriverNodeSelection.png -# BuildTarget: images/nodeSetDriverNodeSet.png -# BuildTarget: images/nodeSetStandardSet.png -# BuildTarget: images/layoutButton.png -# BuildTarget: images/objects.png -# BuildTarget: images/addObjects.png -# BuildTarget: images/replaceObjects.png -# BuildTarget: images/collapsibleArrowRight.png -# BuildTarget: images/timelinePlay.png -# BuildTarget: images/removeObjects.png -# BuildTarget: images/gafferSceneUITranslateTool.png -# BuildTarget: images/gafferSceneUIRotateTool.png - -set -e - -cp $GAFFER_ROOT/graphics/expansion.png images -cp $GAFFER_ROOT/graphics/plus.png images -cp $GAFFER_ROOT/graphics/nodeSetDriverNodeSelection.png images -cp $GAFFER_ROOT/graphics/nodeSetDriverNodeSet.png images -cp $GAFFER_ROOT/graphics/nodeSetStandardSet.png images -cp $GAFFER_ROOT/graphics/layoutButton.png images -cp $GAFFER_ROOT/graphics/objects.png images -cp $GAFFER_ROOT/graphics/addObjects.png images -cp $GAFFER_ROOT/graphics/replaceObjects.png images -cp $GAFFER_ROOT/graphics/collapsibleArrowRight.png images -cp $GAFFER_ROOT/graphics/timelinePlay.png images -cp $GAFFER_ROOT/graphics/removeObjects.png images -cp $GAFFER_ROOT/graphics/gafferSceneUITranslateTool.png images -cp $GAFFER_ROOT/graphics/gafferSceneUIRotateTool.png images diff --git a/doc/source/Interface/ControlsAndShortcuts/generate.py b/doc/source/Interface/ControlsAndShortcuts/generate.py new file mode 100644 index 00000000000..53135e2c072 --- /dev/null +++ b/doc/source/Interface/ControlsAndShortcuts/generate.py @@ -0,0 +1,6 @@ +# BuildTarget: images/nodeSetStandardSet.png + +import shutil +import os + +shutil.copyfile(os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodeSetStandardSet.png" ), os.path.join( "images", "nodeSetStandardSet.png" ) ) diff --git a/doc/source/WorkingWithScenes/Camera/generate.py b/doc/source/WorkingWithScenes/Camera/generate.py new file mode 100644 index 00000000000..5acd7eab9af --- /dev/null +++ b/doc/source/WorkingWithScenes/Camera/generate.py @@ -0,0 +1,16 @@ +# BuildTarget: images/gafferSceneUIRotateTool.png +# BuildTarget: images/gafferSceneUITranslateTool.png +# BuildTarget: images/cameraOff.png +# BuildTarget: images/gafferSceneUICameraTool.png +# BuildTarget: images/toggleOff.png +# BuildTarget: images/plus.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gafferSceneUIRotateTool.png" ), os.path.join( "images", "gafferSceneUIRotateTool.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gafferSceneUITranslateTool.png" ), os.path.join( "images", "gafferSceneUITranslateTool.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "cameraOff.png" ), os.path.join( "images", "cameraOff.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gafferSceneUICameraTool.png" ), os.path.join( "images", "gafferSceneUICameraTool.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "toggleOff.png" ), os.path.join( "images", "toggleOff.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plus.png" ), os.path.join( "images", "plus.png" ) ) diff --git a/doc/source/WorkingWithScenes/Camera/generate.sh b/doc/source/WorkingWithScenes/Camera/generate.sh deleted file mode 100755 index 358253ceadc..00000000000 --- a/doc/source/WorkingWithScenes/Camera/generate.sh +++ /dev/null @@ -1,16 +0,0 @@ -#! /bin/bash -# BuildTarget: images/gafferSceneUIRotateTool.png -# BuildTarget: images/gafferSceneUITranslateTool.png -# BuildTarget: images/cameraOff.png -# BuildTarget: images/gafferSceneUICameraTool.png -# BuildTarget: images/toggleOff.png -# BuildTarget: images/plus.png - -set -e - -cp $GAFFER_ROOT/graphics/gafferSceneUIRotateTool.png images -cp $GAFFER_ROOT/graphics/gafferSceneUITranslateTool.png images -cp $GAFFER_ROOT/graphics/cameraOff.png images -cp $GAFFER_ROOT/graphics/gafferSceneUICameraTool.png images -cp $GAFFER_ROOT/graphics/toggleOff.png images -cp $GAFFER_ROOT/graphics/plus.png images diff --git a/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py b/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py new file mode 100644 index 00000000000..e0661831327 --- /dev/null +++ b/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py @@ -0,0 +1,12 @@ +# BuildTarget: images/gear.png +# BuildTarget: images/info.png +# BuildTarget: images/plugAdder.png +# BuildTarget: images/valueChanged.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gear.png" ), os.path.join( "images", "gear.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "info.png" ), os.path.join( "images", "info.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plugAdder.png" ), os.path.join( "images", "plugAdder.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "valueChanged.png" ), os.path.join( "images", "valueChanged.png" ) ) diff --git a/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh b/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh deleted file mode 100755 index 09d3523a4c0..00000000000 --- a/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash -# BuildTarget: images/gear.png -# BuildTarget: images/info.png -# BuildTarget: images/plugAdder.png -# BuildTarget: images/valueChanged.png - -set -e - -cp $GAFFER_ROOT/graphics/gear.png images -cp $GAFFER_ROOT/graphics/info.png images -cp $GAFFER_ROOT/graphics/plugAdder.png images -cp $GAFFER_ROOT/graphics/valueChanged.png images diff --git a/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py b/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py new file mode 100644 index 00000000000..387aa0c22fb --- /dev/null +++ b/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py @@ -0,0 +1,6 @@ +# BuildTarget: images/plus.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plus.png" ), os.path.join( "images", "plus.png" ) ) diff --git a/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh b/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh deleted file mode 100755 index e81010d23d4..00000000000 --- a/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/bash -# BuildTarget: images/plus.png - -set -e - -cp $GAFFER_ROOT/graphics/plus.png images diff --git a/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py new file mode 100644 index 00000000000..75cdf6d0211 --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py @@ -0,0 +1,12 @@ +# BuildTarget: images/plug.png +# BuildTarget: images/values.png +# BuildTarget: images/nodes.png +# BuildTarget: images/objects.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "plug.png" ), os.path.join( "images", "plug.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "values.png" ), os.path.join( "images", "values.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodes.png" ), os.path.join( "images", "nodes.png" ) ) +shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "objects.png" ), os.path.join( "images", "objects.png" ) ) diff --git a/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh deleted file mode 100755 index 50f3cde1f9a..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash -# BuildTarget: images/plug.png -# BuildTarget: images/values.png -# BuildTarget: images/nodes.png -# BuildTarget: images/objects.png - -set -e - -cp $GAFFER_ROOT/graphics/plug.png images/plug.png -cp $GAFFER_ROOT/graphics/values.png images/values.png -cp $GAFFER_ROOT/graphics/nodes.png images/nodes.png -cp $GAFFER_ROOT/graphics/objects.png images/objects.png diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py new file mode 100644 index 00000000000..6399c62d2dc --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py @@ -0,0 +1,10 @@ +# BuildTarget: images/nodes.png +# BuildTarget: images/plus.png +# BuildTarget: images/values.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "nodes.png" ), os.path.join( "images", "nodes.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plug.png" ), os.path.join( "images", "plug.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "values.png" ), os.path.join( "images", "values.png" ) ) diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh deleted file mode 100755 index 12617fe89d0..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /bin/bash -# BuildTarget: images/nodes.png -# BuildTarget: images/plus.png -# BuildTarget: images/values.png - -set -e - -cp $GAFFER_ROOT/graphics/nodes.png images -cp $GAFFER_ROOT/graphics/plug.png images -cp $GAFFER_ROOT/graphics/values.png images diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py new file mode 100644 index 00000000000..04ae5618819 --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py @@ -0,0 +1,7 @@ +# BuildTarget: images/pathChooser.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "pathChooser.png" ), os.path.join( "images", "pathChooser.png" ) ) + diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh deleted file mode 100755 index a1796d92c39..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh +++ /dev/null @@ -1,7 +0,0 @@ -#! /bin/bash -# BuildTarget: images/pathChooser.png - -set -e - -cp $GAFFER_ROOT/graphics/pathChooser.png images - diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py new file mode 100644 index 00000000000..3a8c07c4b87 --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py @@ -0,0 +1,8 @@ +# BuildTarget: images/pathChooser.png +# BuildTarget: images/bookmarks.png + +import shutil +import os + +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "pathChooser.png" ), os.path.join( "images", "pathChooser.png" ) ) +shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "bookmarks.png" ), os.path.join( "images", "bookmarks.png" ) ) diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh deleted file mode 100755 index 0659ca0f6cf..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/bash -# BuildTarget: images/pathChooser.png -# BuildTarget: images/bookmarks.png - -set -e - -cp $GAFFER_ROOT/graphics/pathChooser.png images -cp $GAFFER_ROOT/graphics/bookmarks.png images diff --git a/doc/source/generate.py b/doc/source/generate.py new file mode 100644 index 00000000000..b255448df95 --- /dev/null +++ b/doc/source/generate.py @@ -0,0 +1,8 @@ +# BuildTarget: _static/GafferLogo.svg _static/GafferLogoMini.svg +# BuildTarget: _static/GafferLogoMini.svg + +import shutil +import os + +shutil.copyfile( os.path.join( "..", "..", "resources", "GafferLogo.svg" ), os.path.join( "_static", "GafferLogo.svg" ) ) +shutil.copyfile( os.path.join( "..", "..", "resources", "GafferLogoMini.svg" ), os.path.join( "_static", "GafferLogoMini.svg" ) ) diff --git a/doc/source/generate.sh b/doc/source/generate.sh deleted file mode 100755 index 262cc372f4c..00000000000 --- a/doc/source/generate.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/bash -# BuildTarget: _static/GafferLogo.svg -# BuildTarget: _static/GafferLogoMini.svg - -set -e - -cp ../../resources/GafferLogo.svg _static -cp ../../resources/GafferLogoMini.svg _static From 7f253da248fc46815a0acc40f073516f9f182309 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 17:45:21 -0400 Subject: [PATCH 183/243] Scons : install Gaffer batch file for Windows --- SConstruct | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SConstruct b/SConstruct index 305a765ab6e..b71928676df 100644 --- a/SConstruct +++ b/SConstruct @@ -1154,6 +1154,10 @@ libraries = { } +if env["PLATFORM"] == "win32" : + libraries["scripts"]["additionalFiles"].append( "bin/gaffer.bat" ) + + # Add on OpenGL libraries to definitions - these vary from platform to platform for library in ( "GafferUI", "GafferScene", "GafferSceneUI", "GafferImageUI" ) : if env["PLATFORM"] == "darwin" : From 3483b88d29e8e5341b262392d004bfa41bf0441a Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 7 Aug 2019 17:45:47 -0400 Subject: [PATCH 184/243] Scons : build documentation on Windows --- SConstruct | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/SConstruct b/SConstruct index b71928676df..7cfa93de1ec 100644 --- a/SConstruct +++ b/SConstruct @@ -1581,6 +1581,8 @@ if commandEnv.subst( "$LOCATE_DEPENDENCY_RESOURCESPATH" ) : # Documentation ######################################################################################################### +gafferCmd = "gaffer" if env["PLATFORM"] != "win32" else "gaffer.bat" + def generateDocs( target, source, env ) : # Run a script in the document source tree. These are used to @@ -1592,11 +1594,11 @@ def generateDocs( target, source, env ) : ext = os.path.splitext( localFile )[1] command = [] if localFile == "screengrab.py" : - command = [ "gaffer", "screengrab", "-commandFile", localFile ] + command = [ gafferCmd, "screengrab", "-commandFile", localFile ] elif ext == ".py" : - command = [ "gaffer", "env", "python", localFile ] + command = [ gafferCmd, "env", "python", localFile ] elif ext == ".sh" : - command = [ "gaffer", "env", "./" + localFile ] + command = [ gafferCmd, "env", "./" + localFile ] if command : sys.stdout.write( "Running {0}\n".format( os.path.join( root, localFile ) ) ) subprocess.check_call( command, cwd = root, env = env["ENV"] ) @@ -1647,7 +1649,11 @@ def buildDocs( target, source, env ) : subprocess.check_call( [ +<<<<<<< HEAD "python", +======= + gafferCmd, "env", "python", +>>>>>>> 5903a6d88... Scons : build documentation on Windows findOnPath( env.subst( "$SPHINX" ), env["ENV"]["PATH"] ), "-b", "html", str( source[0] ), os.path.dirname( str( target[0] ) ) @@ -1674,19 +1680,23 @@ if haveSphinx and haveInkscape : # Ensure that Arnold, Appleseed and 3delight are available in the documentation # environment. - libraryPathEnvVar = "DYLD_LIBRARY_PATH" if docEnv["PLATFORM"]=="darwin" else "LD_LIBRARY_PATH" + libraryPathEnvVars = { + "darwin" : "DYLD_LIBRARY_PATH", + "win32" : "PATH" + } + libraryPathEnvVar = libraryPathEnvVars.get( docEnv["PLATFORM"], "LD_LIBRARY_PATH" ) if docCommandEnv.subst( "$ARNOLD_ROOT" ) : - docCommandEnv["ENV"]["PATH"] += ":" + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) - docCommandEnv["ENV"]["PYTHONPATH"] += ":" + docCommandEnv.subst( "$ARNOLD_ROOT/python" ) - docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + ":" + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) + docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) + docCommandEnv["ENV"]["PYTHONPATH"] += os.path.pathsep + docCommandEnv.subst( "$ARNOLD_ROOT/python" ) + docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) if docCommandEnv.subst( "$APPLESEED_ROOT" ) and docCommandEnv["APPLESEED_ROOT"] != "$BUILD_DIR/appleseed" : - docCommandEnv["ENV"]["PATH"] += ":" + docCommandEnv.subst( "$APPLESEED_ROOT/bin" ) - docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + ":" + docCommandEnv.subst( "$APPLESEED_ROOT/lib" ) + docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( "$APPLESEED_ROOT/bin" ) + docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( "$APPLESEED_ROOT/lib" ) docCommandEnv["ENV"]["OSLHOME"] = docCommandEnv.subst( "$OSLHOME" ) docCommandEnv["ENV"]["OSL_SHADER_PATHS"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed" ) - docCommandEnv["ENV"]["APPLESEED_SEARCHPATH"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed:$LOCATE_DEPENDENCY_APPLESEED_SEARCHPATH" ) + docCommandEnv["ENV"]["APPLESEED_SEARCHPATH"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed" + os.path.pathsep + ":$LOCATE_DEPENDENCY_APPLESEED_SEARCHPATH" ) # Docs graphics generation docGraphicsCommands = graphicsCommands( docEnv, "resources/docGraphics.svg", "$BUILD_DIR/doc/gaffer/graphics" ) From 19c9e1aed0d49ee158aea4e277d5e22fa9bab8f4 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 8 Aug 2019 18:18:54 -0400 Subject: [PATCH 185/243] Scons : set optimizations in RelWithDebugInfo build - there was a problem with visibility of the IECoreGL::PerspectiveCamera since it only lives in an include file with no corresponding .cpp file. I'm not entirely sure why this works, maybe the optimization does some form of inlining? --- SConstruct | 1 + 1 file changed, 1 insertion(+) diff --git a/SConstruct b/SConstruct index 7cfa93de1ec..1e0470a8dce 100644 --- a/SConstruct +++ b/SConstruct @@ -567,6 +567,7 @@ else: "-bigobj", "-DBOOST_DISABLE_ASSERTS", "-Zi", + "-Ox", ], LINKFLAGS = [ From c577edd640ab91d65066b01a80c942d074230820 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 9 Aug 2019 15:48:00 -0400 Subject: [PATCH 186/243] Appleseed : cross platform search path separator --- python/GafferAppleseedUI/ShaderMenu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/GafferAppleseedUI/ShaderMenu.py b/python/GafferAppleseedUI/ShaderMenu.py index 4da85efbee3..6ce93d3fc16 100644 --- a/python/GafferAppleseedUI/ShaderMenu.py +++ b/python/GafferAppleseedUI/ShaderMenu.py @@ -62,7 +62,7 @@ def appendShaders( menuDefinition ) : q = asr.ShaderQuery() - for path in os.environ["APPLESEED_SEARCHPATH"].split( ":" ) : + for path in os.environ["APPLESEED_SEARCHPATH"].split( os.path.pathsep ) : for shader in glob.glob( os.path.join( path, "*.oso" ) ) : shaderFilename = os.path.basename( shader ) From facfe73cad3c5d2d338a8fb8f6f2ac51c641d11f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 9 Aug 2019 15:58:37 -0400 Subject: [PATCH 187/243] Shaders : cross-platform search path separator --- startup/gui/menus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup/gui/menus.py b/startup/gui/menus.py index 20bccdb0290..12084ae9f89 100644 --- a/startup/gui/menus.py +++ b/startup/gui/menus.py @@ -450,7 +450,7 @@ def __shaderNodeCreator( nodeName, shaderName ) : GafferSceneUI.ShaderUI.appendShaders( nodeMenu.definition(), "/OSL/Shader", - os.environ["OSL_SHADER_PATHS"].split( ":" ), + os.environ["OSL_SHADER_PATHS"].split( os.path.pathsep ), [ "oso" ], __shaderNodeCreator, matchExpression = re.compile( shader_regex ), From 6450b6a67451f859a862ea7c431a4a045e274d7a Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 15 Aug 2019 16:54:48 -0400 Subject: [PATCH 188/243] Scons : fix Windows command environment PATH --- SConstruct | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/SConstruct b/SConstruct index 1e0470a8dce..bd14198b48b 100644 --- a/SConstruct +++ b/SConstruct @@ -684,14 +684,12 @@ def split( stringOrList, separator = os.path.pathsep ) : return stringOrList.split( separator ) commandEnv = env.Clone() -commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/bin" + os.path.pathsep ) + commandEnv["ENV"]["PATH"] -if env["PLATFORM"] == "win32" : - commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/lib" + os.path.pathsep ) + commandEnv["ENV"]["PATH"] +commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.join( "$BUILD_DIR", "bin" ) + os.path.pathsep ) + commandEnv["ENV"]["PATH"] if commandEnv["PLATFORM"]=="darwin" : commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) elif commandEnv["PLATFORM"] == "win32" : - commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv[ "LOCATE_DEPENDENCY_LIBPATH" ] ) ) ) + commandEnv["ENV"]["PATH"] + commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv[ "LOCATE_DEPENDENCY_LIBPATH" ] ) ) ) + os.path.pathsep + commandEnv["ENV"]["PATH"] else: commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) From ebcf128e23f45deabadd47f3af971ebe37ddb702 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 15 Aug 2019 16:55:09 -0400 Subject: [PATCH 189/243] Scons : Windows needs the full path to oslc --- SConstruct | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct index bd14198b48b..10ad19ae61f 100644 --- a/SConstruct +++ b/SConstruct @@ -1334,8 +1334,7 @@ for libraryName, libraryDef in libraries.items() : # osl shaders def buildOSL( target, source, env ) : - - subprocess.check_call( [ "oslc", "-I./shaders", "-o", str( target[0] ), str( source[0] ) ], env = env["ENV"] ) + subprocess.check_call( [ env.subst( "$BUILD_DIR/bin/oslc" ), "-I./shaders", "-o", str( target[0] ), str( source[0] ) ], env = env["ENV"] ) for oslShader in libraryDef.get( "oslShaders", [] ) : env.Alias( "build", oslShader ) From 65f976bd14e79b2be2245282b1864dbbf409eeee Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 28 Aug 2019 16:25:41 -0400 Subject: [PATCH 190/243] Gaffer.bat : add "lib" to path for GAFFER_EXTENSION_PATHS --- bin/gaffer.bat | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 8c6e107fcd8..162254d3c06 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -71,6 +71,7 @@ if "%ARNOLD_ROOT%" NEQ "" ( rem Set up 3rd party extensions for %%A in (%GAFFER_EXTENSION_PATHS%) do ( call :appendToPath "%%A\bin" PATH + call :appendToPath "%%A\lib" PATH call :appendToPath "%%A\python" PYTHONPATH call :appendToPath "%%A\apps" GAFFER_APP_PATHS call :appendToPath "%%A\graphics" GAFFERUI_IMAGE_PATHS From 697428d3d66dd08ed4ce5d31785428b962b0fbaa Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 8 Nov 2019 09:47:48 -0500 Subject: [PATCH 191/243] NameSwitch : MSVC needs std::numeric_limits --- src/Gaffer/NameSwitch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gaffer/NameSwitch.cpp b/src/Gaffer/NameSwitch.cpp index df7a85a8759..a48ea8b9efb 100644 --- a/src/Gaffer/NameSwitch.cpp +++ b/src/Gaffer/NameSwitch.cpp @@ -81,7 +81,7 @@ void NameSwitch::setup( const Plug *plug ) Plug::In, element, 2, - Imath::limits::max(), + std::numeric_limits::max(), Plug::Default, /* resizeWhenInputsChange = */ false ); From bf40612e568e7483993149c69ac9c925480fc342 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 25 Dec 2019 11:57:20 -0500 Subject: [PATCH 192/243] Spreadsheet : add exports to internal classes --- include/Gaffer/Spreadsheet.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/Gaffer/Spreadsheet.h b/include/Gaffer/Spreadsheet.h index f76519d9e72..5489f73e1f3 100644 --- a/include/Gaffer/Spreadsheet.h +++ b/include/Gaffer/Spreadsheet.h @@ -70,7 +70,7 @@ class GAFFER_API Spreadsheet : public ComputeNode /// /// > Note : It is strongly recommended that the child RowPlugs are /// > accessed via their numeric indices and never via their names. - class RowsPlug : public ValuePlug + class GAFFER_API RowsPlug : public ValuePlug { public : @@ -143,7 +143,7 @@ class GAFFER_API Spreadsheet : public ComputeNode /// Defines a single row of the spreadsheet. Access using /// `RowPlug::Range( *rowsPlug() )` or via `rowsPlug()->getChild()`. - class RowPlug : public ValuePlug + class GAFFER_API RowPlug : public ValuePlug { public : @@ -171,7 +171,7 @@ class GAFFER_API Spreadsheet : public ComputeNode /// Defines a single cell in the spreadsheet. Access using /// `CellPlug::Range( *rowPlug->cellsPlug() )` or via /// `rowPlug->cellsPlug()->getChild()`. - class CellPlug : public ValuePlug + class GAFFER_API CellPlug : public ValuePlug { public : From 7e26e784cbc20e2cd06bd1efa6128346c79d2335 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 13 Jan 2020 21:07:43 -0500 Subject: [PATCH 193/243] Catalogue : force substitutions - override Process::current() check in FileSystemPathPlug --- src/GafferImage/Catalogue.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/GafferImage/Catalogue.cpp b/src/GafferImage/Catalogue.cpp index 2e236094d37..2972b61ab4a 100644 --- a/src/GafferImage/Catalogue.cpp +++ b/src/GafferImage/Catalogue.cpp @@ -898,10 +898,13 @@ std::string Catalogue::generateFileName( const Image *image ) const std::string Catalogue::generateFileName( const ImagePlug *image ) const { + // Force substitutions because Process::current() is false + // and FileSystemPathPlug won't do substitutions by default string directory = directoryPlug()->getValue(); + if( const ScriptNode *script = ancestor() ) { - directory = script->context()->substitute( directory ); + directory = directoryPlug()->getValue(nullptr, script->context(), true); } else if( IECore::StringAlgo::hasSubstitutions( directory ) ) { From 62c9e66f62140800570850baea4dcb08e2523a2f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 13 Jan 2020 21:04:18 -0500 Subject: [PATCH 194/243] FileSystemPathPlug : convert Render super class --- include/GafferScene/Render.h | 5 +++-- src/GafferScene/Render.cpp | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/GafferScene/Render.h b/include/GafferScene/Render.h index b0f586a6e4d..0107ea4d06b 100644 --- a/include/GafferScene/Render.h +++ b/include/GafferScene/Render.h @@ -44,6 +44,7 @@ #include "Gaffer/NumericPlug.h" #include "Gaffer/StringPlug.h" +#include "Gaffer/FileSystemPathPlug.h" namespace GafferScene { @@ -75,8 +76,8 @@ class GAFFERSCENE_API Render : public GafferDispatch::TaskNode Gaffer::IntPlug *modePlug(); const Gaffer::IntPlug *modePlug() const; - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; + Gaffer::FileSystemPathPlug *fileNamePlug(); + const Gaffer::FileSystemPathPlug *fileNamePlug() const; ScenePlug *outPlug(); const ScenePlug *outPlug() const; diff --git a/src/GafferScene/Render.cpp b/src/GafferScene/Render.cpp index 19a41ade755..92e661a5d5a 100644 --- a/src/GafferScene/Render.cpp +++ b/src/GafferScene/Render.cpp @@ -108,7 +108,7 @@ Render::Render( const IECore::InternedString &rendererType, const std::string &n addChild( new ScenePlug( "in" ) ); addChild( new StringPlug( rendererType.string().empty() ? "renderer" : "__renderer", Plug::In, rendererType.string() ) ); addChild( new IntPlug( "mode", Plug::In, RenderMode, RenderMode, SceneDescriptionMode ) ); - addChild( new StringPlug( "fileName" ) ); + addChild( new FileSystemPathPlug( "fileName" ) ); addChild( new ScenePlug( "out", Plug::Out, Plug::Default & ~Plug::Serialisable ) ); addChild( new ScenePlug( "__adaptedIn", Plug::In, Plug::Default & ~Plug::Serialisable ) ); @@ -154,14 +154,14 @@ const Gaffer::IntPlug *Render::modePlug() const return getChild( g_firstPlugIndex + 2 ); } -Gaffer::StringPlug *Render::fileNamePlug() +Gaffer::FileSystemPathPlug *Render::fileNamePlug() { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } -const Gaffer::StringPlug *Render::fileNamePlug() const +const Gaffer::FileSystemPathPlug *Render::fileNamePlug() const { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } ScenePlug *Render::outPlug() From 6f5be511c13e14d05248ae7732112e975b7b14ec Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 18 Apr 2020 12:34:51 -0400 Subject: [PATCH 195/243] gaffer.bat : reduce command line clutter --- bin/gaffer.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 162254d3c06..dd88a9ab33e 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -1,3 +1,5 @@ +@echo off + setlocal EnableDelayedExpansion set GAFFER_ROOT=%~dp0%.. @@ -81,11 +83,10 @@ for %%A in (%GAFFER_EXTENSION_PATHS%) do ( call :prependToPath "%%A\startup" GAFFER_STARTUP_PATHS ) -@echo on %GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/gaffer.py %* if %ERRORLEVEL% NEQ 0 ( echo "Error(s) running Gaffer" - exit /b %ERRORLEVEL% + exit /B %ERRORLEVEL% ) ENDLOCAL @@ -93,7 +94,6 @@ exit /B 0 :prependToPath set "%~2=%~1;!%~2!" - echo !%~2! exit /B 0 :appendToPath From 53b1e4cea572084aa56696d932d12bff2fced952 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:00:27 -0400 Subject: [PATCH 196/243] gaffer.bat : support spaces in path, update to new private gaffer.py notation --- bin/gaffer.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index dd88a9ab33e..186b6c1e99b 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -83,7 +83,7 @@ for %%A in (%GAFFER_EXTENSION_PATHS%) do ( call :prependToPath "%%A\startup" GAFFER_STARTUP_PATHS ) -%GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/gaffer.py %* +"%GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/__gaffer.py %*" if %ERRORLEVEL% NEQ 0 ( echo "Error(s) running Gaffer" exit /B %ERRORLEVEL% From a9ffbb22dd0554bd6fde04333484cb9ee83ed286 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:01:18 -0400 Subject: [PATCH 197/243] FileSystemPathPlug : update to new substitution scheme --- include/Gaffer/FileSystemPathPlug.h | 4 +++- src/Gaffer/FileSystemPathPlug.cpp | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/Gaffer/FileSystemPathPlug.h b/include/Gaffer/FileSystemPathPlug.h index 0d42297acd3..32f67485fd6 100644 --- a/include/Gaffer/FileSystemPathPlug.h +++ b/include/Gaffer/FileSystemPathPlug.h @@ -41,6 +41,8 @@ #include "Gaffer/Context.h" #include "Gaffer/StringPlug.h" +#include "IECore/StringAlgo.h" + namespace Gaffer { @@ -72,7 +74,7 @@ class GAFFER_API FileSystemPathPlug : public StringPlug Direction direction=In, const std::string &defaultValue = "", unsigned flags = Default, - unsigned substitutions = Context::AllSubstitutions + unsigned substitutions = IECore::StringAlgo::AllSubstitutions ); ~FileSystemPathPlug() override; diff --git a/src/Gaffer/FileSystemPathPlug.cpp b/src/Gaffer/FileSystemPathPlug.cpp index cdda25ec303..bfba68d6b62 100644 --- a/src/Gaffer/FileSystemPathPlug.cpp +++ b/src/Gaffer/FileSystemPathPlug.cpp @@ -130,7 +130,7 @@ std::string FileSystemPathPlug::getValue( const IECore::MurmurHash *precomputedH (substitutions() && direction() == In && Process::current() && - Context::hasSubstitutions(s->readable())); + IECore::StringAlgo::hasSubstitutions(s->readable())); const std::string substituted_path = performSubstitutions ? context->substitute(s->readable(), substitutions()) : s->readable(); return Gaffer::FileSystemPath(substituted_path).nativeString(); } @@ -175,7 +175,7 @@ IECore::MurmurHash FileSystemPathPlug::hash() const throw IECore::Exception("StringPlug::getObjectValue() didn't return StringData - is the hash being computed correctly?"); } - if (Context::hasSubstitutions(s->readable())) + if (IECore::StringAlgo::hasSubstitutions(s->readable())) { IECore::MurmurHash result; result.append(Context::current()->substitute(s->readable(), substitutions())); From c3143f85f2d3bbc32ddc57873eee7d2760928438 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:10:38 -0400 Subject: [PATCH 198/243] Use std::numeric_limits for size_t - Windows defines size_t as unsigned __int64 which OpenEXR does not have a template specialization for --- include/GafferScene/Deformer.h | 2 +- include/GafferScene/ObjectProcessor.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/GafferScene/Deformer.h b/include/GafferScene/Deformer.h index 4f733dd7010..f38396ac72e 100644 --- a/include/GafferScene/Deformer.h +++ b/include/GafferScene/Deformer.h @@ -70,7 +70,7 @@ class GAFFERSCENE_API Deformer : public ObjectProcessor /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - Deformer( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); + Deformer( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); /// Used to determine whether adjusted bounds need to be propagated up to /// all ancestor locations. Default implementation checks the value of `adjustBoundsPlug()` diff --git a/include/GafferScene/ObjectProcessor.h b/include/GafferScene/ObjectProcessor.h index fea4ec68eee..72d57b1767f 100644 --- a/include/GafferScene/ObjectProcessor.h +++ b/include/GafferScene/ObjectProcessor.h @@ -66,7 +66,7 @@ class GAFFERSCENE_API ObjectProcessor : public FilteredSceneProcessor /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - ObjectProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); + ObjectProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); /// Must be implemented by derived classes to return true if `input` is used /// by `computeProcessedObject()`. Overrides must start by calling the base From 0f83737fac5493b09cf5d86461ff17c2f7e60196 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:11:58 -0400 Subject: [PATCH 199/243] Windows : add / update symbol exports --- include/GafferArnold/ArnoldColorManager.h | 2 +- include/GafferSceneUI/TransformTool.h | 2 +- include/GafferVDB/SphereLevelSet.h | 4 +++- src/GafferArnoldUI/ArnoldLightVisualiser.cpp | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/GafferArnold/ArnoldColorManager.h b/include/GafferArnold/ArnoldColorManager.h index 7401bbf7f1d..3ee221512fe 100644 --- a/include/GafferArnold/ArnoldColorManager.h +++ b/include/GafferArnold/ArnoldColorManager.h @@ -50,7 +50,7 @@ namespace GafferArnold class ArnoldShader; -class GAFFERSCENE_API ArnoldColorManager : public GafferScene::GlobalsProcessor +class GAFFERARNOLD_API ArnoldColorManager : public GafferScene::GlobalsProcessor { public : diff --git a/include/GafferSceneUI/TransformTool.h b/include/GafferSceneUI/TransformTool.h index 9c00db9c831..ab534fc2a4a 100644 --- a/include/GafferSceneUI/TransformTool.h +++ b/include/GafferSceneUI/TransformTool.h @@ -73,7 +73,7 @@ class GAFFERSCENEUI_API TransformTool : public GafferSceneUI::SelectionTool Gaffer::FloatPlug *sizePlug(); const Gaffer::FloatPlug *sizePlug() const; - struct Selection + struct GAFFERSCENEUI_API Selection { // Constructs an empty selection. diff --git a/include/GafferVDB/SphereLevelSet.h b/include/GafferVDB/SphereLevelSet.h index d8821112548..81d73f8f06c 100644 --- a/include/GafferVDB/SphereLevelSet.h +++ b/include/GafferVDB/SphereLevelSet.h @@ -37,6 +37,8 @@ #ifndef GAFFERSCENE_SPHERELEVELSET_H #define GAFFERSCENE_SPHERELEVELSET_H +#include "GafferVDB/Export.h" + #include "GafferScene/ObjectSource.h" #include "Gaffer/CompoundNumericPlug.h" @@ -46,7 +48,7 @@ namespace GafferVDB { -class GAFFERSCENE_API SphereLevelSet : public GafferScene::ObjectSource +class GAFFERVDB_API SphereLevelSet : public GafferScene::ObjectSource { public : diff --git a/src/GafferArnoldUI/ArnoldLightVisualiser.cpp b/src/GafferArnoldUI/ArnoldLightVisualiser.cpp index 90cb5d913a5..594845e9675 100644 --- a/src/GafferArnoldUI/ArnoldLightVisualiser.cpp +++ b/src/GafferArnoldUI/ArnoldLightVisualiser.cpp @@ -179,7 +179,7 @@ IECoreGL::RenderablePtr iesVisualisation( const std::string &filename ) // ArnoldLightVisualiser implementation ////////////////////////////////////////////////////////////////////////// -class GAFFERSCENEUI_API ArnoldLightVisualiser : public GafferSceneUI::StandardLightVisualiser +class GAFFERARNOLDUI_API ArnoldLightVisualiser : public GafferSceneUI::StandardLightVisualiser { public : From 43fc73db495fc0765dcd439b2b75d6937d673bb9 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:12:38 -0400 Subject: [PATCH 200/243] String substitutions : rebase me onto Context fix --- src/GafferImage/OpenImageIOReader.cpp | 2 +- src/GafferModule/FileSystemPathPlugBinding.cpp | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/GafferImage/OpenImageIOReader.cpp b/src/GafferImage/OpenImageIOReader.cpp index afbef914216..7d6bdafa6d2 100644 --- a/src/GafferImage/OpenImageIOReader.cpp +++ b/src/GafferImage/OpenImageIOReader.cpp @@ -701,7 +701,7 @@ FilePtr retrieveFile( std::string &fileName, OpenImageIOReader::MissingFrameMode } // All other substitutions are handled in the FileSystemPathPlug - const std::string resolvedFileName = context->substitute( fileName, Gaffer::Context::Substitutions::FrameSubstitutions ); + const std::string resolvedFileName = context->substitute( fileName, IECore::StringAlgo::Substitutions::FrameSubstitutions ); FileHandleCache *cache = fileCache(); CacheEntry cacheEntry = cache->get( resolvedFileName ); diff --git a/src/GafferModule/FileSystemPathPlugBinding.cpp b/src/GafferModule/FileSystemPathPlugBinding.cpp index 843631d284f..d3016551dcb 100644 --- a/src/GafferModule/FileSystemPathPlugBinding.cpp +++ b/src/GafferModule/FileSystemPathPlugBinding.cpp @@ -42,6 +42,8 @@ #include "IECorePython/ScopedGILRelease.h" +#include "IECore/StringAlgo.h" + using namespace boost::python; using namespace Gaffer; using namespace GafferBindings; @@ -67,14 +69,14 @@ std::string getValue( const FileSystemPathPlug *plug, const IECore::MurmurHash * std::string substitutionsRepr( unsigned substitutions ) { - static const Context::Substitutions values[] = { Context::FrameSubstitutions, Context::VariableSubstitutions, Context::EscapeSubstitutions, Context::TildeSubstitutions, Context::NoSubstitutions }; + static const IECore::StringAlgo::Substitutions values[] = { IECore::StringAlgo::FrameSubstitutions, IECore::StringAlgo::VariableSubstitutions, IECore::StringAlgo::EscapeSubstitutions, IECore::StringAlgo::TildeSubstitutions,IECore::StringAlgo::NoSubstitutions }; static const char *names[] = { "FrameSubstitutions", "VariableSubstitutions", "EscapeSubstitutions", "TildeSubstitutions", nullptr }; - if( substitutions == Context::AllSubstitutions ) + if( substitutions == IECore::StringAlgo::AllSubstitutions ) { return "Gaffer.Context.Substitutions.AllSubstitutions"; } - else if( substitutions == Context::NoSubstitutions ) + else if( substitutions == IECore::StringAlgo::NoSubstitutions ) { return "Gaffer.Context.Substitutions.NoSubstitutions"; } @@ -98,7 +100,7 @@ std::string substitutionsRepr( unsigned substitutions ) std::string serialisationRepr( const Gaffer::FileSystemPathPlug *plug, const Serialisation *serialisation ) { std::string extraArguments; - if( plug->substitutions() != Context::AllSubstitutions ) + if( plug->substitutions() != IECore::StringAlgo::AllSubstitutions ) { extraArguments = "substitutions = " + substitutionsRepr( plug->substitutions() ); } @@ -135,7 +137,7 @@ void GafferModule::bindFileSystemPathPlug() boost::python::arg_( "direction" )=Gaffer::Plug::In, boost::python::arg_( "defaultValue" )="", boost::python::arg_( "flags" )=Gaffer::Plug::Default, - boost::python::arg_( "substitutions" )=Gaffer::Context::AllSubstitutions + boost::python::arg_( "substitutions" )=IECore::StringAlgo::AllSubstitutions ) ) ) From 7ab6d4c0dba9105e74a2d7bdf4a3d92961df84f0 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:13:01 -0400 Subject: [PATCH 201/243] limits : rebase me onto commit fixing limits --- include/GafferImage/FlatImageProcessor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/GafferImage/FlatImageProcessor.h b/include/GafferImage/FlatImageProcessor.h index eae0948746d..076cb7cf99e 100644 --- a/include/GafferImage/FlatImageProcessor.h +++ b/include/GafferImage/FlatImageProcessor.h @@ -58,7 +58,7 @@ class GAFFERIMAGE_API FlatImageProcessor : public ImageProcessor /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - FlatImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); + FlatImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); ~FlatImageProcessor() override; GAFFER_NODE_DECLARE_TYPE( GafferImage::FlatImageProcessor, FlatImageProcessorTypeId, ImageProcessor ); From f0945baefcea03d8f79ce0f38daf0d5e7ec4e918 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:13:27 -0400 Subject: [PATCH 202/243] GafferArnoldUI : fix broken rebase --- src/GafferArnoldUI/ArnoldLightVisualiser.cpp | 6 ++++-- src/GafferArnoldUI/BarndoorVisualiser.cpp | 3 +-- src/GafferArnoldUI/DecayVisualiser.cpp | 4 ++-- src/GafferArnoldUI/GoboVisualiser.cpp | 10 +++++++--- src/GafferArnoldUI/LightBlockerVisualiser.cpp | 8 ++------ 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/GafferArnoldUI/ArnoldLightVisualiser.cpp b/src/GafferArnoldUI/ArnoldLightVisualiser.cpp index 594845e9675..9eb7a2e412f 100644 --- a/src/GafferArnoldUI/ArnoldLightVisualiser.cpp +++ b/src/GafferArnoldUI/ArnoldLightVisualiser.cpp @@ -34,6 +34,8 @@ // ////////////////////////////////////////////////////////////////////////// +#include "GafferArnoldUI/Export.h" + #include "GafferArnoldUI/Private/VisualiserAlgo.h" #include "GafferSceneUI/StandardLightVisualiser.h" @@ -66,7 +68,7 @@ using namespace GafferArnoldUI::Private; // Arnold shaders are present in the network, a fallback of the last image // node found will be used instead:. -namespace +namespace GafferArnoldUI { ////////////////////////////////////////////////////////////////////////// @@ -291,5 +293,5 @@ IECore::DataPtr ArnoldLightVisualiser::surfaceTexture( const IECoreScene::Shader return surfaceTexture; } -} +} // namespace GafferArnoldUI diff --git a/src/GafferArnoldUI/BarndoorVisualiser.cpp b/src/GafferArnoldUI/BarndoorVisualiser.cpp index 276735b97a4..16d1f79fa32 100644 --- a/src/GafferArnoldUI/BarndoorVisualiser.cpp +++ b/src/GafferArnoldUI/BarndoorVisualiser.cpp @@ -34,9 +34,8 @@ // ////////////////////////////////////////////////////////////////////////// -#include "Export.h" +#include "GafferArnoldUI/Export.h" -#include "GafferSceneUI/LightFilterVisualiser.h" #include "GafferSceneUI/StandardLightVisualiser.h" #include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" diff --git a/src/GafferArnoldUI/DecayVisualiser.cpp b/src/GafferArnoldUI/DecayVisualiser.cpp index 9832c61fb86..3a66743821f 100644 --- a/src/GafferArnoldUI/DecayVisualiser.cpp +++ b/src/GafferArnoldUI/DecayVisualiser.cpp @@ -34,9 +34,9 @@ // ////////////////////////////////////////////////////////////////////////// -#include "Export.h" +#include "GafferArnoldUI/Export.h" -#include "GafferSceneUI/LightFilterVisualiser.h" +#include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" #include "IECoreGL/Group.h" #include "IECoreGL/Primitive.h" diff --git a/src/GafferArnoldUI/GoboVisualiser.cpp b/src/GafferArnoldUI/GoboVisualiser.cpp index 3d810123e15..5f12ac19284 100644 --- a/src/GafferArnoldUI/GoboVisualiser.cpp +++ b/src/GafferArnoldUI/GoboVisualiser.cpp @@ -34,9 +34,11 @@ // ////////////////////////////////////////////////////////////////////////// -#include "Export.h" +#include "GafferArnoldUI/Export.h" -#include "GafferOSL/ShadingEngine.h" +#include "GafferArnoldUI/Private/VisualiserAlgo.h" + +#include "GafferOSL/ShadingEngineAlgo.h" #include "GafferSceneUI/StandardLightVisualiser.h" @@ -176,6 +178,7 @@ const char *texturedFragSource() ; } +<<<<<<< HEAD <<<<<<< HEAD const char *constantFragSource() { @@ -193,6 +196,8 @@ const char *constantFragSource() >>>>>>> abc85190d... GafferArnoldUI : add symbol exports class GoboVisualiser final : public LightFilterVisualiser ======= +======= +>>>>>>> a5d93d68e... GafferArnoldUI : fix broken rebase // OSLTextureEvaluation CompoundDataPtr evalOSLTexture( const IECoreScene::ShaderNetwork *shaderNetwork, int resolution ) @@ -277,7 +282,6 @@ CompoundDataPtr evalOSLTexture( const IECoreScene::ShaderNetwork *shaderNetwork, } class GAFFERARNOLDUI_API GoboVisualiser final : public LightFilterVisualiser ->>>>>>> GafferArnoldUI : add symbol exports { public : diff --git a/src/GafferArnoldUI/LightBlockerVisualiser.cpp b/src/GafferArnoldUI/LightBlockerVisualiser.cpp index 9ae40f39695..e2fc1ea7e71 100644 --- a/src/GafferArnoldUI/LightBlockerVisualiser.cpp +++ b/src/GafferArnoldUI/LightBlockerVisualiser.cpp @@ -34,9 +34,9 @@ // ////////////////////////////////////////////////////////////////////////// -#include "Export.h" +#include "GafferArnoldUI/Export.h" -#include "GafferSceneUI/LightFilterVisualiser.h" +#include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" #include "Gaffer/Metadata.h" @@ -175,11 +175,7 @@ void setFalloffGroupSettings( IECoreGL::Group *group, const IECore::CompoundData // LightBlockerVisualiser implementation. ////////////////////////////////////////////////////////////////////////// -<<<<<<< HEAD -class LightBlockerVisualiser : public LightFilterVisualiser -======= class GAFFERARNOLDUI_API LightBlockerVisualiser : public LightFilterVisualiser ->>>>>>> GafferArnoldUI : add symbol exports { public : From 001d3913bde421194d85442550e1e6012bf6bad5 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 18 May 2020 18:15:41 -0400 Subject: [PATCH 203/243] GafferArnoldUI : link to Arnold lib - needed to locate ai.lib on Windows --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 10ad19ae61f..fd49561cb2c 100644 --- a/SConstruct +++ b/SConstruct @@ -1000,7 +1000,7 @@ libraries = { "GafferArnoldUI" : { "envAppends" : { "CPPPATH" : [ "$ARNOLD_ROOT/include" ], - "LIBPATH" : [ "$ARNOLD_ROOT/bin" ], + "LIBPATH" : [ "$ARNOLD_ROOT/bin", "$ARNOLD_ROOT/lib" ], "LIBS" : [ "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreGL$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX", "Gaffer", "GafferScene", "GafferOSL", "GafferSceneUI", "ai" ], }, "pythonEnvAppends" : { From cb665426ef7de5de5a9d00241df48540d2ef97f5 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 20 May 2020 11:30:58 -0400 Subject: [PATCH 204/243] gaffer.bat : allow spaces in Gaffer root directory --- bin/gaffer.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 186b6c1e99b..d11efa5cb2d 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -45,7 +45,7 @@ call :prependToPath "%GAFFER_ROOT%\bin" PATH rem Appleseed if "%APPLESEED%" == "" ( - if EXIST %GAFFER_ROOT%\appleseed ( + if EXIST "%GAFFER_ROOT%"\appleseed ( set APPLESEED=%GAFFER_ROOT%\appleseed ) ) @@ -83,7 +83,7 @@ for %%A in (%GAFFER_EXTENSION_PATHS%) do ( call :prependToPath "%%A\startup" GAFFER_STARTUP_PATHS ) -"%GAFFER_ROOT%\bin\python.exe %GAFFER_ROOT%/bin/__gaffer.py %*" +"%GAFFER_ROOT%"\bin\python.exe "%GAFFER_ROOT%"/bin/__gaffer.py %* if %ERRORLEVEL% NEQ 0 ( echo "Error(s) running Gaffer" exit /B %ERRORLEVEL% From f9b1cbf72ad62f971e589ee7eb3fef361d500c53 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 20 May 2020 11:35:46 -0400 Subject: [PATCH 205/243] SConstruct : add option for Boost Python library suffix - Boost on Windows adds the Python version to the boost_python library --- SConstruct | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SConstruct b/SConstruct index fd49561cb2c..ec48c3e795c 100644 --- a/SConstruct +++ b/SConstruct @@ -235,6 +235,12 @@ options.Add( "", ) +options.Add( + "BOOST_PYTHON_SUFFIX", + "The suffix used when locating the boost libraries.", + "", +) + options.Add( "GLEW_LIB_SUFFIX", "The suffix used when locating the glew libraries.", From d1e6228ec90412792108c9b8406db4f623fb4b1f Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 16 Oct 2020 17:55:02 -0400 Subject: [PATCH 206/243] SConstruct : use GafferHQ method for getting Python version and system includes --- SConstruct | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/SConstruct b/SConstruct index ec48c3e795c..e2228569e11 100644 --- a/SConstruct +++ b/SConstruct @@ -235,12 +235,6 @@ options.Add( "", ) -options.Add( - "BOOST_PYTHON_SUFFIX", - "The suffix used when locating the boost libraries.", - "", -) - options.Add( "GLEW_LIB_SUFFIX", "The suffix used when locating the glew libraries.", @@ -409,15 +403,11 @@ def formatSystemIncludes( includeList ) : formattedList += [ "-isystem", i ] return formattedList -systemIncludesOption = env["LOCATE_DEPENDENCY_SYSTEMPATH"] -if type(systemIncludesOption) != list : - systemIncludesOption = systemIncludesOption.split(",") - systemIncludes = [ "$BUILD_DIR/include", "$BUILD_DIR/include/OpenEXR", "$BUILD_DIR/include/GL", - ] + systemIncludesOption + ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] if env["PLATFORM"] != "win32" : systemIncludes += "$BUILD_DIR/include/python$PYTHON_VERSION" @@ -1653,11 +1643,7 @@ def buildDocs( target, source, env ) : subprocess.check_call( [ -<<<<<<< HEAD "python", -======= - gafferCmd, "env", "python", ->>>>>>> 5903a6d88... Scons : build documentation on Windows findOnPath( env.subst( "$SPHINX" ), env["ENV"]["PATH"] ), "-b", "html", str( source[0] ), os.path.dirname( str( target[0] ) ) From 14959a5d87448afa79aba4bad48df7c8dfd7e174 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 16 Oct 2020 17:57:52 -0400 Subject: [PATCH 207/243] GoboVisualiser : fix rebase - it is necessary to add the non-anonymous namespace to avoid compiler error C2201: https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2201?view=vs-2019 - static data in an anonymous namespace will get internal linkage, but LightFilterVisualiser comes from IECoreGLPreview which requires external linkage to access --- src/GafferArnoldUI/GoboVisualiser.cpp | 119 +++----------------------- 1 file changed, 13 insertions(+), 106 deletions(-) diff --git a/src/GafferArnoldUI/GoboVisualiser.cpp b/src/GafferArnoldUI/GoboVisualiser.cpp index 5f12ac19284..c1ed401d49f 100644 --- a/src/GafferArnoldUI/GoboVisualiser.cpp +++ b/src/GafferArnoldUI/GoboVisualiser.cpp @@ -71,7 +71,7 @@ using namespace IECoreGLPreview; using namespace GafferSceneUI; using namespace GafferArnoldUI::Private; -namespace GoboVisualiserUtils +namespace { // \todo Borrowed from StandardLightVisualiser, we need to extract these static @@ -100,10 +100,10 @@ IECoreGL::RenderablePtr quadWireframe( const V2f &size ) /// \todo We have similar methods in several places. Can we consolidate them all somewhere? Perhaps a new /// method of CompoundData? template -T parameterOrDefault(const IECore::CompoundData *parameters, const IECore::InternedString &name, const T &defaultValue) +T parameterOrDefault( const IECore::CompoundData *parameters, const IECore::InternedString &name, const T &defaultValue ) { typedef IECore::TypedData DataType; - if (const DataType *d = parameters->member(name)) + if( const DataType *d = parameters->member( name ) ) { return d->readable(); } @@ -113,6 +113,11 @@ T parameterOrDefault(const IECore::CompoundData *parameters, const IECore::Inter } } +} // namespace + +namespace GafferArnoldUI +{ + struct OSLTextureCacheGetterKey { @@ -178,8 +183,6 @@ const char *texturedFragSource() ; } -<<<<<<< HEAD -<<<<<<< HEAD const char *constantFragSource() { return @@ -191,96 +194,6 @@ const char *constantFragSource() } -======= -<<<<<<< HEAD ->>>>>>> abc85190d... GafferArnoldUI : add symbol exports -class GoboVisualiser final : public LightFilterVisualiser -======= -======= ->>>>>>> a5d93d68e... GafferArnoldUI : fix broken rebase -// OSLTextureEvaluation - -CompoundDataPtr evalOSLTexture( const IECoreScene::ShaderNetwork *shaderNetwork, int resolution ) -{ - GafferOSL::ShadingEnginePtr shadingEngine = new GafferOSL::ShadingEngine( shaderNetwork ); - - CompoundDataPtr shadingPoints = new CompoundData(); - - V3fVectorDataPtr pData = new V3fVectorData; - FloatVectorDataPtr uData = new FloatVectorData; - FloatVectorDataPtr vData = new FloatVectorData; - - vector &pWritable = pData->writable(); - vector &uWritable = uData->writable(); - vector &vWritable = vData->writable(); - - int numPoints = resolution * resolution; - - pWritable.reserve( numPoints ); - uWritable.reserve( numPoints ); - vWritable.reserve( numPoints ); - - for( int y = 0; y < resolution; ++y ) - { - for( int x = 0; x < resolution; ++x ) - { - uWritable.push_back( (float)(x + 0.5f) / resolution ); - // V is flipped because we're generating a Cortex image, - // and Cortex has the pixel origin at the top left. - vWritable.push_back( 1.0f - ( (y + 0.5f) / resolution ) ); - pWritable.push_back( V3f( x + 0.5f, y + 0.5f, 0.0f ) ); - } - } - - shadingPoints->writable()["P"] = pData; - shadingPoints->writable()["u"] = uData; - shadingPoints->writable()["v"] = vData; - - CompoundDataPtr shadingResult = shadingEngine->shade( shadingPoints.get() ); - ConstColor3fVectorDataPtr colors = shadingResult->member( "Ci" ); - - CompoundDataPtr result = new CompoundData(); - - if( colors ) - { - Imath::Box2i dataWindow( Imath::V2i( 0.0f ), Imath::V2i( resolution - 1 ) ); - Imath::Box2i displayWindow( Imath::V2i( 0.0f ), Imath::V2i( resolution - 1 ) ); - - result->writable()["dataWindow"] = new Box2iData( dataWindow ); - result->writable()["displayWindow"] = new Box2iData( displayWindow ); - - FloatVectorDataPtr redChannelData = new FloatVectorData(); - FloatVectorDataPtr greenChannelData = new FloatVectorData(); - FloatVectorDataPtr blueChannelData = new FloatVectorData(); - std::vector &r = redChannelData->writable(); - std::vector &g = greenChannelData->writable(); - std::vector &b = blueChannelData->writable(); - - vector::size_type numColors = colors->readable().size(); - r.reserve( numColors ); - g.reserve( numColors ); - b.reserve( numColors ); - - for( vector::size_type u = 0; u < numColors; ++u ) - { - Color3f c = colors->readable()[u]; - - r.push_back( c[0] ); - g.push_back( c[1] ); - b.push_back( c[2] ); - } - - CompoundDataPtr channelData = new CompoundData; - channelData->writable()["R"] = redChannelData; - channelData->writable()["G"] = greenChannelData; - channelData->writable()["B"] = blueChannelData; - - result->writable()["channels"] = channelData; - } - - return result; -} - class GAFFERARNOLDUI_API GoboVisualiser final : public LightFilterVisualiser { @@ -365,18 +278,12 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut imageData->writable()["dataWindow"] = singlePixelWindow; imageData->writable()["displayWindow"] = singlePixelWindow; -<<<<<<< HEAD CompoundDataPtr channels = new CompoundData; channels->writable()["R"] = new FloatVectorData( { goboColor[0] } ); channels->writable()["G"] = new FloatVectorData( { goboColor[1] } ); channels->writable()["B"] = new FloatVectorData( { goboColor[2] } ); imageData->writable()["channels"] = channels; } -======= - if( imageData->readable().empty() ) - { - const Color3f goboColor = GoboVisualiserUtils::parameterOrDefault( filterParameters, "slidemap", Color3f( 1 ) ); ->>>>>>> abc85190d... GafferArnoldUI : add symbol exports shaderParameters->members()["texture"] = imageData; @@ -407,10 +314,10 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut const float baseRadius = sin( halfAngle ) + lensRadius; const float baseDistance = cos( halfAngle ); - float rotate = GoboVisualiserUtils::parameterOrDefault( filterParameters, "rotate", 0.0f ); - float scaleS = GoboVisualiserUtils::parameterOrDefault( filterParameters, "scale_s", 1.0f ); - float scaleT = GoboVisualiserUtils::parameterOrDefault( filterParameters, "scale_t", 1.0f ); - V2f offset = GoboVisualiserUtils::parameterOrDefault( filterParameters, "offset", V2f( 0.0f ) ); + float rotate = parameterOrDefault( filterParameters, "rotate", 0.0f ); + float scaleS = parameterOrDefault( filterParameters, "scale_s", 1.0f ); + float scaleT = parameterOrDefault( filterParameters, "scale_t", 1.0f ); + V2f offset = parameterOrDefault( filterParameters, "offset", V2f( 0.0f ) ); Imath::M44f goboTrans; @@ -424,4 +331,4 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut return { Visualisation::createOrnament( result, true ) }; } -} // namespace GafferArnoldUI +} // namespace \ No newline at end of file From de17396211c757b3a35604b4baafc7495692de85 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Mon, 19 Oct 2020 16:11:19 -0400 Subject: [PATCH 208/243] Appleseed : disable loading in startup batch file --- bin/gaffer.bat | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index d11efa5cb2d..130a684b6fb 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -44,24 +44,22 @@ set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins call :prependToPath "%GAFFER_ROOT%\bin" PATH rem Appleseed -if "%APPLESEED%" == "" ( - if EXIST "%GAFFER_ROOT%"\appleseed ( - set APPLESEED=%GAFFER_ROOT%\appleseed - ) -) - -rem Appleseed - -if "%APPLESEED%" NEQ "" ( - call :prependToPath "%APPLESEED%\shaders\gaffer" OSL_SHADER_PATHS - call :prependToPath "%APPLESEED%\shaders\appleseed" OSL_SHADER_PATHS -) - -if "%APPLESEED%" NEQ "" ( - call :prependToPath "%APPLESEED%\bin;%APPLESEED%\lib" PATH - call :prependToPath "%APPLESEED%\lib\python2.7" PYTHONPATH - call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays" APPLESEED_SEARCHPATH -) +rem if "%APPLESEED%" == "" ( +rem if EXIST "%GAFFER_ROOT%"\appleseed ( +rem set APPLESEED=%GAFFER_ROOT%\appleseed +rem ) +rem ) + +rem if "%APPLESEED%" NEQ "" ( +rem call :prependToPath "%APPLESEED%\shaders\gaffer" OSL_SHADER_PATHS +rem call :prependToPath "%APPLESEED%\shaders\appleseed" OSL_SHADER_PATHS +rem ) + +rem if "%APPLESEED%" NEQ "" ( +rem call :prependToPath "%APPLESEED%\bin;%APPLESEED%\lib" PATH +rem call :prependToPath "%APPLESEED%\lib\python2.7" PYTHONPATH +rem call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays" APPLESEED_SEARCHPATH +rem ) rem Arnold if "%ARNOLD_ROOT%" NEQ "" ( From 81233a607f7322bdfae9eca116eeb62d0eeddf94 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 29 Oct 2020 14:45:36 -0400 Subject: [PATCH 209/243] Stats : add Windows Max resident size reporting "resource" module is not available on Windows and it appears the best native Python method of getting MaxRSS is through the pywin32 extension which would introduce a new dependency. Using a subprocess command and parsing the output is a simple alternative since performance is not critical here. --- apps/stats/stats-1.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/stats/stats-1.py b/apps/stats/stats-1.py index d1fff81f4d0..49fd843987c 100644 --- a/apps/stats/stats-1.py +++ b/apps/stats/stats-1.py @@ -39,10 +39,14 @@ import sys import time import tempfile -import resource import collections import six +if sys.platform != "win32": + import resource +else: + import subprocess + import IECore import Gaffer @@ -746,6 +750,9 @@ def maxRSS( cls ) : if sys.platform == "darwin" : return cls( resource.getrusage( resource.RUSAGE_SELF ).ru_maxrss ) + elif sys.platform == "win32" : + result = subprocess.check_output( ["wmic", "process", "where", "processid={}".format(os.getpid()), "get", "PeakWorkingSetSize"] ) + return cls( long( result.split()[1] ) * 1024 ) else : return cls( resource.getrusage( resource.RUSAGE_SELF ).ru_maxrss * 1024 ) From b2056862f827ec459ab28d544e067be20b259158 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 3 Nov 2020 17:14:13 -0500 Subject: [PATCH 210/243] gaffer.bat : add debug support - There is no reliable method of getting the "devenv" executable path, and it isn't added to PATH during installation. We rely on the user setting the GAFFER_DEBUGGER to the full path, including "devenv". --- bin/gaffer.bat | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index 130a684b6fb..f6252355d12 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -81,7 +81,12 @@ for %%A in (%GAFFER_EXTENSION_PATHS%) do ( call :prependToPath "%%A\startup" GAFFER_STARTUP_PATHS ) -"%GAFFER_ROOT%"\bin\python.exe "%GAFFER_ROOT%"/bin/__gaffer.py %* +if "%GAFFER_DEBUG%" NEQ "" ( + %GAFFER_DEBUGGER% /debugexe "%GAFFER_ROOT%\bin\python.exe" "%GAFFER_ROOT%"/bin/__gaffer.py %* +) else ( + "%GAFFER_ROOT%"\bin\python.exe "%GAFFER_ROOT%"/bin/__gaffer.py %* +) + if %ERRORLEVEL% NEQ 0 ( echo "Error(s) running Gaffer" exit /B %ERRORLEVEL% From 6775ffb38e580fe970cf7ca284a0d3dac9c1c1a0 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 17 Nov 2020 12:48:22 -0500 Subject: [PATCH 211/243] SConstruct : fix bad exception handling flag --- SConstruct | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index e2228569e11..6f045d4c20b 100644 --- a/SConstruct +++ b/SConstruct @@ -518,7 +518,8 @@ else: "/GR", # enable RTTI "/TP", # treat all files as c++ (vs C) "/FC", # display full paths in diagnostics - "/EHsc\";\"/MP", # catch c++ exceptions only + "/EHsc", # catch c++ exceptions only + "/MP", "/wd4910", # disable warning C4910 (https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4910?view=vs-2019) generated many times by OpenEXR ] ) From a6fb058f859ac6b619b40234a7562fcb6eecb9c0 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 10 Dec 2020 13:56:18 -0500 Subject: [PATCH 212/243] Build : disable permissive mode on MSVC --- SConstruct | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 6f045d4c20b..81ecd4a755c 100644 --- a/SConstruct +++ b/SConstruct @@ -519,7 +519,10 @@ else: "/TP", # treat all files as c++ (vs C) "/FC", # display full paths in diagnostics "/EHsc", # catch c++ exceptions only - "/MP", + "/MP", # enable multiprocessing of builds + "/permissive-", # disable permissive mode, which also enables standard compliant two phase name lookup + # required in when permissive mode is off, for defining constants like M_PI used by OpenVDB + "/D_USE_MATH_DEFINES", "/wd4910", # disable warning C4910 (https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4910?view=vs-2019) generated many times by OpenEXR ] ) From 3d8d8c376c115b81a607b56d7d735c0cae17983a Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 10 Dec 2020 13:57:15 -0500 Subject: [PATCH 213/243] TypedObjectPlug : don't use "extern" on Windows - Marking variables as "extern" in MSVC generates this warning: https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4910?view=msvc-160 - The "extern"s were introduced to fix a Mac error, so it is safe, and desireable, to exclude these on Windows (https://github.com/ImageEngine/cortex/commit/d6d9e783a36f07dfa1d0e67f929ec75f45cb4ab0#diff-bb99ebf651102989cbabc86eb2c276d7f986964d779a679c3541f8be14e21615) --- include/Gaffer/TypedObjectPlug.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Gaffer/TypedObjectPlug.h b/include/Gaffer/TypedObjectPlug.h index 35de5618ffc..1fc611fb0c3 100644 --- a/include/Gaffer/TypedObjectPlug.h +++ b/include/Gaffer/TypedObjectPlug.h @@ -120,7 +120,7 @@ class IECORE_EXPORT TypedObjectPlug : public ValuePlug }; -#ifndef Gaffer_EXPORTS +#if !defined( Gaffer_EXPORTS ) && !defined( _MSC_VER ) extern template class TypedObjectPlug; extern template class TypedObjectPlug; From 4a6d91a23a5e115c85af26171e64ae071af2bbc9 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 10 Dec 2020 16:19:35 -0500 Subject: [PATCH 214/243] TypedObjectPlugBinding : fix error when compiling on MSVC with "/permissive-" - MSVC was erroring with: include\gafferbindings\typedobjectplugbinding.inl(156): error C2064: term does not evaluate to a function taking 0 arguments --- include/GafferBindings/TypedObjectPlugBinding.inl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/GafferBindings/TypedObjectPlugBinding.inl b/include/GafferBindings/TypedObjectPlugBinding.inl index e48c268a491..ec2a6ad5316 100644 --- a/include/GafferBindings/TypedObjectPlugBinding.inl +++ b/include/GafferBindings/TypedObjectPlugBinding.inl @@ -143,7 +143,8 @@ TypedObjectPlugClass::TypedObjectPlugClass( const char *docString ) ); this->def( "defaultValue", &Detail::defaultValue, ( boost::python::arg_( "_copy" ) = true ) ); this->def( "setValue", Detail::setValue, ( boost::python::arg_( "value" ), boost::python::arg_( "_copy" ) = true ) ); - this->def( "getValue", Detail::getValue, ( boost::python::arg_( "_precomputedHash" ) = boost::python::object(), boost::python::arg_( "_copy" ) = true ) ); + boost::python::object b = boost::python::object(); + this->def( "getValue", Detail::getValue, ( boost::python::arg_( "_precomputedHash" ) = b, boost::python::arg_( "_copy" ) = true ) ); boost::python::scope s = *this; From fcb70b01658cd3d7c6d463d40c1bf3729c9d44b6 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Sat, 12 Dec 2020 12:21:35 -0500 Subject: [PATCH 215/243] Gaffer.bat : disable Jemalloc.bat by default (Windows only) It seems Jemalloc is not tested extensively on Windows (according to Github discussions including the developers) and Github issues suggest stability across major versions can be spotty. DCCs like Houdini also only use Jemalloc on Linux so we're in good company. The 5.2.1 (Gaffer is on 3.6 for stability reasons) release focuses on Windows so perhaps in future upgrades this can be enabled by default. --- bin/gaffer.bat | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/gaffer.bat b/bin/gaffer.bat index f6252355d12..8a924dc802a 100644 --- a/bin/gaffer.bat +++ b/bin/gaffer.bat @@ -6,6 +6,8 @@ set GAFFER_ROOT=%~dp0%.. set HOME=%USERPROFILE% +set GAFFER_JEMALLOC=0 + call :prependToPath "%GAFFER_ROOT%\glsl" IECOREGL_SHADER_PATHS call :prependToPath "%GAFFER_ROOT%\glsl" IECOREGL_SHADER_INCLUDE_PATHS From 597f584264d5b274a08ed95903223f5593beaf0a Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 18 Feb 2021 19:12:00 -0500 Subject: [PATCH 216/243] Sconstruct : use built-in Substfile instead of custom function --- SConstruct | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/SConstruct b/SConstruct index 81ecd4a755c..206db49c9fb 100644 --- a/SConstruct +++ b/SConstruct @@ -47,6 +47,8 @@ import platform import py_compile import subprocess +EnsureSConsVersion( 3, 0, 2 ) # Substfile is a default builder as of 3.0.2 + ############################################################################################### # Version ############################################################################################### @@ -362,24 +364,6 @@ env = Environment( ) -# Take a dictionary of the form {"old": "new", "old2": "new2",...} -# and perform platform-specific substitutions on the given file -def substituteFileText( sourceFile, destFile, subs ) : - if len(subs.keys()) == 0: - return None - - if env["PLATFORM"] != "win32" : - sedSubstitutions = "s/{}/{}/g".format( subs.keys()[ 0 ], subs[ subs.keys()[ 0 ] ] ) - for i in range( 1, len(subs.keys() ) ) : - sedSubstitutions += "; s/{}/{}/g".format( subs.keys()[ i ], subs[subs.keys()[ i ] ] ) - return env.Command( destFile, sourceFile, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) - else : - psSubstitutions = "" - for key in subs.keys() : - psSubstitutions += " -replace \\\"{}\\\",\\\"{}\\\"".format( key.replace( "!", "\!" ), subs[ key ].replace( "!", "\!" ) ) - return env.Command( destFile, sourceFile, "powershell -Command \"cat $SOURCE | % {{ $$_{} }} | Out-File -Encoding utf8 $TARGET\"".format( psSubstitutions ) ) - - # include 3rd party headers with -isystem rather than -I. # this should turn off warnings from those headers, allowing us to @@ -1234,7 +1218,12 @@ for libraryName, libraryDef in libraries.items() : ) for header in headers : - headerInstall = substituteFileText( header, "$BUILD_DIR/" + header, fileSubstitutions ) + headerInstall = env.Substfile( + os.path.join( "$BUILD_DIR", header ), + header, + SUBST_DICT = fileSubstitutions + ) + libEnv.Alias( "build", headerInstall ) # bindings library @@ -1262,7 +1251,11 @@ for libraryName, libraryDef in libraries.items() : ) for header in bindingsHeaders : - headerInstall = substituteFileText( header, "$BUILD_DIR/" + header, fileSubstitutions ) + headerInstall = env.Substfile( + os.path.join( "$BUILD_DIR", header ), + header, + SUBST_DICT = fileSubstitutions + ) bindingsEnv.Alias( "build", headerInstall ) # python module binary component @@ -1300,7 +1293,11 @@ for libraryName, libraryDef in libraries.items() : pythonFiles = glob.glob( "python/" + libraryName + "/*.py" ) + glob.glob( "python/" + libraryName + "/*/*.py" ) for pythonFile in pythonFiles : - pythonFileInstall = substituteFileText( pythonFile, "$BUILD_DIR/" + pythonFile, fileSubstitutions ) + pythonFileInstall = env.Substfile( + os.path.join( "$BUILD_DIR", pythonFile ), + pythonFile, + SUBST_DICT = fileSubstitutions + ) env.Alias( "build", pythonFileInstall ) # apps From 91115bc94b1e17cc0452bb680d38cd55e2cc3da5 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 18 Feb 2021 19:13:09 -0500 Subject: [PATCH 217/243] SConstruct : Ensure platform-specific paths throughout --- SConstruct | 288 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 181 insertions(+), 107 deletions(-) diff --git a/SConstruct b/SConstruct index 206db49c9fb..53d89bb7cb2 100644 --- a/SConstruct +++ b/SConstruct @@ -356,15 +356,14 @@ env = Environment( LIBPATH = [ "./lib", - "$BUILD_DIR/lib", + os.path.join( "$BUILD_DIR", "lib" ), "$LOCATE_DEPENDENCY_LIBPATH", ], - FRAMEWORKPATH = "$BUILD_DIR/lib", + FRAMEWORKPATH = os.path.join( "$BUILD_DIR", "lib" ), ) - # include 3rd party headers with -isystem rather than -I. # this should turn off warnings from those headers, allowing us to # build with -Werror. there are so many warnings from boost @@ -388,15 +387,15 @@ def formatSystemIncludes( includeList ) : return formattedList systemIncludes = [ - "$BUILD_DIR/include", - "$BUILD_DIR/include/OpenEXR", - "$BUILD_DIR/include/GL", + os.path.join( "$BUILD_DIR", "include" ), + os.path.join( "$BUILD_DIR", "include", "OpenEXR" ), + os.path.join( "$BUILD_DIR", "include", "GL" ), ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] if env["PLATFORM"] != "win32" : - systemIncludes += "$BUILD_DIR/include/python$PYTHON_VERSION" + systemIncludes += os.path.join( "$BUILD_DIR", "include", "python$PYTHON_VERSION" ) else: - systemIncludes += "$BUILD_DIR/include/python", + systemIncludes += os.path.join( "$BUILD_DIR", "include", "python" ), env.Append( CXXFLAGS = formatSystemIncludes( systemIncludes ) ) @@ -671,13 +670,25 @@ commandEnv = env.Clone() commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.join( "$BUILD_DIR", "bin" ) + os.path.pathsep ) + commandEnv["ENV"]["PATH"] if commandEnv["PLATFORM"]=="darwin" : - commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) + commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( + os.path.pathsep.join( + [ os.path.join( "$BUILD_DIR", "lib" ) ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) + ) + ) elif commandEnv["PLATFORM"] == "win32" : - commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv[ "LOCATE_DEPENDENCY_LIBPATH" ] ) ) ) + os.path.pathsep + commandEnv["ENV"]["PATH"] + commandEnv["ENV"]["PATH"] = commandEnv.subst( + os.path.pathsep.join( + [ os.path.join( "$BUILD_DIR", "lib" ) ] + split( commandEnv[ "LOCATE_DEPENDENCY_LIBPATH" ] ) + ) + ) + os.path.pathsep + commandEnv["ENV"]["PATH"] else: - commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( os.path.pathsep.join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) + commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( + os.path.pathsep.join( + [ os.path.join( "$BUILD_DIR", "lib" ) ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) + ) + ) -commandEnv["ENV"]["PYTHONPATH"] = commandEnv.subst( os.path.pathsep.join( split( commandEnv["LOCATE_DEPENDENCY_PYTHONPATH"] ) ) ) +commandEnv["ENV"]["PYTHONPATH"] = commandEnv.subst(os.path.pathsep.join( split( commandEnv["LOCATE_DEPENDENCY_PYTHONPATH"] ) ) ) # SIP on MacOS prevents DYLD_LIBRARY_PATH being passed down so we make sure # we also pass through to gaffer the other base vars it uses to populate paths @@ -689,7 +700,7 @@ def runCommand( command ) : command = commandEnv.subst( command ) sys.stderr.write( command + "\n" ) - subprocess.check_call( command, shell=True, env=commandEnv["ENV"] ) + return subprocess.check_output( command, shell=True, env=commandEnv["ENV"] ) ############################################################################################### # The basic environment for building libraries @@ -720,8 +731,8 @@ baseLibEnv.Append( # Determine boost version boostVersionHeader = baseLibEnv.FindFile( - "boost/version.hpp", - [ "$BUILD_DIR/include" ] + + os.path.join( "boost", "version.hpp" ), + [ os.path.join( "$BUILD_DIR", "include" ) ] + baseLibEnv["LOCATE_DEPENDENCY_SYSTEMPATH"] + baseLibEnv["LOCATE_DEPENDENCY_CPPPATH"] ) @@ -781,15 +792,15 @@ basePythonEnv.Append( if basePythonEnv["PLATFORM"]=="darwin" : basePythonEnv.Append( - CPPPATH = [ "$BUILD_DIR/lib/Python.framework/Versions/$PYTHON_VERSION/include/python$PYTHON_VERSION" ], - LIBPATH = [ "$BUILD_DIR/lib/Python.framework/Versions/$PYTHON_VERSION/lib/python$PYTHON_VERSION/config" ], + CPPPATH = [ os.path.join( "$BUILD_DIR", "lib", "Python.framework", "Versions", "$PYTHON_VERSION", "include", "python$PYTHON_VERSION" ) ], + LIBPATH = [ os.path.join( "$BUILD_DIR", "lib", "Python.framework", "Versions", "$PYTHON_VERSION", "lib", "python$PYTHON_VERSION", "config" ) ], LIBS = [ "python$PYTHON_VERSION" ], ) else : basePythonEnv.Append( - CPPPATH = [ "$BUILD_DIR/include/python$PYTHON_ABI_VERSION" ] + CPPPATH = [ os.path.join( "$BUILD_DIR", "include", "python$PYTHON_ABI_VERSION" ) ] ) ############################################################################################### @@ -801,8 +812,8 @@ vTuneRoot = env.subst("$VTUNE_ROOT") if os.path.exists( vTuneRoot ): gafferLib = { "envAppends" : { - "CXXFLAGS" : [ "-DGAFFER_VTUNE"] + formatSystemIncludes( "$VTUNE_ROOT/include" ), - "LIBPATH" : [ "$VTUNE_ROOT/lib64" ], + "CXXFLAGS" : [ "-DGAFFER_VTUNE"] + formatSystemIncludes( os.path.join( "$VTUNE_ROOT", "include" ) ), + "LIBPATH" : [ os.path.join( "$VTUNE_ROOT", "lib64" ) ], "LIBS" : [ "ittnotify" ] }, "pythonEnvAppends" : { @@ -830,7 +841,9 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "GafferTest", "GafferBindings" ], }, - "additionalFiles" : glob.glob( "python/GafferTest/*/*" ) + glob.glob( "python/GafferTest/*/*/*" ), + "additionalFiles" : glob.glob( + os.path.join( "python", "GafferTest", "*", "*" ) + ) + glob.glob( os.path.join( "python", "GafferTest", "*", "*", "*" ) ), "apps" : [ "cli", "env", "license", "python", "stats", "test" ], }, @@ -849,7 +862,7 @@ libraries = { "GafferUITest" : { - "additionalFiles" : glob.glob( "python/GafferUITest/scripts/*.gfr" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferUITest", "scripts", "*.gfr" ) ), }, @@ -865,7 +878,9 @@ libraries = { "GafferDispatchTest" : { - "additionalFiles" : glob.glob( "python/GafferDispatchTest/*/*" ) + glob.glob( "python/GafferDispatchTest/*/*/*" ), + "additionalFiles" : glob.glob( + os.path.join( "python", "GafferDispatchTest", "*", "*" ) + ) + glob.glob( os.path.join( "python", "GafferDispatchTest", "*", "*", "*" ) ), }, @@ -886,7 +901,13 @@ libraries = { }, "GafferCortexTest" : { - "additionalFiles" : glob.glob( "python/GafferCortexTest/*/*" ) + glob.glob( "python/GafferCortexTest/*/*/*" ) + glob.glob( "python/GafferCortexTest/images/*" ), + "additionalFiles" : glob.glob( + os.path.join( "python", "GafferCortexTest", "*", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferCortexTest", "*", "*", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferCortexTest", "images", "*" ) + ), "requiredOptions" : [ "GAFFERCORTEX" ], }, @@ -906,7 +927,13 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "GafferBindings", "GafferScene", "GafferDispatch", "GafferImage", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreGL$CORTEX_LIB_SUFFIX" ], }, - "additionalFiles" : glob.glob( "glsl/*.frag" ) + glob.glob( "glsl/*.vert" ) + glob.glob( "include/GafferScene/Private/IECore*Preview/*.h" ) + "additionalFiles" : glob.glob( + os.path.join( "glsl", "*.frag" ) + ) + glob.glob( + os.path.join( "glsl", "*.vert" ) + ) + glob.glob( + os.path.join( "include", "GafferScene", "Private", "IECore*Preview", "*.h" ) + ) }, "GafferSceneTest" : { @@ -916,7 +943,7 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "Gaffer", "GafferDispatch", "GafferBindings", "GafferScene", "GafferSceneTest" ], }, - "additionalFiles" : glob.glob( "python/GafferSceneTest/*/*" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferSceneTest", "*", "*" ) ), }, "GafferSceneUI" : { @@ -932,7 +959,7 @@ libraries = { "GafferImage" : { "envAppends" : { - "CPPPATH" : [ "$BUILD_DIR/include/freetype2" ], + "CPPPATH" : [ os.path.join( "$BUILD_DIR", "include", "freetype2" ) ], "LIBS" : [ "Gaffer", "GafferDispatch", "Iex$OPENEXR_LIB_SUFFIX", "IECoreImage$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "OpenColorIO$OCIO_LIB_SUFFIX", "freetype" ], }, "pythonEnvAppends" : { @@ -947,7 +974,15 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "GafferImage", "GafferImageTest" ], }, - "additionalFiles" : glob.glob( "python/GafferImageTest/scripts/*" ) + glob.glob( "python/GafferImageTest/images/*" ) + glob.glob( "python/GafferImageTest/openColorIO/luts/*" ) + glob.glob( "python/GafferImageTest/openColorIO/*" ), + "additionalFiles" : glob.glob( + os.path.join( "python", "GafferImageTest", "scripts", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferImageTest", "images", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferImageTest", "openColorIO", "luts", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferImageTest", "openColorIO", "*" ) + ), }, "GafferImageUITest" : {}, @@ -963,28 +998,34 @@ libraries = { "GafferArnold" : { "envAppends" : { - "CPPPATH" : [ "$ARNOLD_ROOT/include" ], - "LIBPATH" : [ "$ARNOLD_ROOT/bin", "$ARNOLD_ROOT/lib" ], + "CPPPATH" : [ os.path.join( "$ARNOLD_ROOT", "include" ) ], + "LIBPATH" : [ os.path.join( "$ARNOLD_ROOT", "bin" ), os.path.join( "$ARNOLD_ROOT", "lib" ) ], "LIBS" : [ "Gaffer", "GafferScene", "GafferDispatch", "ai", "GafferVDB", "openvdb$VDB_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreArnold$CORTEX_LIB_SUFFIX", "IECoreVDB$CORTEX_LIB_SUFFIX", "GafferOSL" ], }, "pythonEnvAppends" : { - "CPPPATH" : [ "$ARNOLD_ROOT/include" ], - "LIBPATH" : [ "$ARNOLD_ROOT/bin" ], + "CPPPATH" : [ os.path.join( "$ARNOLD_ROOT", "include" ) ], + "LIBPATH" : [ os.path.join( "$ARNOLD_ROOT", "bin" ) ], "LIBS" : [ "Gaffer", "GafferScene", "GafferBindings", "GafferVDB", "GafferDispatch", "GafferArnold", "GafferOSL", "IECoreScene$CORTEX_LIB_SUFFIX" ], }, "requiredOptions" : [ "ARNOLD_ROOT" ], - "additionalFiles" : [ "arnold/plugins/gaffer.mtd" ], + "additionalFiles" : [ os.path.join( "arnold", "plugins", "gaffer.mtd" ) ], }, "GafferArnoldTest" : { - "additionalFiles" : glob.glob( "python/GafferArnoldTest/volumes/*" ) + glob.glob( "python/GafferArnoldTest/metadata/*" ) + glob.glob( "python/GafferArnoldTest/images/*" ), + "additionalFiles" : glob.glob( + os.path.join( "python", "GafferArnoldTest", "volumes", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferArnoldTest", "metadata", "*" ) + ) + glob.glob( + os.path.join( "python", "GafferArnoldTest", "images", "*" ) + ), "requiredOptions" : [ "ARNOLD_ROOT" ], }, "GafferArnoldUI" : { "envAppends" : { - "CPPPATH" : [ "$ARNOLD_ROOT/include" ], - "LIBPATH" : [ "$ARNOLD_ROOT/bin", "$ARNOLD_ROOT/lib" ], + "CPPPATH" : [ os.path.join( "$ARNOLD_ROOT", "include" ) ], + "LIBPATH" : [ os.path.join( "$ARNOLD_ROOT", "bin") , os.path.join( "$ARNOLD_ROOT", "lib" ) ], "LIBS" : [ "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreGL$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX", "Gaffer", "GafferScene", "GafferOSL", "GafferSceneUI", "ai" ], }, "pythonEnvAppends" : { @@ -994,21 +1035,21 @@ libraries = { }, "GafferArnoldUITest" : { - "additionalFiles" : glob.glob( "python/GafferArnoldUITest/metadata/*" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferArnoldUITest", "metadata", "*" ) ), "requiredOptions" : [ "ARNOLD_ROOT" ], }, "GafferOSL" : { "envAppends" : { - "CPPPATH" : [ "$OSLHOME/include/OSL" ], + "CPPPATH" : [ os.path.join( "$OSLHOME", "include", "OSL" ) ], "LIBS" : [ "Gaffer", "GafferScene", "GafferImage", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX", "oslexec$OSL_LIB_SUFFIX", "Iex$OPENEXR_LIB_SUFFIX", "IECoreImage$CORTEX_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX" ], }, "pythonEnvAppends" : { - "CPPPATH" : [ "$OSLHOME/include/OSL" ], + "CPPPATH" : [ os.path.join( "$OSLHOME", "include", "OSL" ) ], "LIBS" : [ "GafferBindings", "GafferScene", "GafferImage", "GafferOSL", "Iex$OPENEXR_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX" ], }, - "oslHeaders" : glob.glob( "shaders/*/*.h" ), - "oslShaders" : glob.glob( "shaders/*/*.osl" ), + "oslHeaders" : glob.glob( os.path.join( "shaders", "*", "*.h" ) ), + "oslShaders" : glob.glob( os.path.join( "shaders", "*", "*.osl" ) ), }, "GafferOSLUI" : { @@ -1021,20 +1062,20 @@ libraries = { }, "GafferOSLTest" : { - "additionalFiles" : glob.glob( "python/GafferOSLTest/*/*" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferOSLTest", "*", "*" ) ), }, "GafferOSLUITest" : {}, "GafferDelight" : { "envAppends" : { - "CPPPATH" : [ "$DELIGHT_ROOT/include" ], + "CPPPATH" : [ os.path.join( "$DELIGHT_ROOT", "include" ) ], "LIBS" : [ "Gaffer", "GafferScene", "GafferDispatch", "IECoreScene$CORTEX_LIB_SUFFIX", "3delight" ], - "LIBPATH" : [ "$DELIGHT_ROOT/lib" ], + "LIBPATH" : [ os.path.join( "$DELIGHT_ROOT", "lib" ) ], }, "pythonEnvAppends" : { "LIBS" : [ "GafferBindings", "GafferScene", "GafferDispatch", "GafferDelight" ], - "LIBPATH" : [ "$DELIGHT_ROOT/lib" ], + "LIBPATH" : [ os.path.join( "$DELIGHT_ROOT", "lib" ) ], }, "requiredOptions" : [ "DELIGHT_ROOT" ], }, @@ -1047,20 +1088,20 @@ libraries = { "GafferAppleseed" : { "envAppends" : { - "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( "$APPLESEED_ROOT/include" ), - "LIBPATH" : [ "$APPLESEED_ROOT/lib" ], + "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( os.path.join( "$APPLESEED_ROOT", "include" ) ), + "LIBPATH" : [ os.path.join( "$APPLESEED_ROOT", "lib" ) ], "LIBS" : [ "Gaffer", "GafferDispatch", "GafferScene", "appleseed", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreAppleseed$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX" ], }, "pythonEnvAppends" : { - "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( "$APPLESEED_ROOT/include" ), - "LIBPATH" : [ "$APPLESEED_ROOT/lib" ], + "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( os.path.join( "$APPLESEED_ROOT", "include" ) ), + "LIBPATH" : [ os.path.join( "$APPLESEED_ROOT", "lib" ) ], "LIBS" : [ "Gaffer", "GafferDispatch", "GafferScene", "GafferBindings", "GafferAppleseed" ], }, "requiredOptions" : [ "APPLESEED_ROOT" ], }, "GafferAppleseedTest" : { - "additionalFiles" : glob.glob( "python/GafferAppleseedTest/*/*" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferAppleseedTest", "*", "*" ) ), }, "GafferAppleseedUI" : {}, @@ -1085,7 +1126,7 @@ libraries = { }, "GafferVDBTest" : { - "additionalFiles" : glob.glob( "python/GafferVDBTest/*/*" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferVDBTest", "*", "*" ) ), }, "GafferVDBUI" : { @@ -1098,11 +1139,11 @@ libraries = { }, "GafferVDBUITest" : { - "additionalFiles" : glob.glob( "python/GafferVDBUITest/*/*" ), + "additionalFiles" : glob.glob( os.path.join( "python", "GafferVDBUITest", "*", "*" ) ), }, "scripts" : { - "additionalFiles" : [ "bin/gaffer", "bin/__gaffer.py" ], + "additionalFiles" : [ os.path.join( "bin", "gaffer" ), os.path.join( "bin", "__gaffer.py" ) ], }, "misc" : { @@ -1114,12 +1155,12 @@ libraries = { "classStubs" : [ # files - ( "SequenceLsOp", "ops/files/sequenceLs" ), - ( "SequenceCpOp", "ops/files/sequenceCopy" ), - ( "SequenceMvOp", "ops/files/sequenceMove" ), - ( "SequenceRmOp", "ops/files/sequenceRemove" ), - ( "SequenceRenumberOp", "ops/files/sequenceRenumber" ), - ( "SequenceConvertOp", "ops/files/sequenceConvert" ), + ( "SequenceLsOp", os.path.join( "ops", "files", "sequenceLs" ) ), + ( "SequenceCpOp", os.path.join( "ops", "files", "sequenceCopy" ) ), + ( "SequenceMvOp", os.path.join( "ops", "files", "sequenceMove" ) ), + ( "SequenceRmOp", os.path.join( "ops", "files", "sequenceRemove" ) ), + ( "SequenceRenumberOp", os.path.join( "ops", "files", "sequenceRenumber" ) ), + ( "SequenceConvertOp", os.path.join( "ops", "files", "sequenceConvert" ) ), ], @@ -1129,7 +1170,7 @@ libraries = { "classStubs" : [ - ( "ReadProcedural", "procedurals/read" ), + ( "ReadProcedural", os.path.join( "procedurals", "read" ) ), ], @@ -1138,7 +1179,7 @@ libraries = { } if env["PLATFORM"] == "win32" : - libraries["scripts"]["additionalFiles"].append( "bin/gaffer.bat" ) + libraries["scripts"]["additionalFiles"].append( os.path.join( "bin", "gaffer.bat" ) ) # Add on OpenGL libraries to definitions - these vary from platform to platform @@ -1192,13 +1233,19 @@ for libraryName, libraryDef in libraries.items() : # library - librarySource = sorted( glob.glob( "src/" + libraryName + "/*.cpp" ) + glob.glob( "src/" + libraryName + "/*/*.cpp" ) ) + librarySource = sorted( + glob.glob( + os.path.join( "src", libraryName, "*.cpp" ) + ) + glob.glob( + os.path.join( "src", libraryName, "*", "*.cpp" ) + ) + ) if librarySource : - library = libEnv.SharedLibrary( "lib/" + libraryName, librarySource ) + library = libEnv.SharedLibrary( os.path.join( "lib", libraryName ), librarySource ) libEnv.Default( library ) - libraryInstall = libEnv.Install( "$BUILD_DIR/lib", library ) + libraryInstall = libEnv.Install( os.path.join( "$BUILD_DIR", "lib" ), library ) libEnv.Alias( "build", libraryInstall ) # header install @@ -1211,10 +1258,10 @@ for libraryName, libraryDef in libraries.items() : } headers = ( - glob.glob( "include/" + libraryName + "/*.h" ) + - glob.glob( "include/" + libraryName + "/*.inl" ) + - glob.glob( "include/" + libraryName + "/*/*.h" ) + - glob.glob( "include/" + libraryName + "/*/*.inl" ) + glob.glob( os.path.join( "include", libraryName, "*.h" ) ) + + glob.glob( os.path.join( "include", libraryName, "*.inl" ) ) + + glob.glob( os.path.join( "include", libraryName, "*", "*.h" ) ) + + glob.glob( os.path.join( "include", libraryName, "*", "*.inl" ) ) ) for header in headers : @@ -1234,20 +1281,20 @@ for libraryName, libraryDef in libraries.items() : bindingsEnv = pythonEnv.Clone() bindingsEnv.Append( CXXFLAGS = "-D{0}Bindings_EXPORTS".format( libraryName ) ) - bindingsSource = sorted( glob.glob( "src/" + libraryName + "Bindings/*.cpp" ) ) + bindingsSource = sorted( glob.glob( os.path.join( "src", libraryName + "Bindings", "*.cpp" ) ) ) if bindingsSource : - bindingsLibrary = bindingsEnv.SharedLibrary( "lib/" + libraryName + "Bindings", bindingsSource ) + bindingsLibrary = bindingsEnv.SharedLibrary( os.path.join( "lib", libraryName + "Bindings" ), bindingsSource ) bindingsEnv.Default( bindingsLibrary ) - bindingsLibraryInstall = bindingsEnv.Install( "$BUILD_DIR/lib", bindingsLibrary ) + bindingsLibraryInstall = bindingsEnv.Install( os.path.join( "$BUILD_DIR", "lib" ), bindingsLibrary ) env.Alias( "build", bindingsLibraryInstall ) # bindings header install bindingsHeaders = ( - glob.glob( "include/" + libraryName + "Bindings/*.h" ) + - glob.glob( "include/" + libraryName + "Bindings/*.inl" ) + glob.glob( os.path.join( "include", libraryName + "Bindings", "*.h" ) ) + + glob.glob( os.path.join( "include", libraryName + "Bindings", "*.inl" ) ) ) for header in bindingsHeaders : @@ -1260,7 +1307,7 @@ for libraryName, libraryDef in libraries.items() : # python module binary component - pythonModuleSource = sorted( glob.glob( "src/" + libraryName + "Module/*.cpp" ) ) + pythonModuleSource = sorted( glob.glob( os.path.join( "src", libraryName + "Module", "*.cpp" ) ) ) if pythonModuleSource : pythonModuleEnv = pythonEnv.Clone() @@ -1283,15 +1330,22 @@ for libraryName, libraryDef in libraries.items() : elif pythonModuleEnv["PLATFORM"] == "win32" : pythonModuleEnv["SHLIBSUFFIX"] = ".pyd" - pythonModule = pythonModuleEnv.SharedLibrary( "python/" + libraryName + "/_" + libraryName, pythonModuleSource ) + pythonModule = pythonModuleEnv.SharedLibrary( + os.path.join( "python", libraryName, "_" + libraryName ), + pythonModuleSource + ) pythonModuleEnv.Default( pythonModule ) - moduleInstall = pythonModuleEnv.Install( "$BUILD_DIR/python/" + libraryName, pythonModule ) + moduleInstall = pythonModuleEnv.Install( os.path.join( "$BUILD_DIR", "python", libraryName ), pythonModule ) pythonModuleEnv.Alias( "build", moduleInstall ) # python component of python module - pythonFiles = glob.glob( "python/" + libraryName + "/*.py" ) + glob.glob( "python/" + libraryName + "/*/*.py" ) + pythonFiles = glob.glob( + os.path.join( "python", libraryName, "*.py" ) + ) + glob.glob( + os.path.join( "python", libraryName, "*", "*.py" ) + ) for pythonFile in pythonFiles : pythonFileInstall = env.Substfile( os.path.join( "$BUILD_DIR", pythonFile ), @@ -1318,24 +1372,36 @@ for libraryName, libraryDef in libraries.items() : for additionalFile in libraryDef.get( "additionalFiles", [] ) : if additionalFile in pythonFiles : continue - additionalFileInstall = env.InstallAs( "$BUILD_DIR/" + additionalFile, additionalFile ) + additionalFileInstall = env.InstallAs( os.path.join( "$BUILD_DIR", additionalFile ), additionalFile ) env.Alias( "build", additionalFileInstall ) # osl headers for oslHeader in libraryDef.get( "oslHeaders", [] ) : - oslHeaderInstall = env.InstallAs( "$BUILD_DIR/" + oslHeader, oslHeader ) + oslHeaderInstall = env.InstallAs( os.path.join( "$BUILD_DIR", oslHeader ), oslHeader ) env.Alias( "oslHeaders", oslHeaderInstall ) env.Alias( "build", oslHeaderInstall ) # osl shaders def buildOSL( target, source, env ) : - subprocess.check_call( [ env.subst( "$BUILD_DIR/bin/oslc" ), "-I./shaders", "-o", str( target[0] ), str( source[0] ) ], env = env["ENV"] ) + subprocess.check_call( + [ + env.subst( os.path.join( "$BUILD_DIR", "bin", "oslc" ) ), + "-I" + os.path.join( ".", "shaders" ), + "-o", + str( target[0] ), str( source[0] ) + ], + env = env["ENV"] + ) for oslShader in libraryDef.get( "oslShaders", [] ) : env.Alias( "build", oslShader ) - compiledFile = commandEnv.Command( "$BUILD_DIR/" + os.path.splitext( oslShader )[0] + ".oso", oslShader, buildOSL ) + compiledFile = commandEnv.Command( + os.path.join( "$BUILD_DIR", os.path.splitext( oslShader )[0] + ".oso" ), + oslShader, + buildOSL + ) env.Depends( compiledFile, "oslHeaders" ) env.Alias( "build", compiledFile ) @@ -1347,14 +1413,14 @@ for libraryName, libraryDef in libraries.items() : if not os.path.isdir( dir ) : os.makedirs( dir ) - classLoadableName = dir.rpartition( "/" )[2] + classLoadableName = dir.rpartition( os.path.sep )[2] f = open( str( target[0] ), "w" ) f.write( "import IECore\n\n" ) f.write( env.subst( "from $GAFFER_STUB_MODULE import $GAFFER_STUB_CLASS as %s" % classLoadableName ) ) for classStub in libraryDef.get( "classStubs", [] ) : - stubFileName = "$BUILD_DIR/" + classStub[1] + "/" + classStub[1].rpartition( "/" )[2] + "-1.py" + stubFileName = os.path.join( "$BUILD_DIR", classStub[1], classStub[1].rpartition( os.path.sep )[2], "-1.py" ) stubEnv = env.Clone( GAFFER_STUB_MODULE = libraryName, GAFFER_STUB_CLASS = classStub[0], @@ -1548,8 +1614,12 @@ def graphicsCommands( env, svg, outputDirectory ) : if haveInkscape : - for source in ( "resources/graphics.svg", "resources/GafferLogo.svg", "resources/GafferLogoMini.svg" ) : - env.Alias( "build", graphicsCommands( env, source, "$BUILD_DIR/graphics" ) ) + for source in ( + os.path.join( "resources", "graphics.svg" ), + os.path.join( "resources", "GafferLogo.svg" ), + os.path.join( "resources", "GafferLogoMini.svg" ) + ) : + env.Alias( "build", graphicsCommands( env, source, os.path.join( "$BUILD_DIR", "graphics" ) ) ) else : @@ -1593,7 +1663,7 @@ def generateDocs( target, source, env ) : elif ext == ".py" : command = [ gafferCmd, "env", "python", localFile ] elif ext == ".sh" : - command = [ gafferCmd, "env", "./" + localFile ] + command = [ gafferCmd, "env", os.path.join(".", localFile ) ] if command : sys.stdout.write( "Running {0}\n".format( os.path.join( root, localFile ) ) ) subprocess.check_call( command, cwd = root, env = env["ENV"] ) @@ -1665,8 +1735,8 @@ if haveSphinx and haveInkscape : # env var. We also extend startup paths to include any config # we need for the docs to build correctly. docCommandEnv = commandEnv.Clone() - docCommandEnv["ENV"]["GAFFER_REFERENCE_PATHS"] = os.path.abspath( "doc/references" ) - docCommandEnv["ENV"]["GAFFER_STARTUP_PATHS"] = os.path.abspath( "doc/startup" ) + docCommandEnv["ENV"]["GAFFER_REFERENCE_PATHS"] = os.path.abspath( os.path.join( "doc", "references" ) ) + docCommandEnv["ENV"]["GAFFER_REFERENCE_PATHS"] = os.path.abspath( os.path.join( "doc", "startup" ) ) # Ensure that Arnold, Appleseed and 3delight are available in the documentation # environment. @@ -1678,28 +1748,28 @@ if haveSphinx and haveInkscape : libraryPathEnvVar = libraryPathEnvVars.get( docEnv["PLATFORM"], "LD_LIBRARY_PATH" ) if docCommandEnv.subst( "$ARNOLD_ROOT" ) : - docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) - docCommandEnv["ENV"]["PYTHONPATH"] += os.path.pathsep + docCommandEnv.subst( "$ARNOLD_ROOT/python" ) - docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) + docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( os.path.join( "$ARNOLD_ROOT", "bin" ) ) + docCommandEnv["ENV"]["PYTHONPATH"] += os.path.pathsep + docCommandEnv.subst( os.path.join( "$ARNOLD_ROOT", "python" ) ) + docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( os.path.join( "$ARNOLD_ROOT", "bin" ) ) - if docCommandEnv.subst( "$APPLESEED_ROOT" ) and docCommandEnv["APPLESEED_ROOT"] != "$BUILD_DIR/appleseed" : - docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( "$APPLESEED_ROOT/bin" ) - docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( "$APPLESEED_ROOT/lib" ) + if docCommandEnv.subst( "$APPLESEED_ROOT" ) and docCommandEnv["APPLESEED_ROOT"] != os.path.join( "$BUILD_DIR", "appleseed" ) : + docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "bin" ) ) + docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "lib" ) ) docCommandEnv["ENV"]["OSLHOME"] = docCommandEnv.subst( "$OSLHOME" ) - docCommandEnv["ENV"]["OSL_SHADER_PATHS"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed" ) - docCommandEnv["ENV"]["APPLESEED_SEARCHPATH"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed" + os.path.pathsep + ":$LOCATE_DEPENDENCY_APPLESEED_SEARCHPATH" ) + docCommandEnv["ENV"]["OSL_SHADER_PATHS"] = docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "shaders", "appleseed" ) ) + docCommandEnv["ENV"]["APPLESEED_SEARCHPATH"] = docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "shaders", "appleseed" ) + os.path.pathsep + ":$LOCATE_DEPENDENCY_APPLESEED_SEARCHPATH" ) # Docs graphics generation - docGraphicsCommands = graphicsCommands( docEnv, "resources/docGraphics.svg", "$BUILD_DIR/doc/gaffer/graphics" ) + docGraphicsCommands = graphicsCommands( docEnv, os.path.join( "resources", "docGraphics.svg" ), os.path.join( "$BUILD_DIR", "doc", "gaffer", "graphics" ) ) docEnv.Alias( "docs", docGraphicsCommands ) - docSource, docGenerationCommands = locateDocs( "doc/source", docCommandEnv ) - docs = docEnv.Command( "$BUILD_DIR/doc/gaffer/html/index.html", docSource, buildDocs ) + docSource, docGenerationCommands = locateDocs( os.path.join( "doc", "source" ), docCommandEnv ) + docs = docEnv.Command( os.path.join( "$BUILD_DIR", "doc", "gaffer", "html", "index.html" ), docSource, buildDocs ) # SCons doesn't know about the assorted outputs of sphinx, so only index.html ends up in the cache docEnv.NoCache( docs ) docEnv.Depends( docGenerationCommands, docGraphicsCommands ) docEnv.Depends( docs, docGraphicsCommands ) docEnv.Depends( docs, "build" ) - docVars = docCommandEnv.Command( "doc/source/gafferVars.json", "doc/source/gafferVars.py", generateDocs ) + docVars = docCommandEnv.Command( os.path.join( "doc", "source", "gafferVars.json" ), os.path.join( "doc", "source", "gafferVars.py" ), generateDocs ) docEnv.Depends( docs, docVars ) if resources is not None : docEnv.Depends( docs, resources ) @@ -1719,12 +1789,16 @@ else : exampleFiles = [] for ext in ( 'gfr', 'grf', 'png' ) : - exampleFiles += glob.glob( "doc/examples/*.%s" % ext ) - exampleFiles += glob.glob( "doc/examples/*/*.%s" % ext ) - exampleFiles += glob.glob( "doc/examples/*/*/*.%s" % ext ) + exampleFiles += glob.glob( os.path.join( "doc", "examples", "*.%s" % ext ) ) + exampleFiles += glob.glob( os.path.join( "doc", "examples", "*", "*.%s" % ext ) ) + exampleFiles += glob.glob( os.path.join( "doc", "examples", "*", "*", "*.%s" % ext ) ) for f in exampleFiles : - fileInstall = env.Command( f.replace( "doc/", "$BUILD_DIR/resources/", 1 ), f, Copy( "$TARGET", "$SOURCE" ) ) + fileInstall = env.Command( + f.replace( "doc" + os.path.sep, os.path.join( "$BUILD_DIR", "resources" ) + os.path.sep, 1 ), + f, + Copy( "$TARGET", "$SOURCE" ) + ) env.Alias( "build", fileInstall ) ######################################################################################################### @@ -1739,15 +1813,15 @@ if env.subst( "$PACKAGE_FILE" ).endswith( ".dmg" ) : # if the packaging will make a disk image, then build an os x app bundle - install = env.Command( "$INSTALL_DIR/Gaffer.app/Contents/Resources", "$BUILD_DIR", installer ) + install = env.Command( os.path.join( "$INSTALL_DIR", "Gaffer.app", "Contents", "Resources" ), "$BUILD_DIR", installer ) env.AlwaysBuild( install ) env.NoCache( install ) env.Alias( "install", install ) - plistInstall = env.Install( "$INSTALL_DIR/Gaffer.app/Contents", "resources/Info.plist" ) + plistInstall = env.Install( os.path.join( "$INSTALL_DIR", "Gaffer.app", "Contents" ), os.path.join( "resources", "Info.plist" ) ) env.Alias( "install", plistInstall ) - gafferLink = env.Command( "$INSTALL_DIR/Gaffer.app/Contents/MacOS/gaffer", "", "ln -s ../Resources/bin/gaffer $TARGET" ) + gafferLink = env.Command( os.path.join( "$INSTALL_DIR", "Gaffer.app", "Contents", "MacOS", "gaffer" ), "", "ln -s " + os.path.join("..", "Resources", "bin", "gaffer $TARGET" ) ) env.Alias( "install", gafferLink ) else : From 0be86db58762fe890599e799d02878caef3db94d Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Fri, 19 Feb 2021 11:35:52 -0500 Subject: [PATCH 218/243] SConstruct : Copy git symlinks' target to source on Windows during build --- SConstruct | 62 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/SConstruct b/SConstruct index 53d89bb7cb2..25fc42e49c6 100644 --- a/SConstruct +++ b/SConstruct @@ -1209,6 +1209,40 @@ for library in ( "GafferUI", ) : if int( env["QT_VERSION"] ) > 4 : addQtLibrary( library, "Widgets" ) +######################################################################################################### +# Repair Symlinks on Windows +######################################################################################################### + +# Windows does not support symlinks except with special (non-default) privileges. +# When cloning the repository git will create symlink source files as a text +# file with the symlink target as its content. 'fileOrigin' is a dictionary of the form +# fileSource: fileTarget used by installers to check for overriding the file's origin. + +fileOrigin = {} + +if env["PLATFORM"] == "win32" : + + fileList = runCommand( "git ls-files -s" ) + + for file in fileList.split( '\n' ) : + fileInfo = file.split() + if len( fileInfo ) == 4 or len( fileInfo ) == 5: + # ls-files output format: [ ] + # The magic code for symlinks in git is 120000 + fileMode = fileInfo[1] if len( fileInfo ) == 5 else fileInfo[0] + filePath = fileInfo[4] if len( fileInfo ) == 5 else fileInfo[3] + filePath = filePath.replace( "/", "\\" ) # filePath comes in from git with / + if fileMode == "120000" and os.path.exists( filePath ): + with open( filePath, "r" ) as f : + fileOrigin[ + os.path.join( env.subst( "$BUILD_DIR" ), filePath ) + ] = os.path.abspath( + os.path.join( + os.path.dirname( filePath ), + f.readline().replace( "/", "\\" ) + ) + ) + ############################################################################################### # The stuff that actually builds the libraries and python modules ############################################################################################### @@ -1357,14 +1391,24 @@ for libraryName, libraryDef in libraries.items() : # apps for app in libraryDef.get( "apps", [] ) : - appInstall = env.InstallAs("$BUILD_DIR/apps/{app}/{app}-1.py".format( app=app ), "apps/{app}/{app}-1.py".format( app=app ) ) + destinationFile = env.subst( os.path.join( "$BUILD_DIR", "apps", app, "{app}-1.py".format( app=app ) ) ) + appInstall = env.InstallAs( + destinationFile, + fileOrigin.get(destinationFile, os.path.join( "apps", app, "{app}-1.py".format( app=app ) ) ) + ) env.Alias( "build", appInstall ) # startup files for startupDir in libraryDef.get( "apps", [] ) + [ libraryName ] : - for startupFile in glob.glob( "startup/{startupDir}/*.py".format( startupDir=startupDir ) ) : - startupFileInstall = env.InstallAs( "$BUILD_DIR/" + startupFile, startupFile ) + for startupFile in glob.glob( + os.path.join( "startup", "{startupDir}".format( startupDir=startupDir ), "*.py" ) + ) : + destinationFile = env.subst( os.path.join( "$BUILD_DIR", startupFile ) ) + startupFileInstall = env.InstallAs( + destinationFile, + fileOrigin.get( destinationFile, startupFile ) + ) env.Alias( "build", startupFileInstall ) # additional files @@ -1372,13 +1416,21 @@ for libraryName, libraryDef in libraries.items() : for additionalFile in libraryDef.get( "additionalFiles", [] ) : if additionalFile in pythonFiles : continue - additionalFileInstall = env.InstallAs( os.path.join( "$BUILD_DIR", additionalFile ), additionalFile ) + destinationFile = env.subst( os.path.join( "$BUILD_DIR", additionalFile ) ) + additionalFileInstall = env.InstallAs( + destinationFile, + fileOrigin.get( destinationFile, additionalFile) + ) env.Alias( "build", additionalFileInstall ) # osl headers for oslHeader in libraryDef.get( "oslHeaders", [] ) : - oslHeaderInstall = env.InstallAs( os.path.join( "$BUILD_DIR", oslHeader ), oslHeader ) + destinationFile = env.subst( os.path.join( "$BUILD_DIR", oslHeader ) ) + oslHeaderInstall = env.InstallAs( + destinationFile, + fileOrigin.get( destinationFile, oslHeader ) + ) env.Alias( "oslHeaders", oslHeaderInstall ) env.Alias( "build", oslHeaderInstall ) From dc468c5fae05366efab7540cc5947ebf1fd64401 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 4 Mar 2021 14:04:26 -0500 Subject: [PATCH 219/243] Instancer : Add symbol export --- include/GafferScene/Instancer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/GafferScene/Instancer.h b/include/GafferScene/Instancer.h index de98404282f..6a1a2189682 100644 --- a/include/GafferScene/Instancer.h +++ b/include/GafferScene/Instancer.h @@ -53,7 +53,7 @@ class GAFFERSCENE_API Instancer : public BranchCreator /// Compound plug for representing an image format in a way /// easily edited by users, with individual child plugs for /// each aspect of the format. - class ContextVariablePlug : public Gaffer::ValuePlug + class GAFFERSCENE_API ContextVariablePlug : public Gaffer::ValuePlug { public : From 6ceffe55513d8367caf0258e3e279029ec5f3699 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 24 Mar 2021 17:04:41 -0400 Subject: [PATCH 220/243] SConstruct : update for running from Python 3 --- SConstruct | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SConstruct b/SConstruct index 25fc42e49c6..048a489eec9 100644 --- a/SConstruct +++ b/SConstruct @@ -700,7 +700,7 @@ def runCommand( command ) : command = commandEnv.subst( command ) sys.stderr.write( command + "\n" ) - return subprocess.check_output( command, shell=True, env=commandEnv["ENV"] ) + return subprocess.check_output( command, shell=True, env=commandEnv["ENV"] ).decode() ############################################################################################### # The basic environment for building libraries @@ -763,13 +763,13 @@ basePythonEnv = baseLibEnv.Clone() basePythonEnv["PYTHON_VERSION"] = subprocess.check_output( [ "python", "-c", "import sys; print( '{}.{}'.format( *sys.version_info[:2] ) )" ], env=commandEnv["ENV"] -).strip() +).decode().strip() basePythonEnv["PYTHON_ABI_VERSION"] = basePythonEnv["PYTHON_VERSION"] basePythonEnv["PYTHON_ABI_VERSION"] += subprocess.check_output( [ "python", "-c", "import sysconfig; print( sysconfig.get_config_var( 'abiflags' ) or '' )" ], env=commandEnv["ENV"] -).strip() +).decode().strip() basePythonEnv["BOOST_PYTHON_LIB_SUFFIX"] = "" if ( int( basePythonEnv["BOOST_MAJOR_VERSION"] ), int( basePythonEnv["BOOST_MINOR_VERSION"] ) ) >= ( 1, 67 ) : @@ -800,7 +800,7 @@ if basePythonEnv["PLATFORM"]=="darwin" : else : basePythonEnv.Append( - CPPPATH = [ os.path.join( "$BUILD_DIR", "include", "python$PYTHON_ABI_VERSION" ) ] + LIBPATH = [ os.path.join( "$BUILD_DIR", "libs" ) ] ) ############################################################################################### From 757356e85d6b95ec4d234ca8c37cb6bec91d4e73 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 24 Mar 2021 18:51:50 -0400 Subject: [PATCH 221/243] GafferSceneUI : fix utf-8 errors on Windows There seems to be an encoding mismatch when importing Python files with certain utf-8 characters where the files are assumed to have cp1252 encoding which can't convert some characters to utf-8. Even forcing the file to be saved as utf-8 does not fix the problem. Replacing "real" utf-8 characters (wysiwyg in a text editor) with the equivalent utf-8 code solves this. --- python/GafferSceneUI/CameraUI.py | 22 +++++++++++----------- python/GafferSceneUI/StandardOptionsUI.py | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/python/GafferSceneUI/CameraUI.py b/python/GafferSceneUI/CameraUI.py index 000e4ef508d..4663203c49c 100644 --- a/python/GafferSceneUI/CameraUI.py +++ b/python/GafferSceneUI/CameraUI.py @@ -169,17 +169,17 @@ "layout:visibilityActivator", "perspectiveModeFocalLength", - "preset:Academy 35mm 21.946 × 16.000", imath.V2f( 21.946, 16 ), - "preset:Super 35mm 24.892 × 18.669", imath.V2f( 24.892, 18.669 ), - "preset:Micro Four Thirds 17.30 × 13.00", imath.V2f( 17.3, 13 ), - "preset:APS-C 22.30 × 14.90", imath.V2f( 22.3, 14.9 ), - "preset:Full Frame 35mm 36.00 × 24.00", imath.V2f( 36, 24 ), - "preset:Alexa SXT 4:3 2.8k 23.76 × 17.82", imath.V2f( 23.76, 17.82 ), - "preset:Alexa SXT Open Gate 3.4k 28.25 × 18.17", imath.V2f( 28.25, 18.17 ), - "preset:Alexa 65 16:9 5.1k 42.24 × 23.76", imath.V2f( 42.24, 23.76 ), - "preset:Alexa 65 Open Gate 6.5k 54.12 × 25.58", imath.V2f( 54.12, 25.58 ), - "preset:RED EPIC-W 5K S35 30.72 × 18.00", imath.V2f( 30.72, 18 ), - "preset:RED EPIC-W 8K S35 29.90 × 15.77", imath.V2f( 29.9, 15.77 ), + "preset:Academy 35mm 21.946 \u00D7 16.000", imath.V2f( 21.946, 16 ), + "preset:Super 35mm 24.892 \u00D7 18.669", imath.V2f( 24.892, 18.669 ), + "preset:Micro Four Thirds 17.30 \u00D7 13.00", imath.V2f( 17.3, 13 ), + "preset:APS-C 22.30 \u00D7 14.90", imath.V2f( 22.3, 14.9 ), + "preset:Full Frame 35mm 36.00 \u00D7 24.00", imath.V2f( 36, 24 ), + "preset:Alexa SXT 4:3 2.8k 23.76 \u00D7 17.82", imath.V2f( 23.76, 17.82 ), + "preset:Alexa SXT Open Gate 3.4k 28.25 \u00D7 18.17", imath.V2f( 28.25, 18.17 ), + "preset:Alexa 65 16:9 5.1k 42.24 \u00D7 23.76", imath.V2f( 42.24, 23.76 ), + "preset:Alexa 65 Open Gate 6.5k 54.12 \u00D7 25.58", imath.V2f( 54.12, 25.58 ), + "preset:RED EPIC-W 5K S35 30.72 \u00D7 18.00", imath.V2f( 30.72, 18 ), + "preset:RED EPIC-W 8K S35 29.90 \u00D7 15.77", imath.V2f( 29.9, 15.77 ), "presetsPlugValueWidget:allowCustom", True, diff --git a/python/GafferSceneUI/StandardOptionsUI.py b/python/GafferSceneUI/StandardOptionsUI.py index ecb220f4739..d7f26b394b3 100644 --- a/python/GafferSceneUI/StandardOptionsUI.py +++ b/python/GafferSceneUI/StandardOptionsUI.py @@ -254,7 +254,7 @@ def __statisticsSummary( plug ) : sides of the rendered image. Overscan can be useful when camera shake or blur will be added - as a post-process. This plug just enables overscan as a whole – + as a post-process. This plug just enables overscan as a whole \u2013 use the _Overscan Top_, _Overscan Bottom_, _Overscan Left_ and _Overscan Right_ plugs to specify the amount of overscan on each side of the image. From 15bd37d2c1c9c060b7bdc679a055404f913b2da7 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 24 Mar 2021 18:54:29 -0400 Subject: [PATCH 222/243] ScriptNodeBinding : remove AST processing in tolerantExec - AST is not available on Windows without a patched, customized Python build. - This comes from the experimental implementation in https://github.com/johnhaddon/gaffer/commit/c817cf623744d91eea3c56a2ae21c0247ecd5058 - Note that it introduces a performance regression for loading scripts vs. the AST implementation. --- python/GafferTest/ScriptNodeTest.py | 2 +- src/GafferModule/ScriptNodeBinding.cpp | 114 ++++--------------------- 2 files changed, 19 insertions(+), 97 deletions(-) diff --git a/python/GafferTest/ScriptNodeTest.py b/python/GafferTest/ScriptNodeTest.py index 7dd9da2c0a2..f234fa361a5 100644 --- a/python/GafferTest/ScriptNodeTest.py +++ b/python/GafferTest/ScriptNodeTest.py @@ -1095,7 +1095,7 @@ def testErrorTolerantExecution( self ) : s["n"] = GafferTest.AddNode() with IECore.CapturingMessageHandler() as c : - s.execute( 'parent["n"]["op1"].setValue( 101 )\niWillFail(); parent["n"]["op2"].setValue( 102 )', continueOnError=True ) + s.execute( 'parent["n"]["op1"].setValue( 101 )\niWillFail()\nparent["n"]["op2"].setValue( 102 )', continueOnError=True ) self.assertEqual( s["n"]["op1"].getValue(), 101 ) self.assertEqual( s["n"]["op2"].getValue(), 102 ) diff --git a/src/GafferModule/ScriptNodeBinding.cpp b/src/GafferModule/ScriptNodeBinding.cpp index d3fea12d300..4a0184830cf 100644 --- a/src/GafferModule/ScriptNodeBinding.cpp +++ b/src/GafferModule/ScriptNodeBinding.cpp @@ -56,52 +56,19 @@ #include "IECore/MessageHandler.h" +#include "boost/algorithm/string/classification.hpp" +#include "boost/algorithm/string/find_iterator.hpp" #include "boost/algorithm/string/replace.hpp" #include "boost/lexical_cast.hpp" #include "boost/regex.hpp" #include +using namespace std; +using namespace boost; using namespace Gaffer; using namespace GafferBindings; -////////////////////////////////////////////////////////////////////////// -// Access to Python AST -////////////////////////////////////////////////////////////////////////// - -extern "C" -{ - -// Essential to include this last, since it defines macros which -// clash with other headers. -#include "Python-ast.h" - -#if PY_MAJOR_VERSION >= 3 -/// \todo The already esoteric AST API appears to be even more obscure -/// in Python 3, and it has never been available on Windows. We would do -/// well to avoid it entirely. One simple alternative is implemented in -/// https://github.com/johnhaddon/gaffer/tree/simpleTolerantExec, but -/// initial benchmarking suggested that performance was worse. -#include "asdl.h" -#undef arg -#define asdl_seq_new _Py_asdl_seq_new -#endif - -}; - -namespace boost { -namespace python { - -// Specialisation to allow use of handle -template<> -struct base_type_traits -{ - typedef PyObject type; -}; - -} // namespace python -} // namespace boost - ////////////////////////////////////////////////////////////////////////// // Serialisation ////////////////////////////////////////////////////////////////////////// @@ -122,75 +89,30 @@ const std::string formattedErrorContext( int lineNumber, const std::string &cont // Execute the script one top level statement at a time, // reporting errors that occur, but otherwise continuing // with execution. -bool tolerantExec( const char *pythonScript, boost::python::object globals, boost::python::object locals, const std::string &context ) +bool tolerantExec( const string &pythonScript, boost::python::object globals, boost::python::object locals, const std::string &context ) { - // The python parsing framework uses an arena to simplify memory allocation, - // which is handy for us, since we're going to manipulate the AST a little. - std::unique_ptr arena( PyArena_New(), PyArena_Free ); - - // Parse the whole script, getting an abstract syntax tree for a - // module which would execute everything. - mod_ty mod = PyParser_ASTFromString( - pythonScript, - "", - Py_file_input, - nullptr, - arena.get() - ); - - if( !mod ) - { - int lineNumber = 0; - std::string message = IECorePython::ExceptionAlgo::formatPythonException( /* withTraceback = */ false, &lineNumber ); - IECore::msg( IECore::Msg::Error, formattedErrorContext( lineNumber, context ), message ); - return false; - } - const IECore::Canceller *canceller = Context::current()->canceller(); IECore::Canceller::check( canceller ); - assert( mod->kind == Module_kind ); - - // Loop over the top-level statements in the module body, - // executing one at a time. bool result = false; - int numStatements = asdl_seq_LEN( mod->v.Module.body ); - for( int i=0; i() ) { IECore::Canceller::check( canceller ); - - // Make a new module containing just this one statement. - asdl_seq *newBody = asdl_seq_new( 1, arena.get() ); - asdl_seq_SET( newBody, 0, asdl_seq_GET( mod->v.Module.body, i ) ); - mod_ty newModule = Module( - newBody, - arena.get() - ); - - // Compile it. - boost::python::handle code( PyAST_Compile( newModule, "", nullptr, arena.get() ) ); - - // And execute it. - boost::python::handle<> v( boost::python::allow_null( - PyEval_EvalCode( -#if PY_MAJOR_VERSION >= 3 - (PyObject *)code.get(), -#else - code.get(), -#endif - globals.ptr(), - locals.ptr() - ) - ) ); - - // Report any errors. - if( v == nullptr) + + const string line( it->begin(), it->end() ); + try + { + exec( line.c_str(), globals, locals ); + } + catch( const boost::python::error_already_set &e ) { - int lineNumber = 0; - std::string message = IECorePython::ExceptionAlgo::formatPythonException( /* withTraceback = */ false, &lineNumber ); + const string message = IECorePython::ExceptionAlgo::formatPythonException( /* withTraceback = */ false ); IECore::msg( IECore::Msg::Error, formattedErrorContext( lineNumber, context ), message ); result = true; } + ++it; ++lineNumber; } return result; @@ -342,7 +264,7 @@ bool execute( ScriptNode *script, const std::string &serialisation, Node *parent } else { - result = tolerantExec( toExecute.c_str(), e, e, context ); + result = tolerantExec( toExecute, e, e, context ); } } catch( boost::python::error_already_set &e ) From d39b3086889e810e8bce541151e1d407be0ce7ad Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Wed, 24 Mar 2021 18:55:01 -0400 Subject: [PATCH 223/243] Spreadsheet : fix digression from HQ during rebase --- include/Gaffer/Spreadsheet.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Gaffer/Spreadsheet.h b/include/Gaffer/Spreadsheet.h index 5489f73e1f3..60f87f80101 100644 --- a/include/Gaffer/Spreadsheet.h +++ b/include/Gaffer/Spreadsheet.h @@ -76,7 +76,7 @@ class GAFFER_API Spreadsheet : public ComputeNode public : RowsPlug( const std::string &name = defaultName(), Direction direction = In, unsigned flags = Default ); - virtual ~RowsPlug(); + ~RowsPlug() override; GAFFER_PLUG_DECLARE_TYPE( Gaffer::Spreadsheet::RowsPlug, Gaffer::SpreadsheetRowsPlugTypeId, Gaffer::ValuePlug ); From a158dfafce3cdaaf44643ef99b4b4130dd45cb62 Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Thu, 25 Mar 2021 13:31:49 -0400 Subject: [PATCH 224/243] GafferUI : fix deprecated regex string --- startup/GafferUI/layoutCompatibility.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup/GafferUI/layoutCompatibility.py b/startup/GafferUI/layoutCompatibility.py index f51e129b1dd..e3319c0bdba 100644 --- a/startup/GafferUI/layoutCompatibility.py +++ b/startup/GafferUI/layoutCompatibility.py @@ -64,7 +64,7 @@ def __create( self, name, scriptNode ) : # first try to import the modules the layout needs contextDict = { "scriptNode" : scriptNode, "imath" : imath } imported = set() - classNameRegex = re.compile( "[a-zA-Z]*Gaffer[^(,]*\(" ) + classNameRegex = re.compile( r"[a-zA-Z]*Gaffer[^(,]*\(" ) for className in classNameRegex.findall( layout.repr ) : moduleName = className.partition( "." )[0] if moduleName not in imported : From d05c3ed48f923f1d4090f11b6894b457771bc13c Mon Sep 17 00:00:00 2001 From: Eric Mehl Date: Tue, 30 Mar 2021 15:46:20 -0400 Subject: [PATCH 225/243] Revert "Gaffer Windows 0.59.6.0 and Python 3" --- .gitignore | 22 - Changes.md | 2 +- SConstruct | 655 +++++------------- apps/stats/stats-1.py | 9 +- appveyor.yml | 93 --- bin/gaffer.bat | 106 --- contrib/cmake/CMakeLists.txt | 252 +++---- contrib/cmake/buildGafferWindows.bat | 37 - contrib/cmake/cmake/FindCortex.cmake | 9 - contrib/cmake/jom/changelog.txt | 185 ----- contrib/cmake/jom/ibjom.bat | 5 - contrib/cmake/jom/jom.exe | Bin 2654208 -> 0 bytes contrib/cmake/jom/xgejom.bat | 6 - contrib/cmake/jom/xgejom.xml | 13 - .../generate.py | 31 - .../generate.sh | 32 + .../ControlsAndShortcuts/generate.py | 6 - .../WorkingWithScenes/Camera/generate.py | 16 - .../WorkingWithScenes/Camera/generate.sh | 16 + .../BoxNode/generate.py | 12 - .../BoxNode/generate.sh | 12 + .../TutorialUsingTheOSLCodeNode/generate.py | 6 - .../TutorialUsingTheOSLCodeNode/generate.sh | 6 + .../ThePythonEditor/generate.py | 12 - .../ThePythonEditor/generate.sh | 12 + .../generate.py | 10 - .../generate.sh | 10 + .../TutorialStartupConfig1/generate.py | 7 - .../TutorialStartupConfig1/generate.sh | 7 + .../TutorialStartupConfig2/generate.py | 8 - .../TutorialStartupConfig2/generate.sh | 8 + doc/source/generate.py | 8 - doc/source/generate.sh | 8 + include/Gaffer/Animation.h | 4 +- include/Gaffer/ArrayPlug.h | 2 +- include/Gaffer/Container.h | 2 +- include/Gaffer/Context.h | 4 +- include/Gaffer/ContextAlgo.h | 2 +- include/Gaffer/ContextMonitor.h | 2 +- include/Gaffer/Expression.h | 2 +- include/Gaffer/FileSystemPath.h | 8 - include/Gaffer/FileSystemPathPlug.h | 113 --- include/Gaffer/Monitor.h | 2 +- include/Gaffer/Path.h | 5 +- include/Gaffer/PerformanceMonitor.h | 2 +- include/Gaffer/Process.h | 2 - include/Gaffer/ScriptNode.h | 6 +- include/Gaffer/Spreadsheet.h | 8 +- include/Gaffer/StringPlug.h | 2 +- include/Gaffer/ThreadState.h | 2 +- include/Gaffer/TypeIds.h | 1 - include/Gaffer/TypedObjectPlug.h | 2 +- include/GafferArnold/ArnoldAtmosphere.h | 2 +- include/GafferArnold/ArnoldBackground.h | 2 +- include/GafferArnold/ArnoldColorManager.h | 2 +- include/GafferArnold/ArnoldMeshLight.h | 2 - include/GafferBindings/DataBinding.h | 2 - .../MatchPatternPathFilterBinding.h | 49 -- include/GafferBindings/MetadataBinding.h | 2 - include/GafferBindings/ReferenceBinding.h | 49 -- include/GafferBindings/Serialisation.h | 2 +- include/GafferBindings/SignalBinding.inl | 2 - .../GafferBindings/TypedObjectPlugBinding.inl | 3 +- include/GafferCortex/ExecutableOpHolder.h | 1 - include/GafferCortex/OpHolder.h | 1 - include/GafferCortex/ParameterHandler.h | 4 - include/GafferCortex/ParameterisedHolder.h | 2 +- include/GafferCortexBindings/Export.h | 51 -- .../IECoreDelightPreview/NodeAlgo.h | 14 +- .../IECoreDelightPreview/ParameterList.h | 6 +- include/GafferDispatch/Dispatcher.h | 7 +- include/GafferDispatch/TaskNode.h | 4 +- include/GafferDispatchBindings/Export.h | 51 -- include/GafferImage/BufferAlgo.h | 2 +- include/GafferImage/BufferAlgo.inl | 1 - include/GafferImage/Catalogue.h | 11 +- include/GafferImage/ColorSpace.h | 1 - include/GafferImage/CopyImageMetadata.h | 1 - include/GafferImage/Dilate.h | 1 - include/GafferImage/Erode.h | 1 - include/GafferImage/FilterAlgo.h | 4 +- include/GafferImage/FlatImageProcessor.h | 2 +- include/GafferImage/Format.h | 4 - include/GafferImage/ImageAlgo.h | 4 - include/GafferImage/ImagePlug.h | 4 +- include/GafferImage/ImageProcessor.h | 5 +- include/GafferImage/ImageReader.h | 5 +- include/GafferImage/ImageTransform.h | 1 - include/GafferImage/ImageWriter.h | 5 +- include/GafferImage/LUT.h | 6 +- include/GafferImage/Median.h | 1 - include/GafferImage/OpenImageIOReader.h | 5 +- include/GafferImage/Shuffle.h | 2 +- include/GafferImage/Text.h | 11 +- include/GafferImage/VectorWarp.h | 1 - include/GafferImageBindings/Export.h | 51 -- .../ImageProcessorBinding.h | 49 -- include/GafferImageBindings/ResampleBinding.h | 49 -- include/GafferImageBindings/ResizeBinding.h | 49 -- include/GafferImageBindings/ShuffleBinding.h | 49 -- include/GafferImageTest/ContextSanitiser.h | 4 +- include/GafferImageTest/Export.h | 51 -- include/GafferImageUI/ImageGadget.h | 2 - include/GafferImageUIBindings/Export.h | 51 -- include/GafferOSL/OSLCode.h | 1 - include/GafferRenderMan/Export.h | 51 -- include/GafferScene/AimConstraint.h | 1 - include/GafferScene/AlembicSource.h | 109 --- include/GafferScene/AttributeProcessor.h | 10 +- include/GafferScene/Camera.h | 2 - include/GafferScene/ClippingPlane.h | 1 - include/GafferScene/CollectScenes.h | 1 - include/GafferScene/Constraint.h | 1 - include/GafferScene/CoordinateSystem.h | 1 - include/GafferScene/CustomAttributes.h | 1 - include/GafferScene/Deformer.h | 2 +- include/GafferScene/DeleteAttributes.h | 1 - include/GafferScene/DeleteCurves.h | 1 - include/GafferScene/DeleteFaces.h | 1 - include/GafferScene/DeleteGlobals.h | 1 - include/GafferScene/DeleteOptions.h | 1 - include/GafferScene/DeleteOutputs.h | 1 - include/GafferScene/DeletePoints.h | 1 - .../GafferScene/DeletePrimitiveVariables.h | 1 - include/GafferScene/DeleteSets.h | 1 - include/GafferScene/Encapsulate.h | 1 - include/GafferScene/ExternalProcedural.h | 5 +- include/GafferScene/FilterPlug.h | 2 +- include/GafferScene/FilterProcessor.h | 3 +- include/GafferScene/FreezeTransform.h | 1 - include/GafferScene/GlobalsProcessor.h | 1 - include/GafferScene/Group.h | 1 - include/GafferScene/Instancer.h | 3 +- include/GafferScene/Isolate.h | 1 - include/GafferScene/Light.h | 1 - include/GafferScene/LightToCamera.h | 1 - include/GafferScene/MapOffset.h | 1 - include/GafferScene/MapProjection.h | 1 - include/GafferScene/MeshTangents.h | 1 - include/GafferScene/MeshToPoints.h | 1 - include/GafferScene/MeshType.h | 1 - include/GafferScene/ObjectProcessor.h | 2 +- include/GafferScene/ObjectToScene.h | 1 - include/GafferScene/OpenGLAttributes.h | 1 - include/GafferScene/OpenGLRender.h | 1 - include/GafferScene/OpenGLShader.h | 1 - include/GafferScene/Parent.h | 1 - include/GafferScene/PathMatcher.h | 337 --------- include/GafferScene/PointConstraint.h | 1 - include/GafferScene/PointsType.h | 2 - .../GafferScene/Preview/InteractiveRender.h | 148 ---- include/GafferScene/Preview/RendererAlgo.h | 128 ---- .../IECoreScenePreview/CapturingRenderer.h | 6 +- .../Private/IECoreScenePreview/Geometry.h | 4 +- .../Private/IECoreScenePreview/Procedural.h | 4 +- .../Private/IECoreScenePreview/Renderer.h | 10 +- include/GafferScene/Prune.h | 1 - include/GafferScene/Render.h | 5 +- .../GafferScene/ResamplePrimitiveVariables.h | 1 - include/GafferScene/SceneElementProcessor.h | 1 - include/GafferScene/ScenePlug.h | 8 +- include/GafferScene/SceneProcedural.h | 157 ----- include/GafferScene/SceneProcessor.h | 5 +- include/GafferScene/SceneReader.h | 5 +- include/GafferScene/SceneWriter.h | 5 +- include/GafferScene/Seeds.h | 1 - include/GafferScene/ShaderAssignment.h | 1 - include/GafferScene/StandardAttributes.h | 1 - include/GafferScene/StandardOptions.h | 1 - include/GafferScene/SubTree.h | 1 - include/GafferScene/Text.h | 12 +- include/GafferScene/UnionFilter.h | 1 - include/GafferSceneBindings/Export.h | 51 -- .../GafferSceneBindings/MeshToPointsBinding.h | 49 -- .../SceneFilterPathFilterBinding.h | 49 -- .../SceneProcessorBinding.h | 49 -- .../GafferSceneBindings/SceneReaderBinding.h | 49 -- include/GafferSceneTest/ContextSanitiser.h | 4 +- include/GafferSceneUI/SourceSet.h | 3 +- include/GafferSceneUI/TransformTool.h | 2 +- include/GafferSceneUI/UVView.h | 5 +- include/GafferSceneUIBindings/Export.h | 51 -- include/GafferUI/ButtonEvent.h | 1 - include/GafferUI/ContainerGadget.h | 1 - include/GafferUI/DragDropEvent.h | 1 - include/GafferUI/Frame.h | 1 - include/GafferUI/GraphGadget.h | 12 +- include/GafferUI/Handle.h | 5 +- include/GafferUI/ImageGadget.h | 6 - include/GafferUI/IndividualContainer.h | 1 - include/GafferUI/KeyEvent.h | 1 - include/GafferUI/LinearContainer.h | 1 - include/GafferUI/ModifiableEvent.h | 1 - include/GafferUI/NameGadget.h | 1 - include/GafferUI/NodeGadget.h | 1 - include/GafferUI/PlugGadget.h | 1 - include/GafferUI/Pointer.h | 2 - include/GafferUI/RenderableGadget.h | 157 ----- include/GafferUI/RotateHandle.h | 1 - include/GafferUI/ScaleHandle.h | 1 - include/GafferUI/SpacerGadget.h | 1 - include/GafferUI/SplinePlugGadget.h | 109 --- include/GafferUI/StandardGraphLayout.h | 1 - include/GafferUI/TextGadget.h | 1 - include/GafferUI/TranslateHandle.h | 1 - include/GafferUI/ViewportGadget.h | 4 +- include/GafferUIBindings/Export.h | 51 -- .../GafferUIBindings/ModifiableEventBinding.h | 49 -- .../RenderableGadgetBinding.h | 49 -- .../SplinePlugGadgetBinding.h | 49 -- .../StandardNodeGadgetBinding.h | 49 -- include/GafferVDB/SphereLevelSet.h | 4 +- include/GafferVDB/VDBObject.h | 134 ---- .../AppleseedRenderTest.py | 6 +- python/GafferAppleseedTest/AppleseedTest.py | 6 +- python/GafferAppleseedUI/ShaderMenu.py | 2 +- python/GafferArnold/__init__.py | 12 +- python/GafferArnoldTest/ArnoldRenderTest.py | 6 +- python/GafferArnoldTest/ArnoldShaderTest.py | 6 +- python/GafferArnoldUI/ArnoldShaderUI.py | 2 +- python/GafferArnoldUI/ShaderMenu.py | 2 +- python/GafferDispatch/LocalDispatcher.py | 16 +- python/GafferDispatch/SystemCommand.py | 6 +- .../DispatchApplicationTest.py | 6 +- .../ExecuteApplicationTest.py | 6 +- .../StatsApplicationTest.py | 7 +- .../GafferDispatchTest/SystemCommandTest.py | 6 +- python/GafferImageTest/ColorSpaceTest.py | 6 +- python/GafferImageTest/DisplayTest.py | 6 +- .../GafferImageTest/DisplayTransformTest.py | 6 +- python/GafferImageTest/ImageReaderTest.py | 14 +- python/GafferImageTest/ImageWriterTest.py | 42 +- python/GafferOSLTest/OSLTestCase.py | 8 +- python/GafferSceneUI/CameraUI.py | 22 +- python/GafferSceneUI/ShaderUI.py | 14 +- python/GafferSceneUI/StandardOptionsUI.py | 2 +- python/GafferTest/ApplicationTest.py | 6 +- python/GafferTest/FileSystemPathInOutNode.py | 75 -- python/GafferTest/FileSystemPathPlugTest.py | 399 ----------- python/GafferTest/FileSystemPathTest.py | 143 +--- python/GafferTest/PythonApplicationTest.py | 6 +- python/GafferTest/ScriptNodeTest.py | 73 +- python/GafferTest/StatsApplicationTest.py | 7 +- python/GafferTest/__init__.py | 2 - python/GafferUI/ApplicationMenu.py | 2 +- python/GafferUI/Backups.py | 10 +- python/GafferUI/DocumentationAlgo.py | 7 +- .../GafferUI/FileSystemPathPlugValueWidget.py | 2 - python/GafferUI/GLWidget.py | 6 +- python/GafferUI/NodeUI.py | 2 +- python/GafferUI/PathChooserDialogue.py | 4 +- python/GafferUI/PathChooserWidget.py | 4 +- python/GafferUI/UserPlugs.py | 1 - python/GafferUI/_StyleSheet.py | 2 +- python/GafferVDBTest/VDBTestCase.py | 6 +- src/Gaffer/Context.cpp | 1 - src/Gaffer/FileSystemPath.cpp | 225 +----- src/Gaffer/FileSystemPathPlug.cpp | 188 ----- src/Gaffer/NameSwitch.cpp | 2 +- src/Gaffer/Path.cpp | 12 - src/Gaffer/ScriptNode.cpp | 26 +- src/Gaffer/Switch.cpp | 2 +- .../IECoreArnoldPreview/Renderer.cpp | 2 +- src/GafferArnoldUI/ArnoldLightVisualiser.cpp | 8 +- src/GafferArnoldUI/BarndoorVisualiser.cpp | 39 +- src/GafferArnoldUI/DecayVisualiser.cpp | 69 +- src/GafferArnoldUI/Export.h | 46 -- src/GafferArnoldUI/GoboVisualiser.cpp | 11 +- src/GafferArnoldUI/LightBlockerVisualiser.cpp | 8 +- src/GafferBindings/SignalBinding.cpp | 4 +- src/GafferDispatch/Dispatcher.cpp | 15 +- src/GafferImage/Catalogue.cpp | 40 +- src/GafferImage/FormatData.cpp | 7 +- src/GafferImage/ImageReader.cpp | 11 +- src/GafferImage/ImageWriter.cpp | 29 +- src/GafferImage/LUT.cpp | 12 +- src/GafferImage/OpenImageIOReader.cpp | 17 +- src/GafferImage/Text.cpp | 11 +- src/GafferImageModule/CatalogueBinding.cpp | 2 +- src/GafferImageModule/CoreBinding.cpp | 10 +- src/GafferImageModule/FilterAlgoBinding.cpp | 4 +- .../ImageProcessorBinding.cpp | 8 +- src/GafferImageUI/ImageView.cpp | 2 +- src/GafferModule/ArrayPlugBinding.cpp | 4 +- .../FileSystemPathPlugBinding.cpp | 153 ---- src/GafferModule/FileSystemPathPlugBinding.h | 47 -- src/GafferModule/GafferModule.cpp | 7 - src/GafferModule/PathBinding.cpp | 1 - src/GafferModule/ScriptNodeBinding.cpp | 114 ++- src/GafferOSL/OSLCode.cpp | 13 +- src/GafferOSL/OSLExpressionEngine.cpp | 12 +- src/GafferOSLModule/GafferOSLModule.cpp | 10 +- src/GafferScene/ExternalProcedural.cpp | 12 +- src/GafferScene/InteractiveRender.cpp | 2 +- src/GafferScene/Outputs.cpp | 3 +- src/GafferScene/Render.cpp | 10 +- src/GafferScene/SceneReader.cpp | 11 +- src/GafferScene/SceneWriter.cpp | 12 +- src/GafferScene/Text.cpp | 11 +- src/GafferSceneModule/CoreBinding.cpp | 2 +- src/GafferSceneUI/CameraVisualiser.cpp | 9 - src/GafferSceneUI/ContextAlgo.cpp | 4 - src/GafferSceneUI/UVView.cpp | 20 +- src/GafferUI/GraphGadget.cpp | 2 +- src/GafferUI/ImageGadget.cpp | 4 +- src/GafferUI/StandardGraphLayout.cpp | 2 +- src/GafferUIModule/GraphGadgetBinding.cpp | 6 +- .../PathListingWidgetBinding.cpp | 4 +- src/GafferUIModule/PathListingWidgetBinding.h | 6 - startup/GafferScene/usd.py | 8 +- startup/GafferUI/layoutCompatibility.py | 77 -- startup/gui/menus.py | 77 +- 312 files changed, 991 insertions(+), 5989 deletions(-) delete mode 100644 appveyor.yml delete mode 100644 bin/gaffer.bat delete mode 100644 contrib/cmake/buildGafferWindows.bat delete mode 100644 contrib/cmake/jom/changelog.txt delete mode 100644 contrib/cmake/jom/ibjom.bat delete mode 100644 contrib/cmake/jom/jom.exe delete mode 100644 contrib/cmake/jom/xgejom.bat delete mode 100644 contrib/cmake/jom/xgejom.xml delete mode 100644 doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py create mode 100755 doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh delete mode 100644 doc/source/Interface/ControlsAndShortcuts/generate.py delete mode 100644 doc/source/WorkingWithScenes/Camera/generate.py create mode 100755 doc/source/WorkingWithScenes/Camera/generate.sh delete mode 100644 doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py create mode 100755 doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh delete mode 100644 doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py create mode 100755 doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh delete mode 100644 doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py create mode 100755 doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh delete mode 100644 doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py create mode 100755 doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh delete mode 100644 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py create mode 100755 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh delete mode 100644 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py create mode 100755 doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh delete mode 100644 doc/source/generate.py create mode 100755 doc/source/generate.sh delete mode 100644 include/Gaffer/FileSystemPathPlug.h delete mode 100644 include/GafferBindings/MatchPatternPathFilterBinding.h delete mode 100644 include/GafferBindings/ReferenceBinding.h delete mode 100644 include/GafferCortexBindings/Export.h delete mode 100644 include/GafferDispatchBindings/Export.h delete mode 100644 include/GafferImageBindings/Export.h delete mode 100644 include/GafferImageBindings/ImageProcessorBinding.h delete mode 100644 include/GafferImageBindings/ResampleBinding.h delete mode 100644 include/GafferImageBindings/ResizeBinding.h delete mode 100644 include/GafferImageBindings/ShuffleBinding.h delete mode 100644 include/GafferImageTest/Export.h delete mode 100644 include/GafferImageUIBindings/Export.h delete mode 100644 include/GafferRenderMan/Export.h delete mode 100644 include/GafferScene/AlembicSource.h delete mode 100644 include/GafferScene/PathMatcher.h delete mode 100644 include/GafferScene/Preview/InteractiveRender.h delete mode 100644 include/GafferScene/Preview/RendererAlgo.h delete mode 100644 include/GafferScene/SceneProcedural.h delete mode 100644 include/GafferSceneBindings/Export.h delete mode 100644 include/GafferSceneBindings/MeshToPointsBinding.h delete mode 100644 include/GafferSceneBindings/SceneFilterPathFilterBinding.h delete mode 100644 include/GafferSceneBindings/SceneProcessorBinding.h delete mode 100644 include/GafferSceneBindings/SceneReaderBinding.h delete mode 100644 include/GafferSceneUIBindings/Export.h delete mode 100644 include/GafferUI/RenderableGadget.h delete mode 100644 include/GafferUI/SplinePlugGadget.h delete mode 100644 include/GafferUIBindings/Export.h delete mode 100644 include/GafferUIBindings/ModifiableEventBinding.h delete mode 100644 include/GafferUIBindings/RenderableGadgetBinding.h delete mode 100644 include/GafferUIBindings/SplinePlugGadgetBinding.h delete mode 100644 include/GafferUIBindings/StandardNodeGadgetBinding.h delete mode 100644 include/GafferVDB/VDBObject.h delete mode 100644 python/GafferTest/FileSystemPathInOutNode.py delete mode 100644 python/GafferTest/FileSystemPathPlugTest.py delete mode 100644 src/Gaffer/FileSystemPathPlug.cpp delete mode 100644 src/GafferArnoldUI/Export.h delete mode 100644 src/GafferModule/FileSystemPathPlugBinding.cpp delete mode 100644 src/GafferModule/FileSystemPathPlugBinding.h delete mode 100644 startup/GafferUI/layoutCompatibility.py diff --git a/.gitignore b/.gitignore index a2c6fced7a5..0aa120ce601 100644 --- a/.gitignore +++ b/.gitignore @@ -8,31 +8,9 @@ .gafferBackups .idea .sconf_temp -*.oso -*.so -*.dylib -*.sln -*.pdb -install_manifest.txt -CMakeCache.txt -cmake_install.cmake .sconsign.dblite .vscode cmake-build-* config.log doc/html doc/python -config.log -.idea -.sconf_temp -.gafferBackups -Release/ -RelWithDebInfo/ -Debug/ -.vs/ -*.vcxproj* -*.dir/ -CMakeFiles/ -x64/ -./cmake/ -graphics/ diff --git a/Changes.md b/Changes.md index 4ba2d306cb5..05b0190b4d3 100644 --- a/Changes.md +++ b/Changes.md @@ -11593,4 +11593,4 @@ See python/GafferTest/ParameterHandlerTest.py for an example. addChild( n2 ) -* Fixed bug which caused "RuntimeError: Internal C++ object (PySide.QtGui.QLineEdit) already deleted." messages to be displayed. \ No newline at end of file +* Fixed bug which caused "RuntimeError: Internal C++ object (PySide.QtGui.QLineEdit) already deleted." messages to be displayed. diff --git a/SConstruct b/SConstruct index 048a489eec9..fc6ec6a3b27 100644 --- a/SConstruct +++ b/SConstruct @@ -2,7 +2,6 @@ # # Copyright (c) 2011-2014, John Haddon. All rights reserved. # Copyright (c) 2011-2014, Image Engine Design Inc. All rights reserved. -# Copyright 2019, Hypothetical Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -47,8 +46,6 @@ import platform import py_compile import subprocess -EnsureSConsVersion( 3, 0, 2 ) # Substfile is a default builder as of 3.0.2 - ############################################################################################### # Version ############################################################################################### @@ -83,13 +80,13 @@ options = Variables( optionsFile, ARGUMENTS ) options.Add( "CXX", "The C++ compiler.", - {"darwin" : "clang++", "win32" : "cl"}.get(sys.platform, "g++") + "clang++" if sys.platform == "darwin" else "g++", ) options.Add( "CXXFLAGS", "The extra flags to pass to the C++ compiler during compilation.", - [ "-pipe", "-Wall" ] if Environment()["PLATFORM"] != "win32" else [], + [ "-pipe", "-Wall" ] ) options.Add( @@ -104,7 +101,7 @@ options.Add( options.Add( "CXXSTD", "The C++ standard to build against. A minimum of C++11 is required.", - "c++11" if Environment()["PLATFORM"] != "win32" else "" + "c++11", ) options.Add( @@ -124,7 +121,7 @@ options.Add( options.Add( "BUILD_DIR", "The destination directory in which the build will be made.", - os.path.join( "build", "gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}" ), + "./build/gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}", ) options.Add( @@ -138,13 +135,13 @@ options.Add( options.Add( "INSTALL_DIR", "The destination directory for the installation.", - os.path.join( "install", "gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}" ), + "./install/gaffer-${GAFFER_MILESTONE_VERSION}.${GAFFER_MAJOR_VERSION}.${GAFFER_MINOR_VERSION}.${GAFFER_PATCH_VERSION}-${GAFFER_PLATFORM}", ) options.Add( "PACKAGE_FILE", "The file in which the final gaffer file will be created by the package target.", - "${INSTALL_DIR}.tar.gz" if sys.platform != "win32" else "${INSTALL_DIR}.zip", + "${INSTALL_DIR}.tar.gz", ) options.Add( @@ -173,7 +170,7 @@ options.Add( options.Add( "APPLESEED_ROOT", "The directory in which Appleseed is installed. Used to build Gafferseed", - os.path.join( "$BUILD_DIR", "appleseed" ), + "$BUILD_DIR/appleseed", ) options.Add( @@ -192,8 +189,7 @@ options.Add( options.Add( "LOCATE_DEPENDENCY_SYSTEMPATH", "Locations on which to search for include files " - "for the dependencies, separated by commas." - "These are included with -isystem.", + "for the dependencies. These are included with -isystem.", [], ) @@ -323,10 +319,6 @@ options.Add( # Basic environment object. All the other environments will be based on this. ############################################################################################### -########################################################################################### -# All platforms -########################################################################################### - env = Environment( options = options, @@ -356,11 +348,11 @@ env = Environment( LIBPATH = [ "./lib", - os.path.join( "$BUILD_DIR", "lib" ), + "$BUILD_DIR/lib", "$LOCATE_DEPENDENCY_LIBPATH", ], - FRAMEWORKPATH = os.path.join( "$BUILD_DIR", "lib" ), + FRAMEWORKPATH = "$BUILD_DIR/lib", ) @@ -368,36 +360,15 @@ env = Environment( # this should turn off warnings from those headers, allowing us to # build with -Werror. there are so many warnings from boost # in particular that this would be otherwise impossible. +for path in [ + "$BUILD_DIR/include", + "$BUILD_DIR/include/OpenEXR", + "$BUILD_DIR/include/GL", + ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] : -# Using Scons recommendation of CPPPATH for cross-platform -# would create a lot of extra code throughout the module -# configuration, so it is handled here. - -def formatSystemIncludes( includeList ) : - if type(includeList) != list : - includeList = [includeList] - - includeList = [ i for i in includeList if env.subst( i ) != "" ] - if env[ "PLATFORM" ] == "win32" : - formattedList = [ "/I{}".format(i) for i in includeList ] - else: - formattedList = [] - for i in includeList: - formattedList += [ "-isystem", i ] - return formattedList - -systemIncludes = [ - os.path.join( "$BUILD_DIR", "include" ), - os.path.join( "$BUILD_DIR", "include", "OpenEXR" ), - os.path.join( "$BUILD_DIR", "include", "GL" ), - ] + env["LOCATE_DEPENDENCY_SYSTEMPATH"] - -if env["PLATFORM"] != "win32" : - systemIncludes += os.path.join( "$BUILD_DIR", "include", "python$PYTHON_VERSION" ) -else: - systemIncludes += os.path.join( "$BUILD_DIR", "include", "python" ), - -env.Append( CXXFLAGS = formatSystemIncludes( systemIncludes ) ) + env.Append( + CXXFLAGS = [ "-isystem", path ] + ) if "clang++" in os.path.basename( env["CXX"] ): env.Append( @@ -406,164 +377,67 @@ if "clang++" in os.path.basename( env["CXX"] ): env["BUILD_DIR"] = os.path.abspath( env["BUILD_DIR"] ) -for e in env["ENV_VARS_TO_IMPORT"].split() : +# DISPLAY and HOME are essential for running gaffer when generating +# the documentation. TERM is needed to get coloured output from the +# compiler. +for e in env["ENV_VARS_TO_IMPORT"].split() + [ "DISPLAY", "HOME", "TERM" ] : if e in os.environ : env["ENV"][e] = os.environ[e] -########################################################################################### -# POSIX configuration -########################################################################################### - -if env["PLATFORM"] != "win32" : - - # DISPLAY and HOME are essential for running gaffer when generating - # the documentation. TERM is needed to get coloured output from the - # compiler. - for e in [ "DISPLAY", "HOME", "TERM" ] : - if e in os.environ : - env["ENV"][e] = os.environ[e] - - if env["PLATFORM"] == "darwin" : - - env.Append( CXXFLAGS = [ "-D__USE_ISOC99" ] ) - env["GAFFER_PLATFORM"] = "osx" +if env["PLATFORM"] == "darwin" : - osxVersion = [ int( v ) for v in platform.mac_ver()[0].split( "." ) ] - if osxVersion[0] == 10 and osxVersion[1] > 7 : - # Fix problems with Boost 1.55 and recent versions of Clang. - env.Append( CXXFLAGS = [ "-DBOOST_HAS_INT128", "-Wno-unused-local-typedef" ] ) - - else : + env.Append( CXXFLAGS = [ "-D__USE_ISOC99" ] ) + env["GAFFER_PLATFORM"] = "osx" - if "g++" in os.path.basename( env["CXX"] ) : + osxVersion = [ int( v ) for v in platform.mac_ver()[0].split( "." ) ] + if osxVersion[0] == 10 and osxVersion[1] > 7 : + # Fix problems with Boost 1.55 and recent versions of Clang. + env.Append( CXXFLAGS = [ "-DBOOST_HAS_INT128", "-Wno-unused-local-typedef" ] ) - gccVersion = subprocess.check_output( [ env["CXX"], "-dumpversion" ], env=env["ENV"] ).decode().strip() - gccVersion = [ int( v ) for v in gccVersion.split( "." ) ] +elif env["PLATFORM"] == "posix" : - # GCC 4.1.2 in conjunction with boost::flat_map produces crashes when - # using the -fstrict-aliasing optimisation (which defaults to on with -O2), - # so we turn the optimisation off here, only for that specific GCC version. - if gccVersion == [ 4, 1, 2 ] : - env.Append( CXXFLAGS = [ "-fno-strict-aliasing" ] ) + if "g++" in os.path.basename( env["CXX"] ) : - # GCC emits spurious "assuming signed overflow does not occur" - # warnings, typically triggered by the comparisons in Box3f::isEmpty(). - # Downgrade these back to warning status. - if gccVersion >= [ 4, 2 ] : - env.Append( CXXFLAGS = [ "-Wno-error=strict-overflow" ] ) + gccVersion = subprocess.check_output( [ env["CXX"], "-dumpversion" ], env=env["ENV"] ).decode().strip() + gccVersion = [ int( v ) for v in gccVersion.split( "." ) ] - # Old GCC emits spurious "maybe uninitialized" warnings when using - # boost::optional - if gccVersion < [ 5, 1 ] : - env.Append( CXXFLAGS = [ "-Wno-error=maybe-uninitialized" ] ) + # GCC 4.1.2 in conjunction with boost::flat_map produces crashes when + # using the -fstrict-aliasing optimisation (which defaults to on with -O2), + # so we turn the optimisation off here, only for that specific GCC version. + if gccVersion == [ 4, 1, 2 ] : + env.Append( CXXFLAGS = [ "-fno-strict-aliasing" ] ) - if gccVersion >= [ 5, 1 ] : - env.Append( CXXFLAGS = [ "-D_GLIBCXX_USE_CXX11_ABI=0" ] ) + # GCC emits spurious "assuming signed overflow does not occur" + # warnings, typically triggered by the comparisons in Box3f::isEmpty(). + # Downgrade these back to warning status. + if gccVersion >= [ 4, 2 ] : + env.Append( CXXFLAGS = [ "-Wno-error=strict-overflow" ] ) - env["GAFFER_PLATFORM"] = "linux" + # Old GCC emits spurious "maybe uninitialized" warnings when using + # boost::optional + if gccVersion < [ 5, 1 ] : + env.Append( CXXFLAGS = [ "-Wno-error=maybe-uninitialized" ] ) - env.Append( CXXFLAGS = [ "-std=$CXXSTD", "-fvisibility=hidden" ] ) + if gccVersion >= [ 5, 1 ] : + env.Append( CXXFLAGS = [ "-D_GLIBCXX_USE_CXX11_ABI=0" ] ) - if env["BUILD_TYPE"] == "DEBUG" : - env.Append( CXXFLAGS = ["-g", "-O0", "-DTBB_USE_DEBUG=1"] ) - elif env["BUILD_TYPE"] == "RELEASE" : - env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3"] ) - elif env["BUILD_TYPE"] == "RELWITHDEBINFO" : - env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3", "-g", "-fno-omit-frame-pointer"] ) + env["GAFFER_PLATFORM"] = "linux" - if env["WARNINGS_AS_ERRORS"] : - env.Append( - CXXFLAGS = [ "-Werror" ], - SHLINKFLAGS = [ "-Wl,-fatal_warnings" ], - ) +env.Append( CXXFLAGS = [ "-std=$CXXSTD", "-fvisibility=hidden" ] ) -########################################################################################### -# Windows configuration -########################################################################################### +if env["BUILD_TYPE"] == "DEBUG" : + env.Append( CXXFLAGS = ["-g", "-O0", "-DTBB_USE_DEBUG=1"] ) +elif env["BUILD_TYPE"] == "RELEASE" : + env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3"] ) +elif env["BUILD_TYPE"] == "RELWITHDEBINFO" : + env.Append( CXXFLAGS = ["-DNDEBUG", "-DBOOST_DISABLE_ASSERTS", "-O3", "-g", "-fno-omit-frame-pointer"] ) -else: +if env["WARNINGS_AS_ERRORS"] : env.Append( - CXXFLAGS = [ - "/nologo", - "/diagnostics:classic", - "/DWIN32", - "/D_WINDOWS", - "/DOPENEXR_DLL", - "/DNOMINMAX", - "/D__PRETTY_FUNCTION__=__FUNCSIG__", - "/DBOOST_ALL_DYN_LINK", - "/DBOOST_FILESYSTEM_NO_DEPRICATED", - "/DBOOST_SIGNALS_NO_DEPRECATION_WARNING", - "/DBOOST_PYTHON_MAX_ARITY=20", - "/D_WINDLL", - "/D_MBCS", - "/Zc:inline", # Remove unreferenced function or data if it is COMDAT or has internal linkage only - "/GR", # enable RTTI - "/TP", # treat all files as c++ (vs C) - "/FC", # display full paths in diagnostics - "/EHsc", # catch c++ exceptions only - "/MP", # enable multiprocessing of builds - "/permissive-", # disable permissive mode, which also enables standard compliant two phase name lookup - # required in when permissive mode is off, for defining constants like M_PI used by OpenVDB - "/D_USE_MATH_DEFINES", - "/wd4910", # disable warning C4910 (https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4910?view=vs-2019) generated many times by OpenEXR - ] + CXXFLAGS = [ "-Werror" ], + SHLINKFLAGS = [ "-Wl,-fatal_warnings" ], ) - if env["WARNINGS_AS_ERRORS"] : - env.Append( - CXXFLAGS = [ "/WX" ], - ) - - if env["BUILD_TYPE"] == "DEBUG" : - env.Append( - CXXFLAGS = - [ - "-O0", - "-Zi", - "-MDd", - "-DBOOST_DISABLE_ASSERTS", - "-bigobj", - ], - CCPDBFLAGS= - [ - "/Zi", - "/Fd${TARGET}.pdb", - ], - ) - elif env["BUILD_TYPE"] == "RELEASE" : - env.Append( - CXXFLAGS = - [ - "-DNDEBUG", - "-MD", # create multithreaded DLL - "-DBOOST_DISABLE_ASSERTS", - "-Ox", - ] - ) - elif env["BUILD_TYPE"] == "RELWITHDEBINFO" : - env.Append( - CXXFLAGS = - [ - "-DNDEBUG", - "-MD", - "-bigobj", - "-DBOOST_DISABLE_ASSERTS", - "-Zi", - "-Ox", - ], - LINKFLAGS = - [ - "-DEBUG", - ], - CCPDBFLAGS= - [ - "/Zi", - "/Fd${TARGET}.pdb", - ], - ) - - if env["BUILD_CACHEDIR"] != "" : CacheDir( env["BUILD_CACHEDIR"] ) @@ -659,7 +533,7 @@ if env["ASAN"] : # An environment for running commands with access to the applications we've built ############################################################################################### -def split( stringOrList, separator = os.path.pathsep ) : +def split( stringOrList, separator = ":" ) : if isinstance( stringOrList, list ) : return stringOrList @@ -667,28 +541,14 @@ def split( stringOrList, separator = os.path.pathsep ) : return stringOrList.split( separator ) commandEnv = env.Clone() -commandEnv["ENV"]["PATH"] = commandEnv.subst( os.path.join( "$BUILD_DIR", "bin" ) + os.path.pathsep ) + commandEnv["ENV"]["PATH"] +commandEnv["ENV"]["PATH"] = commandEnv.subst( "$BUILD_DIR/bin:" ) + commandEnv["ENV"]["PATH"] if commandEnv["PLATFORM"]=="darwin" : - commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( - os.path.pathsep.join( - [ os.path.join( "$BUILD_DIR", "lib" ) ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) - ) - ) -elif commandEnv["PLATFORM"] == "win32" : - commandEnv["ENV"]["PATH"] = commandEnv.subst( - os.path.pathsep.join( - [ os.path.join( "$BUILD_DIR", "lib" ) ] + split( commandEnv[ "LOCATE_DEPENDENCY_LIBPATH" ] ) - ) - ) + os.path.pathsep + commandEnv["ENV"]["PATH"] -else: - commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( - os.path.pathsep.join( - [ os.path.join( "$BUILD_DIR", "lib" ) ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) - ) - ) + commandEnv["ENV"]["DYLD_LIBRARY_PATH"] = commandEnv.subst( ":".join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) +else : + commandEnv["ENV"]["LD_LIBRARY_PATH"] = commandEnv.subst( ":".join( [ "$BUILD_DIR/lib" ] + split( commandEnv["LOCATE_DEPENDENCY_LIBPATH"] ) ) ) -commandEnv["ENV"]["PYTHONPATH"] = commandEnv.subst(os.path.pathsep.join( split( commandEnv["LOCATE_DEPENDENCY_PYTHONPATH"] ) ) ) +commandEnv["ENV"]["PYTHONPATH"] = commandEnv.subst( ":".join( split( commandEnv["LOCATE_DEPENDENCY_PYTHONPATH"] ) ) ) # SIP on MacOS prevents DYLD_LIBRARY_PATH being passed down so we make sure # we also pass through to gaffer the other base vars it uses to populate paths @@ -700,7 +560,7 @@ def runCommand( command ) : command = commandEnv.subst( command ) sys.stderr.write( command + "\n" ) - return subprocess.check_output( command, shell=True, env=commandEnv["ENV"] ).decode() + subprocess.check_call( command, shell=True, env=commandEnv["ENV"] ) ############################################################################################### # The basic environment for building libraries @@ -731,8 +591,8 @@ baseLibEnv.Append( # Determine boost version boostVersionHeader = baseLibEnv.FindFile( - os.path.join( "boost", "version.hpp" ), - [ os.path.join( "$BUILD_DIR", "include" ) ] + + "boost/version.hpp", + [ "$BUILD_DIR/include" ] + baseLibEnv["LOCATE_DEPENDENCY_SYSTEMPATH"] + baseLibEnv["LOCATE_DEPENDENCY_CPPPATH"] ) @@ -763,13 +623,13 @@ basePythonEnv = baseLibEnv.Clone() basePythonEnv["PYTHON_VERSION"] = subprocess.check_output( [ "python", "-c", "import sys; print( '{}.{}'.format( *sys.version_info[:2] ) )" ], env=commandEnv["ENV"] -).decode().strip() +).strip() basePythonEnv["PYTHON_ABI_VERSION"] = basePythonEnv["PYTHON_VERSION"] basePythonEnv["PYTHON_ABI_VERSION"] += subprocess.check_output( [ "python", "-c", "import sysconfig; print( sysconfig.get_config_var( 'abiflags' ) or '' )" ], env=commandEnv["ENV"] -).decode().strip() +).strip() basePythonEnv["BOOST_PYTHON_LIB_SUFFIX"] = "" if ( int( basePythonEnv["BOOST_MAJOR_VERSION"] ), int( basePythonEnv["BOOST_MINOR_VERSION"] ) ) >= ( 1, 67 ) : @@ -792,15 +652,15 @@ basePythonEnv.Append( if basePythonEnv["PLATFORM"]=="darwin" : basePythonEnv.Append( - CPPPATH = [ os.path.join( "$BUILD_DIR", "lib", "Python.framework", "Versions", "$PYTHON_VERSION", "include", "python$PYTHON_VERSION" ) ], - LIBPATH = [ os.path.join( "$BUILD_DIR", "lib", "Python.framework", "Versions", "$PYTHON_VERSION", "lib", "python$PYTHON_VERSION", "config" ) ], + CPPPATH = [ "$BUILD_DIR/lib/Python.framework/Versions/$PYTHON_VERSION/include/python$PYTHON_VERSION" ], + LIBPATH = [ "$BUILD_DIR/lib/Python.framework/Versions/$PYTHON_VERSION/lib/python$PYTHON_VERSION/config" ], LIBS = [ "python$PYTHON_VERSION" ], ) else : basePythonEnv.Append( - LIBPATH = [ os.path.join( "$BUILD_DIR", "libs" ) ] + CPPPATH = [ "$BUILD_DIR/include/python$PYTHON_ABI_VERSION" ] ) ############################################################################################### @@ -809,26 +669,19 @@ else : vTuneRoot = env.subst("$VTUNE_ROOT") +gafferLib = {} + if os.path.exists( vTuneRoot ): gafferLib = { "envAppends" : { - "CXXFLAGS" : [ "-DGAFFER_VTUNE"] + formatSystemIncludes( os.path.join( "$VTUNE_ROOT", "include" ) ), - "LIBPATH" : [ os.path.join( "$VTUNE_ROOT", "lib64" ) ], + "CXXFLAGS" : [ "-isystem", "$VTUNE_ROOT/include", "-DGAFFER_VTUNE"], + "LIBPATH" : [ "$VTUNE_ROOT/lib64" ], "LIBS" : [ "ittnotify" ] }, "pythonEnvAppends" : { "CXXFLAGS" : [ "-DGAFFER_VTUNE"] } } -else: - if env["PLATFORM"] == "win32" : - gafferLib = { - "envAppends" : { - "LIBS" : [ "Advapi32" ] - } - } - else: - gafferLib = {} libraries = { @@ -841,9 +694,7 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "GafferTest", "GafferBindings" ], }, - "additionalFiles" : glob.glob( - os.path.join( "python", "GafferTest", "*", "*" ) - ) + glob.glob( os.path.join( "python", "GafferTest", "*", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferTest/*/*" ) + glob.glob( "python/GafferTest/*/*/*" ), "apps" : [ "cli", "env", "license", "python", "stats", "test" ], }, @@ -862,7 +713,7 @@ libraries = { "GafferUITest" : { - "additionalFiles" : glob.glob( os.path.join( "python", "GafferUITest", "scripts", "*.gfr" ) ), + "additionalFiles" : glob.glob( "python/GafferUITest/scripts/*.gfr" ), }, @@ -878,9 +729,7 @@ libraries = { "GafferDispatchTest" : { - "additionalFiles" : glob.glob( - os.path.join( "python", "GafferDispatchTest", "*", "*" ) - ) + glob.glob( os.path.join( "python", "GafferDispatchTest", "*", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferDispatchTest/*/*" ) + glob.glob( "python/GafferDispatchTest/*/*/*" ), }, @@ -901,13 +750,7 @@ libraries = { }, "GafferCortexTest" : { - "additionalFiles" : glob.glob( - os.path.join( "python", "GafferCortexTest", "*", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferCortexTest", "*", "*", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferCortexTest", "images", "*" ) - ), + "additionalFiles" : glob.glob( "python/GafferCortexTest/*/*" ) + glob.glob( "python/GafferCortexTest/*/*/*" ) + glob.glob( "python/GafferCortexTest/images/*" ), "requiredOptions" : [ "GAFFERCORTEX" ], }, @@ -927,13 +770,7 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "GafferBindings", "GafferScene", "GafferDispatch", "GafferImage", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreGL$CORTEX_LIB_SUFFIX" ], }, - "additionalFiles" : glob.glob( - os.path.join( "glsl", "*.frag" ) - ) + glob.glob( - os.path.join( "glsl", "*.vert" ) - ) + glob.glob( - os.path.join( "include", "GafferScene", "Private", "IECore*Preview", "*.h" ) - ) + "additionalFiles" : glob.glob( "glsl/*.frag" ) + glob.glob( "glsl/*.vert" ) + glob.glob( "include/GafferScene/Private/IECore*Preview/*.h" ) }, "GafferSceneTest" : { @@ -943,7 +780,7 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "Gaffer", "GafferDispatch", "GafferBindings", "GafferScene", "GafferSceneTest" ], }, - "additionalFiles" : glob.glob( os.path.join( "python", "GafferSceneTest", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferSceneTest/*/*" ), }, "GafferSceneUI" : { @@ -959,7 +796,7 @@ libraries = { "GafferImage" : { "envAppends" : { - "CPPPATH" : [ os.path.join( "$BUILD_DIR", "include", "freetype2" ) ], + "CPPPATH" : [ "$BUILD_DIR/include/freetype2" ], "LIBS" : [ "Gaffer", "GafferDispatch", "Iex$OPENEXR_LIB_SUFFIX", "IECoreImage$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "OpenColorIO$OCIO_LIB_SUFFIX", "freetype" ], }, "pythonEnvAppends" : { @@ -974,15 +811,7 @@ libraries = { "pythonEnvAppends" : { "LIBS" : [ "GafferImage", "GafferImageTest" ], }, - "additionalFiles" : glob.glob( - os.path.join( "python", "GafferImageTest", "scripts", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferImageTest", "images", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferImageTest", "openColorIO", "luts", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferImageTest", "openColorIO", "*" ) - ), + "additionalFiles" : glob.glob( "python/GafferImageTest/scripts/*" ) + glob.glob( "python/GafferImageTest/images/*" ) + glob.glob( "python/GafferImageTest/openColorIO/luts/*" ) + glob.glob( "python/GafferImageTest/openColorIO/*" ), }, "GafferImageUITest" : {}, @@ -998,34 +827,28 @@ libraries = { "GafferArnold" : { "envAppends" : { - "CPPPATH" : [ os.path.join( "$ARNOLD_ROOT", "include" ) ], - "LIBPATH" : [ os.path.join( "$ARNOLD_ROOT", "bin" ), os.path.join( "$ARNOLD_ROOT", "lib" ) ], + "CPPPATH" : [ "$ARNOLD_ROOT/include" ], + "LIBPATH" : [ "$ARNOLD_ROOT/bin" ], "LIBS" : [ "Gaffer", "GafferScene", "GafferDispatch", "ai", "GafferVDB", "openvdb$VDB_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreArnold$CORTEX_LIB_SUFFIX", "IECoreVDB$CORTEX_LIB_SUFFIX", "GafferOSL" ], }, "pythonEnvAppends" : { - "CPPPATH" : [ os.path.join( "$ARNOLD_ROOT", "include" ) ], - "LIBPATH" : [ os.path.join( "$ARNOLD_ROOT", "bin" ) ], + "CPPPATH" : [ "$ARNOLD_ROOT/include" ], + "LIBPATH" : [ "$ARNOLD_ROOT/bin" ], "LIBS" : [ "Gaffer", "GafferScene", "GafferBindings", "GafferVDB", "GafferDispatch", "GafferArnold", "GafferOSL", "IECoreScene$CORTEX_LIB_SUFFIX" ], }, "requiredOptions" : [ "ARNOLD_ROOT" ], - "additionalFiles" : [ os.path.join( "arnold", "plugins", "gaffer.mtd" ) ], + "additionalFiles" : [ "arnold/plugins/gaffer.mtd" ], }, "GafferArnoldTest" : { - "additionalFiles" : glob.glob( - os.path.join( "python", "GafferArnoldTest", "volumes", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferArnoldTest", "metadata", "*" ) - ) + glob.glob( - os.path.join( "python", "GafferArnoldTest", "images", "*" ) - ), + "additionalFiles" : glob.glob( "python/GafferArnoldTest/volumes/*" ) + glob.glob( "python/GafferArnoldTest/metadata/*" ) + glob.glob( "python/GafferArnoldTest/images/*" ), "requiredOptions" : [ "ARNOLD_ROOT" ], }, "GafferArnoldUI" : { "envAppends" : { - "CPPPATH" : [ os.path.join( "$ARNOLD_ROOT", "include" ) ], - "LIBPATH" : [ os.path.join( "$ARNOLD_ROOT", "bin") , os.path.join( "$ARNOLD_ROOT", "lib" ) ], + "CPPPATH" : [ "$ARNOLD_ROOT/include" ], + "LIBPATH" : [ "$ARNOLD_ROOT/bin" ], "LIBS" : [ "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreGL$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX", "Gaffer", "GafferScene", "GafferOSL", "GafferSceneUI", "ai" ], }, "pythonEnvAppends" : { @@ -1035,21 +858,21 @@ libraries = { }, "GafferArnoldUITest" : { - "additionalFiles" : glob.glob( os.path.join( "python", "GafferArnoldUITest", "metadata", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferArnoldUITest/metadata/*" ), "requiredOptions" : [ "ARNOLD_ROOT" ], }, "GafferOSL" : { "envAppends" : { - "CPPPATH" : [ os.path.join( "$OSLHOME", "include", "OSL" ) ], + "CPPPATH" : [ "$OSLHOME/include/OSL" ], "LIBS" : [ "Gaffer", "GafferScene", "GafferImage", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX", "oslexec$OSL_LIB_SUFFIX", "Iex$OPENEXR_LIB_SUFFIX", "IECoreImage$CORTEX_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX" ], }, "pythonEnvAppends" : { - "CPPPATH" : [ os.path.join( "$OSLHOME", "include", "OSL" ) ], + "CPPPATH" : [ "$OSLHOME/include/OSL" ], "LIBS" : [ "GafferBindings", "GafferScene", "GafferImage", "GafferOSL", "Iex$OPENEXR_LIB_SUFFIX", "IECoreScene$CORTEX_LIB_SUFFIX" ], }, - "oslHeaders" : glob.glob( os.path.join( "shaders", "*", "*.h" ) ), - "oslShaders" : glob.glob( os.path.join( "shaders", "*", "*.osl" ) ), + "oslHeaders" : glob.glob( "shaders/*/*.h" ), + "oslShaders" : glob.glob( "shaders/*/*.osl" ), }, "GafferOSLUI" : { @@ -1062,20 +885,20 @@ libraries = { }, "GafferOSLTest" : { - "additionalFiles" : glob.glob( os.path.join( "python", "GafferOSLTest", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferOSLTest/*/*" ), }, "GafferOSLUITest" : {}, "GafferDelight" : { "envAppends" : { - "CPPPATH" : [ os.path.join( "$DELIGHT_ROOT", "include" ) ], + "CPPPATH" : [ "$DELIGHT_ROOT/include" ], "LIBS" : [ "Gaffer", "GafferScene", "GafferDispatch", "IECoreScene$CORTEX_LIB_SUFFIX", "3delight" ], - "LIBPATH" : [ os.path.join( "$DELIGHT_ROOT", "lib" ) ], + "LIBPATH" : [ "$DELIGHT_ROOT/lib" ], }, "pythonEnvAppends" : { "LIBS" : [ "GafferBindings", "GafferScene", "GafferDispatch", "GafferDelight" ], - "LIBPATH" : [ os.path.join( "$DELIGHT_ROOT", "lib" ) ], + "LIBPATH" : [ "$DELIGHT_ROOT/lib" ], }, "requiredOptions" : [ "DELIGHT_ROOT" ], }, @@ -1088,20 +911,20 @@ libraries = { "GafferAppleseed" : { "envAppends" : { - "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( os.path.join( "$APPLESEED_ROOT", "include" ) ), - "LIBPATH" : [ os.path.join( "$APPLESEED_ROOT", "lib" ) ], + "CXXFLAGS" : [ "-isystem", "$APPLESEED_ROOT/include", "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ], + "LIBPATH" : [ "$APPLESEED_ROOT/lib" ], "LIBS" : [ "Gaffer", "GafferDispatch", "GafferScene", "appleseed", "IECoreScene$CORTEX_LIB_SUFFIX", "IECoreAppleseed$CORTEX_LIB_SUFFIX", "OpenImageIO$OIIO_LIB_SUFFIX", "oslquery$OSL_LIB_SUFFIX" ], }, "pythonEnvAppends" : { - "CXXFLAGS" : [ "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ] + formatSystemIncludes( os.path.join( "$APPLESEED_ROOT", "include" ) ), - "LIBPATH" : [ os.path.join( "$APPLESEED_ROOT", "lib" ) ], + "CXXFLAGS" : [ "-isystem", "$APPLESEED_ROOT/include", "-DAPPLESEED_ENABLE_IMATH_INTEROP", "-DAPPLESEED_USE_SSE" ], + "LIBPATH" : [ "$APPLESEED_ROOT/lib" ], "LIBS" : [ "Gaffer", "GafferDispatch", "GafferScene", "GafferBindings", "GafferAppleseed" ], }, "requiredOptions" : [ "APPLESEED_ROOT" ], }, "GafferAppleseedTest" : { - "additionalFiles" : glob.glob( os.path.join( "python", "GafferAppleseedTest", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferAppleseedTest/*/*" ), }, "GafferAppleseedUI" : {}, @@ -1126,7 +949,7 @@ libraries = { }, "GafferVDBTest" : { - "additionalFiles" : glob.glob( os.path.join( "python", "GafferVDBTest", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferVDBTest/*/*" ), }, "GafferVDBUI" : { @@ -1139,11 +962,11 @@ libraries = { }, "GafferVDBUITest" : { - "additionalFiles" : glob.glob( os.path.join( "python", "GafferVDBUITest", "*", "*" ) ), + "additionalFiles" : glob.glob( "python/GafferVDBUITest/*/*" ), }, "scripts" : { - "additionalFiles" : [ os.path.join( "bin", "gaffer" ), os.path.join( "bin", "__gaffer.py" ) ], + "additionalFiles" : [ "bin/gaffer", "bin/__gaffer.py" ], }, "misc" : { @@ -1155,12 +978,12 @@ libraries = { "classStubs" : [ # files - ( "SequenceLsOp", os.path.join( "ops", "files", "sequenceLs" ) ), - ( "SequenceCpOp", os.path.join( "ops", "files", "sequenceCopy" ) ), - ( "SequenceMvOp", os.path.join( "ops", "files", "sequenceMove" ) ), - ( "SequenceRmOp", os.path.join( "ops", "files", "sequenceRemove" ) ), - ( "SequenceRenumberOp", os.path.join( "ops", "files", "sequenceRenumber" ) ), - ( "SequenceConvertOp", os.path.join( "ops", "files", "sequenceConvert" ) ), + ( "SequenceLsOp", "ops/files/sequenceLs" ), + ( "SequenceCpOp", "ops/files/sequenceCopy" ), + ( "SequenceMvOp", "ops/files/sequenceMove" ), + ( "SequenceRmOp", "ops/files/sequenceRemove" ), + ( "SequenceRenumberOp", "ops/files/sequenceRenumber" ), + ( "SequenceConvertOp", "ops/files/sequenceConvert" ), ], @@ -1170,7 +993,7 @@ libraries = { "classStubs" : [ - ( "ReadProcedural", os.path.join( "procedurals", "read" ) ), + ( "ReadProcedural", "procedurals/read" ), ], @@ -1178,16 +1001,10 @@ libraries = { } -if env["PLATFORM"] == "win32" : - libraries["scripts"]["additionalFiles"].append( os.path.join( "bin", "gaffer.bat" ) ) - - # Add on OpenGL libraries to definitions - these vary from platform to platform for library in ( "GafferUI", "GafferScene", "GafferSceneUI", "GafferImageUI" ) : if env["PLATFORM"] == "darwin" : libraries[library]["envAppends"].setdefault( "FRAMEWORKS", [] ).append( "OpenGL" ) - elif env["PLATFORM"] == "win32" : - libraries[library]["envAppends"]["LIBS"].append( "opengl32" ) else : libraries[library]["envAppends"]["LIBS"].append( "GL" ) libraries[library]["envAppends"]["LIBS"].append( "GLEW$GLEW_LIB_SUFFIX" ) @@ -1209,40 +1026,6 @@ for library in ( "GafferUI", ) : if int( env["QT_VERSION"] ) > 4 : addQtLibrary( library, "Widgets" ) -######################################################################################################### -# Repair Symlinks on Windows -######################################################################################################### - -# Windows does not support symlinks except with special (non-default) privileges. -# When cloning the repository git will create symlink source files as a text -# file with the symlink target as its content. 'fileOrigin' is a dictionary of the form -# fileSource: fileTarget used by installers to check for overriding the file's origin. - -fileOrigin = {} - -if env["PLATFORM"] == "win32" : - - fileList = runCommand( "git ls-files -s" ) - - for file in fileList.split( '\n' ) : - fileInfo = file.split() - if len( fileInfo ) == 4 or len( fileInfo ) == 5: - # ls-files output format: [ ] - # The magic code for symlinks in git is 120000 - fileMode = fileInfo[1] if len( fileInfo ) == 5 else fileInfo[0] - filePath = fileInfo[4] if len( fileInfo ) == 5 else fileInfo[3] - filePath = filePath.replace( "/", "\\" ) # filePath comes in from git with / - if fileMode == "120000" and os.path.exists( filePath ): - with open( filePath, "r" ) as f : - fileOrigin[ - os.path.join( env.subst( "$BUILD_DIR" ), filePath ) - ] = os.path.abspath( - os.path.join( - os.path.dirname( filePath ), - f.readline().replace( "/", "\\" ) - ) - ) - ############################################################################################### # The stuff that actually builds the libraries and python modules ############################################################################################### @@ -1267,44 +1050,31 @@ for libraryName, libraryDef in libraries.items() : # library - librarySource = sorted( - glob.glob( - os.path.join( "src", libraryName, "*.cpp" ) - ) + glob.glob( - os.path.join( "src", libraryName, "*", "*.cpp" ) - ) - ) + librarySource = sorted( glob.glob( "src/" + libraryName + "/*.cpp" ) + glob.glob( "src/" + libraryName + "/*/*.cpp" ) ) if librarySource : - library = libEnv.SharedLibrary( os.path.join( "lib", libraryName ), librarySource ) + library = libEnv.SharedLibrary( "lib/" + libraryName, librarySource ) libEnv.Default( library ) - libraryInstall = libEnv.Install( os.path.join( "$BUILD_DIR", "lib" ), library ) + libraryInstall = libEnv.Install( "$BUILD_DIR/lib", library ) libEnv.Alias( "build", libraryInstall ) # header install - fileSubstitutions = { - "!GAFFER_MILESTONE_VERSION!" : "$GAFFER_MILESTONE_VERSION", - "!GAFFER_MAJOR_VERSION!" : "$GAFFER_MAJOR_VERSION", - "!GAFFER_MINOR_VERSION!" : "$GAFFER_MINOR_VERSION", - "!GAFFER_PATCH_VERSION!" : "$GAFFER_PATCH_VERSION", - } + sedSubstitutions = "s/!GAFFER_MILESTONE_VERSION!/$GAFFER_MILESTONE_VERSION/g" + sedSubstitutions += "; s/!GAFFER_MAJOR_VERSION!/$GAFFER_MAJOR_VERSION/g" + sedSubstitutions += "; s/!GAFFER_MINOR_VERSION!/$GAFFER_MINOR_VERSION/g" + sedSubstitutions += "; s/!GAFFER_PATCH_VERSION!/$GAFFER_PATCH_VERSION/g" headers = ( - glob.glob( os.path.join( "include", libraryName, "*.h" ) ) + - glob.glob( os.path.join( "include", libraryName, "*.inl" ) ) + - glob.glob( os.path.join( "include", libraryName, "*", "*.h" ) ) + - glob.glob( os.path.join( "include", libraryName, "*", "*.inl" ) ) + glob.glob( "include/" + libraryName + "/*.h" ) + + glob.glob( "include/" + libraryName + "/*.inl" ) + + glob.glob( "include/" + libraryName + "/*/*.h" ) + + glob.glob( "include/" + libraryName + "/*/*.inl" ) ) for header in headers : - headerInstall = env.Substfile( - os.path.join( "$BUILD_DIR", header ), - header, - SUBST_DICT = fileSubstitutions - ) - + headerInstall = env.Command( "$BUILD_DIR/" + header, header, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) libEnv.Alias( "build", headerInstall ) # bindings library @@ -1313,35 +1083,31 @@ for libraryName, libraryDef in libraries.items() : pythonEnv.Append( **(libraryDef.get( "pythonEnvAppends", {} )) ) bindingsEnv = pythonEnv.Clone() - bindingsEnv.Append( CXXFLAGS = "-D{0}Bindings_EXPORTS".format( libraryName ) ) + bindingsEnv.Append( CXXFLAGS = "-D{0}BINDINGS_EXPORTS".format( libraryName ) ) - bindingsSource = sorted( glob.glob( os.path.join( "src", libraryName + "Bindings", "*.cpp" ) ) ) + bindingsSource = sorted( glob.glob( "src/" + libraryName + "Bindings/*.cpp" ) ) if bindingsSource : - bindingsLibrary = bindingsEnv.SharedLibrary( os.path.join( "lib", libraryName + "Bindings" ), bindingsSource ) + bindingsLibrary = bindingsEnv.SharedLibrary( "lib/" + libraryName + "Bindings", bindingsSource ) bindingsEnv.Default( bindingsLibrary ) - bindingsLibraryInstall = bindingsEnv.Install( os.path.join( "$BUILD_DIR", "lib" ), bindingsLibrary ) + bindingsLibraryInstall = bindingsEnv.Install( "$BUILD_DIR/lib", bindingsLibrary ) env.Alias( "build", bindingsLibraryInstall ) # bindings header install bindingsHeaders = ( - glob.glob( os.path.join( "include", libraryName + "Bindings", "*.h" ) ) + - glob.glob( os.path.join( "include", libraryName + "Bindings", "*.inl" ) ) + glob.glob( "include/" + libraryName + "Bindings/*.h" ) + + glob.glob( "include/" + libraryName + "Bindings/*.inl" ) ) for header in bindingsHeaders : - headerInstall = env.Substfile( - os.path.join( "$BUILD_DIR", header ), - header, - SUBST_DICT = fileSubstitutions - ) + headerInstall = env.Command( "$BUILD_DIR/" + header, header, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) bindingsEnv.Alias( "build", headerInstall ) # python module binary component - pythonModuleSource = sorted( glob.glob( os.path.join( "src", libraryName + "Module", "*.cpp" ) ) ) + pythonModuleSource = sorted( glob.glob( "src/" + libraryName + "Module/*.cpp" ) ) if pythonModuleSource : pythonModuleEnv = pythonEnv.Clone() @@ -1361,54 +1127,31 @@ for libraryName, libraryDef in libraries.items() : # LIBSUFFIXES variable used by the library scanner. pythonModuleEnv["LIBSUFFIXES"].append( pythonModuleEnv.subst( "$SHLIBSUFFIX" ) ) pythonModuleEnv["SHLIBSUFFIX"] = ".so" - elif pythonModuleEnv["PLATFORM"] == "win32" : - pythonModuleEnv["SHLIBSUFFIX"] = ".pyd" - pythonModule = pythonModuleEnv.SharedLibrary( - os.path.join( "python", libraryName, "_" + libraryName ), - pythonModuleSource - ) + pythonModule = pythonModuleEnv.SharedLibrary( "python/" + libraryName + "/_" + libraryName, pythonModuleSource ) pythonModuleEnv.Default( pythonModule ) - moduleInstall = pythonModuleEnv.Install( os.path.join( "$BUILD_DIR", "python", libraryName ), pythonModule ) + moduleInstall = pythonModuleEnv.Install( "$BUILD_DIR/python/" + libraryName, pythonModule ) pythonModuleEnv.Alias( "build", moduleInstall ) # python component of python module - pythonFiles = glob.glob( - os.path.join( "python", libraryName, "*.py" ) - ) + glob.glob( - os.path.join( "python", libraryName, "*", "*.py" ) - ) + pythonFiles = glob.glob( "python/" + libraryName + "/*.py" ) + glob.glob( "python/" + libraryName + "/*/*.py" ) for pythonFile in pythonFiles : - pythonFileInstall = env.Substfile( - os.path.join( "$BUILD_DIR", pythonFile ), - pythonFile, - SUBST_DICT = fileSubstitutions - ) + pythonFileInstall = env.Command( "$BUILD_DIR/" + pythonFile, pythonFile, "sed \"" + sedSubstitutions + "\" $SOURCE > $TARGET" ) env.Alias( "build", pythonFileInstall ) # apps for app in libraryDef.get( "apps", [] ) : - destinationFile = env.subst( os.path.join( "$BUILD_DIR", "apps", app, "{app}-1.py".format( app=app ) ) ) - appInstall = env.InstallAs( - destinationFile, - fileOrigin.get(destinationFile, os.path.join( "apps", app, "{app}-1.py".format( app=app ) ) ) - ) + appInstall = env.InstallAs("$BUILD_DIR/apps/{app}/{app}-1.py".format( app=app ), "apps/{app}/{app}-1.py".format( app=app ) ) env.Alias( "build", appInstall ) # startup files for startupDir in libraryDef.get( "apps", [] ) + [ libraryName ] : - for startupFile in glob.glob( - os.path.join( "startup", "{startupDir}".format( startupDir=startupDir ), "*.py" ) - ) : - destinationFile = env.subst( os.path.join( "$BUILD_DIR", startupFile ) ) - startupFileInstall = env.InstallAs( - destinationFile, - fileOrigin.get( destinationFile, startupFile ) - ) + for startupFile in glob.glob( "startup/{startupDir}/*.py".format( startupDir=startupDir ) ) : + startupFileInstall = env.InstallAs( "$BUILD_DIR/" + startupFile, startupFile ) env.Alias( "build", startupFileInstall ) # additional files @@ -1416,44 +1159,25 @@ for libraryName, libraryDef in libraries.items() : for additionalFile in libraryDef.get( "additionalFiles", [] ) : if additionalFile in pythonFiles : continue - destinationFile = env.subst( os.path.join( "$BUILD_DIR", additionalFile ) ) - additionalFileInstall = env.InstallAs( - destinationFile, - fileOrigin.get( destinationFile, additionalFile) - ) + additionalFileInstall = env.InstallAs( "$BUILD_DIR/" + additionalFile, additionalFile ) env.Alias( "build", additionalFileInstall ) # osl headers for oslHeader in libraryDef.get( "oslHeaders", [] ) : - destinationFile = env.subst( os.path.join( "$BUILD_DIR", oslHeader ) ) - oslHeaderInstall = env.InstallAs( - destinationFile, - fileOrigin.get( destinationFile, oslHeader ) - ) + oslHeaderInstall = env.InstallAs( "$BUILD_DIR/" + oslHeader, oslHeader ) env.Alias( "oslHeaders", oslHeaderInstall ) env.Alias( "build", oslHeaderInstall ) # osl shaders def buildOSL( target, source, env ) : - subprocess.check_call( - [ - env.subst( os.path.join( "$BUILD_DIR", "bin", "oslc" ) ), - "-I" + os.path.join( ".", "shaders" ), - "-o", - str( target[0] ), str( source[0] ) - ], - env = env["ENV"] - ) + + subprocess.check_call( [ "oslc", "-I./shaders", "-o", str( target[0] ), str( source[0] ) ], env = env["ENV"] ) for oslShader in libraryDef.get( "oslShaders", [] ) : env.Alias( "build", oslShader ) - compiledFile = commandEnv.Command( - os.path.join( "$BUILD_DIR", os.path.splitext( oslShader )[0] + ".oso" ), - oslShader, - buildOSL - ) + compiledFile = commandEnv.Command( "$BUILD_DIR/" + os.path.splitext( oslShader )[0] + ".oso", oslShader, buildOSL ) env.Depends( compiledFile, "oslHeaders" ) env.Alias( "build", compiledFile ) @@ -1465,14 +1189,14 @@ for libraryName, libraryDef in libraries.items() : if not os.path.isdir( dir ) : os.makedirs( dir ) - classLoadableName = dir.rpartition( os.path.sep )[2] + classLoadableName = dir.rpartition( "/" )[2] f = open( str( target[0] ), "w" ) f.write( "import IECore\n\n" ) f.write( env.subst( "from $GAFFER_STUB_MODULE import $GAFFER_STUB_CLASS as %s" % classLoadableName ) ) for classStub in libraryDef.get( "classStubs", [] ) : - stubFileName = os.path.join( "$BUILD_DIR", classStub[1], classStub[1].rpartition( os.path.sep )[2], "-1.py" ) + stubFileName = "$BUILD_DIR/" + classStub[1] + "/" + classStub[1].rpartition( "/" )[2] + "-1.py" stubEnv = env.Clone( GAFFER_STUB_MODULE = libraryName, GAFFER_STUB_CLASS = classStub[0], @@ -1484,9 +1208,6 @@ for libraryName, libraryDef in libraries.items() : # Graphics ######################################################################################################### -def inkscapeCmd(): - return env["INKSCAPE"] if env["PLATFORM"] != "win32" else "\"{}\"".format( env["INKSCAPE"] ) # Quote command string to support spaces in path on Windows - def buildImageCommand( source, target, env ) : # Requires env to have buildImageOptions set, containing, at minimum: @@ -1513,7 +1234,7 @@ def buildImageCommand( source, target, env ) : svgPath = os.path.abspath( svgFilename ), **substitutions ) - subprocess.check_call( inkscapeCmd() + " " + args, shell = True ) + subprocess.check_call( env["INKSCAPE"] + " " + args, shell = True ) def validateAndFlattenImageOptions( imageOptions, svg ) : @@ -1563,7 +1284,7 @@ def svgQuery( svgFile, id_ ) : objects = {} - queryCommand = inkscapeCmd() + " --query-all \"" + filepath + "\"" + queryCommand = env["INKSCAPE"] + " --query-all \"" + filepath + "\"" output = subprocess.check_output( queryCommand, shell=True ).decode() for line in output.split( "\n" ) : tokens = line.split( "," ) @@ -1666,12 +1387,8 @@ def graphicsCommands( env, svg, outputDirectory ) : if haveInkscape : - for source in ( - os.path.join( "resources", "graphics.svg" ), - os.path.join( "resources", "GafferLogo.svg" ), - os.path.join( "resources", "GafferLogoMini.svg" ) - ) : - env.Alias( "build", graphicsCommands( env, source, os.path.join( "$BUILD_DIR", "graphics" ) ) ) + for source in ( "resources/graphics.svg", "resources/GafferLogo.svg", "resources/GafferLogoMini.svg" ) : + env.Alias( "build", graphicsCommands( env, source, "$BUILD_DIR/graphics" ) ) else : @@ -1698,8 +1415,6 @@ if commandEnv.subst( "$LOCATE_DEPENDENCY_RESOURCESPATH" ) : # Documentation ######################################################################################################### -gafferCmd = "gaffer" if env["PLATFORM"] != "win32" else "gaffer.bat" - def generateDocs( target, source, env ) : # Run a script in the document source tree. These are used to @@ -1711,11 +1426,11 @@ def generateDocs( target, source, env ) : ext = os.path.splitext( localFile )[1] command = [] if localFile == "screengrab.py" : - command = [ gafferCmd, "screengrab", "-commandFile", localFile ] + command = [ "gaffer", "screengrab", "-commandFile", localFile ] elif ext == ".py" : - command = [ gafferCmd, "env", "python", localFile ] + command = [ "gaffer", "env", "python", localFile ] elif ext == ".sh" : - command = [ gafferCmd, "env", os.path.join(".", localFile ) ] + command = [ "gaffer", "env", "./" + localFile ] if command : sys.stdout.write( "Running {0}\n".format( os.path.join( root, localFile ) ) ) subprocess.check_call( command, cwd = root, env = env["ENV"] ) @@ -1787,41 +1502,37 @@ if haveSphinx and haveInkscape : # env var. We also extend startup paths to include any config # we need for the docs to build correctly. docCommandEnv = commandEnv.Clone() - docCommandEnv["ENV"]["GAFFER_REFERENCE_PATHS"] = os.path.abspath( os.path.join( "doc", "references" ) ) - docCommandEnv["ENV"]["GAFFER_REFERENCE_PATHS"] = os.path.abspath( os.path.join( "doc", "startup" ) ) + docCommandEnv["ENV"]["GAFFER_REFERENCE_PATHS"] = os.path.abspath( "doc/references" ) + docCommandEnv["ENV"]["GAFFER_STARTUP_PATHS"] = os.path.abspath( "doc/startup" ) # Ensure that Arnold, Appleseed and 3delight are available in the documentation # environment. - libraryPathEnvVars = { - "darwin" : "DYLD_LIBRARY_PATH", - "win32" : "PATH" - } - libraryPathEnvVar = libraryPathEnvVars.get( docEnv["PLATFORM"], "LD_LIBRARY_PATH" ) + libraryPathEnvVar = "DYLD_LIBRARY_PATH" if docEnv["PLATFORM"]=="darwin" else "LD_LIBRARY_PATH" if docCommandEnv.subst( "$ARNOLD_ROOT" ) : - docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( os.path.join( "$ARNOLD_ROOT", "bin" ) ) - docCommandEnv["ENV"]["PYTHONPATH"] += os.path.pathsep + docCommandEnv.subst( os.path.join( "$ARNOLD_ROOT", "python" ) ) - docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( os.path.join( "$ARNOLD_ROOT", "bin" ) ) + docCommandEnv["ENV"]["PATH"] += ":" + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) + docCommandEnv["ENV"]["PYTHONPATH"] += ":" + docCommandEnv.subst( "$ARNOLD_ROOT/python" ) + docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + ":" + docCommandEnv.subst( "$ARNOLD_ROOT/bin" ) - if docCommandEnv.subst( "$APPLESEED_ROOT" ) and docCommandEnv["APPLESEED_ROOT"] != os.path.join( "$BUILD_DIR", "appleseed" ) : - docCommandEnv["ENV"]["PATH"] += os.path.pathsep + docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "bin" ) ) - docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + os.path.pathsep + docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "lib" ) ) + if docCommandEnv.subst( "$APPLESEED_ROOT" ) and docCommandEnv["APPLESEED_ROOT"] != "$BUILD_DIR/appleseed" : + docCommandEnv["ENV"]["PATH"] += ":" + docCommandEnv.subst( "$APPLESEED_ROOT/bin" ) + docCommandEnv["ENV"][libraryPathEnvVar] = docCommandEnv["ENV"].get( libraryPathEnvVar, "" ) + ":" + docCommandEnv.subst( "$APPLESEED_ROOT/lib" ) docCommandEnv["ENV"]["OSLHOME"] = docCommandEnv.subst( "$OSLHOME" ) - docCommandEnv["ENV"]["OSL_SHADER_PATHS"] = docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "shaders", "appleseed" ) ) - docCommandEnv["ENV"]["APPLESEED_SEARCHPATH"] = docCommandEnv.subst( os.path.join( "$APPLESEED_ROOT", "shaders", "appleseed" ) + os.path.pathsep + ":$LOCATE_DEPENDENCY_APPLESEED_SEARCHPATH" ) + docCommandEnv["ENV"]["OSL_SHADER_PATHS"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed" ) + docCommandEnv["ENV"]["APPLESEED_SEARCHPATH"] = docCommandEnv.subst( "$APPLESEED_ROOT/shaders/appleseed:$LOCATE_DEPENDENCY_APPLESEED_SEARCHPATH" ) # Docs graphics generation - docGraphicsCommands = graphicsCommands( docEnv, os.path.join( "resources", "docGraphics.svg" ), os.path.join( "$BUILD_DIR", "doc", "gaffer", "graphics" ) ) + docGraphicsCommands = graphicsCommands( docEnv, "resources/docGraphics.svg", "$BUILD_DIR/doc/gaffer/graphics" ) docEnv.Alias( "docs", docGraphicsCommands ) - docSource, docGenerationCommands = locateDocs( os.path.join( "doc", "source" ), docCommandEnv ) - docs = docEnv.Command( os.path.join( "$BUILD_DIR", "doc", "gaffer", "html", "index.html" ), docSource, buildDocs ) + docSource, docGenerationCommands = locateDocs( "doc/source", docCommandEnv ) + docs = docEnv.Command( "$BUILD_DIR/doc/gaffer/html/index.html", docSource, buildDocs ) # SCons doesn't know about the assorted outputs of sphinx, so only index.html ends up in the cache docEnv.NoCache( docs ) docEnv.Depends( docGenerationCommands, docGraphicsCommands ) docEnv.Depends( docs, docGraphicsCommands ) docEnv.Depends( docs, "build" ) - docVars = docCommandEnv.Command( os.path.join( "doc", "source", "gafferVars.json" ), os.path.join( "doc", "source", "gafferVars.py" ), generateDocs ) + docVars = docCommandEnv.Command( "doc/source/gafferVars.json", "doc/source/gafferVars.py", generateDocs ) docEnv.Depends( docs, docVars ) if resources is not None : docEnv.Depends( docs, resources ) @@ -1841,16 +1552,12 @@ else : exampleFiles = [] for ext in ( 'gfr', 'grf', 'png' ) : - exampleFiles += glob.glob( os.path.join( "doc", "examples", "*.%s" % ext ) ) - exampleFiles += glob.glob( os.path.join( "doc", "examples", "*", "*.%s" % ext ) ) - exampleFiles += glob.glob( os.path.join( "doc", "examples", "*", "*", "*.%s" % ext ) ) + exampleFiles += glob.glob( "doc/examples/*.%s" % ext ) + exampleFiles += glob.glob( "doc/examples/*/*.%s" % ext ) + exampleFiles += glob.glob( "doc/examples/*/*/*.%s" % ext ) for f in exampleFiles : - fileInstall = env.Command( - f.replace( "doc" + os.path.sep, os.path.join( "$BUILD_DIR", "resources" ) + os.path.sep, 1 ), - f, - Copy( "$TARGET", "$SOURCE" ) - ) + fileInstall = env.Command( f.replace( "doc/", "$BUILD_DIR/resources/", 1 ), f, Copy( "$TARGET", "$SOURCE" ) ) env.Alias( "build", fileInstall ) ######################################################################################################### @@ -1865,15 +1572,15 @@ if env.subst( "$PACKAGE_FILE" ).endswith( ".dmg" ) : # if the packaging will make a disk image, then build an os x app bundle - install = env.Command( os.path.join( "$INSTALL_DIR", "Gaffer.app", "Contents", "Resources" ), "$BUILD_DIR", installer ) + install = env.Command( "$INSTALL_DIR/Gaffer.app/Contents/Resources", "$BUILD_DIR", installer ) env.AlwaysBuild( install ) env.NoCache( install ) env.Alias( "install", install ) - plistInstall = env.Install( os.path.join( "$INSTALL_DIR", "Gaffer.app", "Contents" ), os.path.join( "resources", "Info.plist" ) ) + plistInstall = env.Install( "$INSTALL_DIR/Gaffer.app/Contents", "resources/Info.plist" ) env.Alias( "install", plistInstall ) - gafferLink = env.Command( os.path.join( "$INSTALL_DIR", "Gaffer.app", "Contents", "MacOS", "gaffer" ), "", "ln -s " + os.path.join("..", "Resources", "bin", "gaffer $TARGET" ) ) + gafferLink = env.Command( "$INSTALL_DIR/Gaffer.app/Contents/MacOS/gaffer", "", "ln -s ../Resources/bin/gaffer $TARGET" ) env.Alias( "install", gafferLink ) else : diff --git a/apps/stats/stats-1.py b/apps/stats/stats-1.py index 49fd843987c..d1fff81f4d0 100644 --- a/apps/stats/stats-1.py +++ b/apps/stats/stats-1.py @@ -39,14 +39,10 @@ import sys import time import tempfile +import resource import collections import six -if sys.platform != "win32": - import resource -else: - import subprocess - import IECore import Gaffer @@ -750,9 +746,6 @@ def maxRSS( cls ) : if sys.platform == "darwin" : return cls( resource.getrusage( resource.RUSAGE_SELF ).ru_maxrss ) - elif sys.platform == "win32" : - result = subprocess.check_output( ["wmic", "process", "where", "processid={}".format(os.getpid()), "get", "PeakWorkingSetSize"] ) - return cls( long( result.split()[1] ) * 1024 ) else : return cls( resource.getrusage( resource.RUSAGE_SELF ).ru_maxrss * 1024 ) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index e2dff85a681..00000000000 --- a/appveyor.yml +++ /dev/null @@ -1,93 +0,0 @@ -#---------------------------------# -# general configuration # -#---------------------------------# - -# version format -version: 0.53.0.0.{build} - -# Maximum number of concurrent jobs for the project -max_jobs: 1 - -#---------------------------------# -# environment configuration # -#---------------------------------# - -# Build worker image (VM template) -image: Visual Studio 2017 - -# clone directory -clone_folder: c:\gaffer_source - -# environment variables -environment: - BUILD_DIR: c:\gaffer_build - VERSION: 0.53.0.0 - -# uncomment this line to enable RDP access at the start of the build -# init: - # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) - -# build cache to preserve files/folders between builds -# cache: - # - packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified - # - projectA\libs - # - node_modules # local npm modules - # - '%LocalAppData%\NuGet\Cache' # NuGet < v3 - # - '%LocalAppData%\NuGet\v3-cache' # NuGet v3 - -# scripts that run after cloning repository -install: - # install inkscape for building graphics - - appveyor DownloadFile https://inkscape.org/gallery/item/12189/inkscape-0.92.3-x64.exe - - inkscape-0.92.3-x64.exe /S - # download and extract dependencies - - if not exist %BUILD_DIR% mkdir %BUILD_DIR% - - cd %BUILD_DIR% - - appveyor DownloadFile https://github.com/hypothetical-inc/gafferDependencies/releases/download/%VERSION%/gafferDependencies-%VERSION%-windows.zip - - 7z x gafferDependencies-%VERSION%-windows.zip -aoa -y - - del gafferDependencies-%VERSION%-windows.zip - # build Gaffer and package artifacts - - cd %APPVEYOR_BUILD_FOLDER% - - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" - - call contrib\cmake\buildGafferWindows.bat - - cd %APPVEYOR_BUILD_FOLDER% - - 7z a gaffer-%VERSION%-windows.zip %BUILD_DIR%\* - - # to run script as a PowerShell command prepend it with ps: - # - ps: Write-Host 'This is PowerShell' - -#---------------------------------# -# build configuration # -#---------------------------------# - -# build platform, i.e. x86, x64, Any CPU. This setting is optional. -platform: x64 - -# build Configuration, i.e. Debug, Release, etc. -configuration: Release - -# scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services) -# before_package: - -# the install step takes care of everything since we're using cmake -build: off - -#---------------------------------# -# artifacts configuration # -#---------------------------------# - -artifacts: - - path: gaffer-%VERSION%-windows.zip -# # pushing a single file -# - path: test.zip - -# # pushing a single file with environment variable in path and "Deployment name" specified -# - path: MyProject\bin\$(configuration) -# name: myapp - -# # pushing entire folder as a zip archive -# - path: logs - -# # pushing all *.nupkg files in build directory recursively -# - path: '**\*.nupkg' - diff --git a/bin/gaffer.bat b/bin/gaffer.bat deleted file mode 100644 index 8a924dc802a..00000000000 --- a/bin/gaffer.bat +++ /dev/null @@ -1,106 +0,0 @@ -@echo off - -setlocal EnableDelayedExpansion - -set GAFFER_ROOT=%~dp0%.. - -set HOME=%USERPROFILE% - -set GAFFER_JEMALLOC=0 - -call :prependToPath "%GAFFER_ROOT%\glsl" IECOREGL_SHADER_PATHS -call :prependToPath "%GAFFER_ROOT%\glsl" IECOREGL_SHADER_INCLUDE_PATHS - -call :prependToPath "%GAFFER_ROOT%\fonts" IECORE_FONT_PATHS -call :prependToPath "%GAFFER_ROOT%\ops" IECORE_OP_PATHS - -call :prependToPath "%USERPROFILE%\gaffer\opPresets;%GAFFER_ROOT%\opPresets" IECORE_OP_PRESET_PATHS -call :prependToPath "%USERPROFILE%\gaffer\procedurals;%GAFFER_ROOT%\procedurals" IECORE_PROCEDURAL_PATHS -call :prependToPath "%USERPROFILE%\gaffer\proceduralPresets;%GAFFER_ROOT%\proceduralPresets" IECORE_PROCEDURAL_PRESET_PATHS - -set CORTEX_POINTDISTRIBUTION_TILESET=%GAFFER_ROOT%\resources\cortex\tileset_2048.dat - -call :prependToPath "%USERPROFILE%\gaffer\apps;%GAFFER_ROOT%\apps" GAFFER_APP_PATHS - -call :prependToPath "%USERPROFILE%\gaffer\startup" GAFFER_STARTUP_PATHS -call :appendToPath "%GAFFER_ROOT%\startup" GAFFER_STARTUP_PATHS - -call :prependToPath "%GAFFER_ROOT%\graphics" GAFFERUI_IMAGE_PATHS - -set OSLHOME=%GAFFER_ROOT% - -call :prependToPath "%USERPROFILE%\gaffer\shaders;%GAFFER_ROOT%\shaders" OSL_SHADER_PATHS - -set GAFFEROSL_CODE_DIRECTORY=%USERPROFILE%\gaffer\oslCode -call :prependToPath "%GAFFER_OSL_CODE_DIRECTORY%" PATH - -set PYTHONHOME=%GAFFER_ROOT% - -call :prependToPath "%GAFFER_ROOT%\python" PYTHONPATH - -call :prependToPath "%GAFFER_ROOT%\lib" PATH - -set QT_OPENGL=desktop -set QT_QPA_PLATFORM_PLUGIN_PATH=%GAFFER_ROOT%\qt\plugins - -call :prependToPath "%GAFFER_ROOT%\bin" PATH - -rem Appleseed -rem if "%APPLESEED%" == "" ( -rem if EXIST "%GAFFER_ROOT%"\appleseed ( -rem set APPLESEED=%GAFFER_ROOT%\appleseed -rem ) -rem ) - -rem if "%APPLESEED%" NEQ "" ( -rem call :prependToPath "%APPLESEED%\shaders\gaffer" OSL_SHADER_PATHS -rem call :prependToPath "%APPLESEED%\shaders\appleseed" OSL_SHADER_PATHS -rem ) - -rem if "%APPLESEED%" NEQ "" ( -rem call :prependToPath "%APPLESEED%\bin;%APPLESEED%\lib" PATH -rem call :prependToPath "%APPLESEED%\lib\python2.7" PYTHONPATH -rem call :prependToPath "%OSL_SHADER_PATHS%;%GAFFER_ROOT%\appleseedDisplays" APPLESEED_SEARCHPATH -rem ) - -rem Arnold -if "%ARNOLD_ROOT%" NEQ "" ( - call :prependToPath "%GAFFER_ROOT%\arnold\plugins" ARNOLD_PLUGIN_PATH - call :appendToPath "%ARNOLD_ROOT%\bin" PATH - call :appendToPath "%ARNOLD_ROOT%\python" PYTHONPATH -) - -rem Set up 3rd party extensions -for %%A in (%GAFFER_EXTENSION_PATHS%) do ( - call :appendToPath "%%A\bin" PATH - call :appendToPath "%%A\lib" PATH - call :appendToPath "%%A\python" PYTHONPATH - call :appendToPath "%%A\apps" GAFFER_APP_PATHS - call :appendToPath "%%A\graphics" GAFFERUI_IMAGE_PATHS - call :appendToPath "%%A\glsl" IECOREGL_SHADER_PATHS - call :appendToPath "%%A\glsl" IECOREGL_SHADER_INCLUDE_PATHS - call :appendToPath "%%A\shaders" OSL_SHADER_PATHS - call :prependToPath "%%A\startup" GAFFER_STARTUP_PATHS -) - -if "%GAFFER_DEBUG%" NEQ "" ( - %GAFFER_DEBUGGER% /debugexe "%GAFFER_ROOT%\bin\python.exe" "%GAFFER_ROOT%"/bin/__gaffer.py %* -) else ( - "%GAFFER_ROOT%"\bin\python.exe "%GAFFER_ROOT%"/bin/__gaffer.py %* -) - -if %ERRORLEVEL% NEQ 0 ( - echo "Error(s) running Gaffer" - exit /B %ERRORLEVEL% -) - -ENDLOCAL -exit /B 0 - -:prependToPath - set "%~2=%~1;!%~2!" - exit /B 0 - -:appendToPath - set "%~2=!%~2!;%~1" - exit /B 0 \ No newline at end of file diff --git a/contrib/cmake/CMakeLists.txt b/contrib/cmake/CMakeLists.txt index db270a76e00..a43c515b602 100755 --- a/contrib/cmake/CMakeLists.txt +++ b/contrib/cmake/CMakeLists.txt @@ -6,11 +6,12 @@ set (CMAKE_CXX_STANDARD 11) # Declare a Cortex Project project( Gaffer ) -option( WITH_TESTS "Compile tests" OFF ) +# Declare the version -set( GAFFER_SOURCE_DIR ${CMAKE_SOURCE_DIR}/../.. ) -# Declare the version +option( WITH_TESTS "Compile tests" ON ) + +set( GAFFER_SOURCE_DIR ${CMAKE_SOURCE_DIR}/../.. ) file( READ ${GAFFER_SOURCE_DIR}/SConstruct SCONSTRUCT) @@ -95,9 +96,9 @@ find_package( Cortex REQUIRED ) find_package( OpenColorIO REQUIRED ) find_package( OpenImageIO REQUIRED ) find_package( OSL REQUIRED ) -find_package( FreeType REQUIRED ) +find_package( Freetype REQUIRED ) find_package( PNG REQUIRED ) # For freetype linking -find_package( Arnold ) +find_package( Arnold REQUIRED ) find_package( OpenGL REQUIRED ) find_package( GLEW REQUIRED ) find_package( Qt5 5.6 REQUIRED Core Gui OpenGL ) @@ -112,9 +113,7 @@ include_directories( ${ILMBASE_INCLUDE_DIR} ) include_directories( ${OPENEXR_INCLUDE_DIRS} ) include_directories( ${Cortex_INCLUDE_DIRS} ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) -if (${CORTEX_ARNOLD_FOUND}) - include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) -endif() +include_directories( ${CORTEX_ARNOLD_INCLUDE_PATH} ) include_directories( ${APPLESEED_INCLUDE_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} ) @@ -149,9 +148,10 @@ set( BASE_LIBS ) set( BASE_PYTHON_LIBS + ${PYTHON_LIBRARIES} ${Boost_PYTHON_LIBRARY} ${Cortex_IECOREPYTHON_LIBRARY} - ) + Gaffer) #-****************************************************************************** #-****************************************************************************** @@ -162,9 +162,11 @@ set( BASE_PYTHON_LIBS # Includes include_directories( ${CMAKE_SOURCE_DIR}/include ) -set( GAFFER_LIB_NAMES +set( GAFFER_LIB_NAMES Gaffer GafferAppleseed + GafferArnold + GafferArnoldUI GafferCortex GafferDispatch GafferImage @@ -177,12 +179,7 @@ set( GAFFER_LIB_NAMES GafferVDB GafferVDBUI GafferOSLUI - GafferArnold - GafferArnoldUI ) -if (${CORTEX_ARNOLD_FOUND}) - SET(GAFFER_LIB_NAMES ${GAFFER_LIB_NAMES} GafferArnold GafferArnoldUI) -endif() set( GAFFERBINDINGS_LIB_NAMES Gaffer @@ -193,15 +190,10 @@ set( GAFFERTEST_LIB_NAMES GafferScene ) -set ( GAFFERTEST_MODULE_LIB_NAMES - Gaffer - GafferScene - GafferImage - ) - set( GAFFER_PYTHON_NAMES Gaffer GafferAppleseed + GafferArnold GafferCortex GafferDispatch GafferImage @@ -211,9 +203,6 @@ set( GAFFER_PYTHON_NAMES GafferTractor GafferVDB ) -if (${CORTEX_ARNOLD_FOUND}) - SET(GAFFER_PYTHON_NAMES ${GAFFER_PYTHON_NAMES} GafferArnold) -endif() # Get lists of files foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) @@ -246,59 +235,35 @@ foreach( GAFFER_LIB ${GAFFER_PYTHON_NAMES} ) python/${GAFFER_LIB}Test/*.py python/${GAFFER_LIB}UI/*.py python/${GAFFER_LIB}UITest/*.py ) endforeach() -# Substitute version info -if ( NOT WINDOWS ) - set(sedSubstitutions "s/!GAFFER_MILESTONE_VERSION!/${GAFFER_MILESTONE_VERSION}/g\;s/!GAFFER_MAJOR_VERSION!/${GAFFER_MAJOR_VERSION}/g\;s/!GAFFER_MINOR_VERSION!/${GAFFER_MINOR_VERSION}/g\;s/!GAFFER_PATCH_VERSION!/${GAFFER_PATCH_VERSION}/g") +set(sedSubstitutions "s/!GAFFER_MILESTONE_VERSION!/${GAFFER_MILESTONE_VERSION}/g\;s/!GAFFER_MAJOR_VERSION!/${GAFFER_MAJOR_VERSION}/g\;s/!GAFFER_MINOR_VERSION!/${GAFFER_MINOR_VERSION}/g\;s/!GAFFER_PATCH_VERSION!/${GAFFER_PATCH_VERSION}/g") - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/About.py - COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/python/Gaffer/About.py > ${CMAKE_CURRENT_BINARY_DIR}/About.py - DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg - WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} - ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h - COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/include/Gaffer/Version.h > ${CMAKE_CURRENT_BINARY_DIR}/Version.h - DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg - WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} - ) -else() - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/About.py - COMMAND powershell -Command "\ - (Get-Content ${GAFFER_SOURCE_DIR}/python/Gaffer/About.py).replace('!GAFFER_MILESTONE_VERSION!', '${GAFFER_MILESTONE_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py;\ - (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py).replace('!GAFFER_MAJOR_VERSION!', '${GAFFER_MAJOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py;\ - (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py).replace('!GAFFER_MINOR_VERSION!', '${GAFFER_MINOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py;\ - (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py).replace('!GAFFER_PATCH_VERSION!', '${GAFFER_PATCH_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/About.py" - DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg - WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} - ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h - COMMAND powershell -Command "\ - (Get-Content ${GAFFER_SOURCE_DIR}/include/Gaffer/Version.h).replace('!GAFFER_MILESTONE_VERSION!', '${GAFFER_MILESTONE_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h;\ - (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h).replace('!GAFFER_MAJOR_VERSION!', '${GAFFER_MAJOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h;\ - (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h).replace('!GAFFER_MINOR_VERSION!', '${GAFFER_MINOR_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h;\ - (Get-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h).replace('!GAFFER_PATCH_VERSION!', '${GAFFER_PATCH_VERSION}') | Set-Content ${CMAKE_CURRENT_BINARY_DIR}/Version.h" - DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg - WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} - ) -endif() +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/About.py + COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/python/Gaffer/About.py > ${CMAKE_CURRENT_BINARY_DIR}/About.py + DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg + WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h + COMMAND sed "${sedSubstitutions}" ${GAFFER_SOURCE_DIR}/include/Gaffer/Version.h > ${CMAKE_CURRENT_BINARY_DIR}/Version.h + DEPENDS ${GAFFER_SOURCE_DIR}/resources/graphics.svg + WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} +) + # Build Graphics # ============== -set( INKSCAPE_COMMAND "C:/Program Files/Inkscape/inkscape") -macro( build_svg_exports SVG_FILE) - # generate an object list from the svg - execute_process( - COMMAND ${INKSCAPE_COMMAND} --query-all ${SVG_FILE} - OUTPUT_VARIABLE svgContents - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) +file( GLOB GAFFER_SVG_FILES ${GAFFER_SOURCE_DIR}/resources/*.svg) +set(outputPNGs "") + +foreach(srcSvgFile ${GAFFER_SVG_FILES}) + # generate an object list from the svg file + execute_process( COMMAND inkscape --query-all ${srcSvgFile} OUTPUT_VARIABLE svgContents) STRING(REGEX REPLACE ";" "\\\\;" svgContents "${svgContents}") STRING(REGEX REPLACE "\n" ";" svgContents "${svgContents}") @@ -308,7 +273,7 @@ macro( build_svg_exports SVG_FILE) foreach(svg ${svgContents}) string(FIND ${svg} "forExport:" a) if("${a}" STREQUAL "0") - list(APPEND svgExport ${svg}) + list(APPEND svgExport ${svg}) endif() endforeach() @@ -320,24 +285,16 @@ macro( build_svg_exports SVG_FILE) list(GET svg 4 height) list(APPEND outputPNGs ${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png) - add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png - COMMAND ${INKSCAPE_COMMAND} --export-png=${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png --export-id=forExport:${name} --export-width=${width} --export-height=${height} --export-background-opacity=0 ${SVG_FILE} - DEPENDS ${SVG_FILE} + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/graphics/ + COMMAND inkscape --export-png=${CMAKE_CURRENT_BINARY_DIR}/graphics/${name}.png --export-id=forExport:${name} --export-width=${width} --export-height=${height} --export-background-opacity=0 ${srcSvgFile} + DEPENDS ${srcSvgFile} WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} ) endforeach() -endmacro() - -execute_process( - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/graphics/ -) +endforeach() -set(outputPNGs "") -build_svg_exports( ${CMAKE_CURRENT_BINARY_DIR}/resources/graphics.svg ) -build_svg_exports( ${CMAKE_CURRENT_BINARY_DIR}/resources/GafferLogo.svg ) -build_svg_exports( ${CMAKE_CURRENT_BINARY_DIR}/resources/GafferLogoMini.svg ) add_custom_target(Graphics ALL DEPENDS ${outputPNGs}) @@ -347,7 +304,7 @@ target_link_libraries( Gaffer ${BASE_LIBS} ) # Gaffer Bindings add_library( GafferBindings SHARED ${GAFFERBINDINGS_CXX_FILES} ${GAFFERBINDINGS_H_FILES} ) -target_link_libraries( GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} Gaffer ) +target_link_libraries( GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) # Gaffer Module add_library( _Gaffer MODULE ${GAFFER_CXX_MODULE_FILES} ${GAFFER_H_MODULE_FILES} ) @@ -371,13 +328,13 @@ add_library( _GafferUI MODULE ${GAFFERUI_CXX_MODULE_FILES} ${GAFFERUI_H_MODULE_F target_link_libraries( _GafferUI GafferUI GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} Qt5::Core Qt5::Gui Qt5::OpenGL ) target_compile_definitions( _GafferUI PRIVATE -DQT_NO_KEYWORDS -DQ_COMPILER_CONSTEXPR ) -# GafferDispatch +# GafferDisptach add_library( GafferDispatch SHARED ${GAFFERDISPATCH_CXX_FILES} ${GAFFERDISPATCH_H_FILES} ) target_link_libraries( GafferDispatch ${BASE_LIBS} Gaffer ) # GafferDispatch Python Module add_library( _GafferDispatch MODULE ${GAFFERDISPATCH_CXX_MODULE_FILES} ) -target_link_libraries( _GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferBindings ) +target_link_libraries( _GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferBindings ) # GafferImage add_library( GafferImage SHARED ${GAFFERIMAGE_CXX_FILES} ${GAFFERIMAGE_H_FILES} ) @@ -387,10 +344,6 @@ target_link_libraries( GafferImage Gaffer GafferDispatch ${BASE_LIBS} ${ILMBASE_ add_library( _GafferImage MODULE ${GAFFERIMAGE_CXX_MODULE_FILES} ${GAFFERIMAGE_H_MODULE_FILES} ) target_link_libraries( _GafferImage GafferImage GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) -# GafferImage Test Module -add_library( _GafferImageTest MODULE ${GAFFERIMAGETEST_CXX_MODULE_FILES} ) -target_link_libraries( _GafferImageTest ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBindings GafferImage GafferDispatch ) - # GafferImageUI add_library( GafferImageUI SHARED ${GAFFERIMAGEUI_CXX_FILES} ${GAFFERIMAGEUI_H_FILES} ) target_link_libraries( GafferImageUI Gaffer GafferImage GafferUI ${BASE_LIBS} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} ) @@ -408,10 +361,10 @@ target_link_libraries( GafferScene ${BASE_LIBS} Gaffer ${ILMBASE_IEX_LIBRARY} ${ # GafferScene Python Module add_library( _GafferScene MODULE ${GAFFERSCENE_CXX_MODULE_FILES} ${GAFFERSCENE_H_MODULE_FILES} ) -target_link_libraries( _GafferScene GafferScene GafferBindings GafferDispatch ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) +target_link_libraries( _GafferScene GafferScene GafferBindings ${BASE_LIBS} ${BASE_PYTHON_LIBS} ) # GafferScene Test -add_library( GafferSceneTest SHARED ${GAFFERSCENETEST_CXX_FILES} ${GAFFERSCENETEST_H_FILES} ) +add_library( GafferSceneTest SHARED ${GAFFERSCENETEST_CXX_FILES} ${GAFFERIMAGETEST_H_FILES} ) target_link_libraries( GafferSceneTest ${BASE_LIBS} Gaffer GafferScene GafferDispatch ) # GafferScene Test Module @@ -444,12 +397,11 @@ target_link_libraries( _GafferOSL ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBinding # GafferVDB add_library( GafferVDB SHARED ${GAFFERVDB_CXX_FILES} ${GAFFERVDB_H_FILES} ) -target_link_libraries( GafferVDB ${BASE_LIBS} Gaffer GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ${Cortex_IECOREVDB_LIBRARY} ) -target_compile_options( GafferVDB PRIVATE ) +target_link_libraries( GafferVDB ${BASE_LIBS} Gaffer GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ) # GafferVDB Python Module add_library( _GafferVDB MODULE ${GAFFERVDB_CXX_MODULE_FILES} ) -target_link_libraries( _GafferVDB GafferVDB ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBindings GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ${Cortex_IECOREVDB_LIBRARY} ) +target_link_libraries( _GafferVDB GafferVDB ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferBindings GafferScene ${OpenVDB_LIBRARIES} ${Cortex_IECORESCENE_LIBRARY} ) # GafferVDBUI add_library( GafferVDBUI SHARED ${GAFFERVDBUI_CXX_FILES} ${GAFFERVDBUI_H_FILES} ) @@ -471,26 +423,22 @@ add_library( _GafferAppleseed MODULE ${GAFFERAPPLESEED_CXX_MODULE_FILES} ) target_link_libraries( _GafferAppleseed ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferDispatch GafferScene GafferBindings GafferAppleseed ) target_compile_options( _GafferAppleseed PRIVATE -DAPPLESEED_ENABLE_IMATH_INTEROP -DAPPLESEED_USE_SSE ) -if (${CORTEX_ARNOLD_FOUND}) - # GafferArnold - file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) - add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) - target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) - target_compile_options( GafferArnold PRIVATE ) +# GafferArnold +file( GLOB IECOREARNOLD_PREVIEW_CXX_FILES ${GAFFER_SOURCE_DIR}/src/GafferArnold/IECoreArnoldPreview/*.cpp ) +add_library( GafferArnold SHARED ${GAFFERARNOLD_CXX_FILES} ${GAFFERARNOLD_H_FILES} ${IECOREARNOLD_PREVIEW_CXX_FILES} ) +target_link_libraries( GafferArnold ${BASE_LIBS} Gaffer GafferDispatch GafferScene GafferOSL GafferVDB ${OpenVDB_LIBRARIES} ${CORTEX_ARNOLD_LIBS} ${Cortex_IECOREARNOLD_LIBRARY} ) +# GafferArnold Python Module +add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) +target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) - # GafferArnold Python Module - add_library( _GafferArnold MODULE ${GAFFERARNOLD_CXX_MODULE_FILES} ) - target_link_libraries( _GafferArnold ${BASE_LIBS} ${BASE_PYTHON_LIBS} GafferScene GafferBindings GafferDispatch GafferArnold GafferBindings ) +# GafferArnoldUI +add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) +target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) - # GafferArnoldUI - add_library( GafferArnoldUI SHARED ${GAFFERARNOLDUI_CXX_FILES} ${GAFFERARNOLDUI_H_FILES} ) - target_link_libraries( GafferArnoldUI ${BASE_LIBS} Gaffer GafferScene GafferSceneUI GafferOSL ${Cortex_IECOREGL_LIBRARY} ) - - # GafferArnoldUI Python Module - add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) - target_link_libraries( _GafferArnoldUI GafferArnoldUI ) -endif() +# GafferArnoldUI Python Module +add_library( _GafferArnoldUI MODULE ${GAFFERARNOLDUI_CXX_MODULE_FILES} ) +target_link_libraries( _GafferArnoldUI GafferArnoldUI ) # GafferDelight add_library( GafferDelight SHARED ${GAFFERDELIGHT_CXX_FILES} ${GAFFERDELIGHT_H_FILES} ) @@ -513,7 +461,7 @@ foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) if( DARWIN ) set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".so" ) set_target_properties( _${GAFFER_LIB} PROPERTIES PREFIX "" ) - elseif( WINDOWS ) + elif( WINDOWS ) set_target_properties( _${GAFFER_LIB} PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB} PROPERTIES PREFIX "" ) @@ -524,23 +472,13 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) if( DARWIN ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".so" ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) - elseif( WINDOWS ) + elif( WINDOWS ) set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) else() set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) endif() endforeach() -foreach( GAFFER_LIB ${GAFFERTEST_MODULE_LIB_NAMES} ) - if( DARWIN ) - set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".so" ) - set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) - elseif( WINDOWS ) - set_target_properties( _${GAFFER_LIB}Test PROPERTIES SUFFIX ".pyd" ) - else() - set_target_properties( _${GAFFER_LIB}Test PROPERTIES PREFIX "" ) - endif() -endforeach() # Gaffer OSL Shaders file( GLOB_RECURSE OSL_HEADER_FILES ${GAFFER_SOURCE_DIR}/shaders/*.h) @@ -563,16 +501,9 @@ foreach(shaderFileName ${OSL_SOURCE_FILES}) get_filename_component(SHADER_OUTPUT_DIR ${SHADER_OUTPUT} "DIRECTORY") list(APPEND COMPILED_OSL_SHADERS ${SHADER_OUTPUT} ) - # Windows needs to have libraries in PATH, Linux in LD_LIBRARY_PATH - if( WINDOWS ) - set( PATH_COMMAND "PATH=${OSL_LIBRARY_PATH};$ENV{PATH}" ) - else() - set (PATH_COMMAND "LD_LIBRARY_PATH=${OSL_LIBRARY_PATH}:$ENV{LD_LIBRARY_PATH}") - endif() - add_custom_command(OUTPUT "${SHADER_OUTPUT}" COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADER_OUTPUT_DIR} - COMMAND ${CMAKE_COMMAND} -E env "${PATH_COMMAND}" ${OSL_COMPILER} -I./shaders -o ${SHADER_OUTPUT} ${shaderFileName} + COMMAND ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${OSL_LIBRARY_PATH}:$ENV{LD_LIBRARY_PATH}" ${OSL_COMPILER} -I./shaders -o ${SHADER_OUTPUT} ${shaderFileName} DEPENDS ${shaderFileName} WORKING_DIRECTORY ${GAFFER_SOURCE_DIR} ) @@ -580,12 +511,33 @@ endforeach() add_custom_target(Shaders ALL DEPENDS ${COMPILED_OSL_SHADERS}) + +# Python modules need special naming +if( WIN32 ) + set_target_properties( _Gaffer PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferAppleseed PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferArnold PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferArnoldUI PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferCortex PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferDispatch PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferImage PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferImageUI PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferOSL PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferDelight PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferScene PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferSceneUI PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferUI PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferTest PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferSceneTest PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferImageTest PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferVDB PROPERTIES SUFFIX ".pyd" ) + set_target_properties( _GafferVDBUI PROPERTIES SUFFIX ".pyd" ) +endif() + # Dependencies add_dependencies( GafferAppleseed Gaffer GafferDispatch GafferScene ) -if (${CORTEX_ARNOLD_FOUND}) - add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) - add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) -endif() +add_dependencies( GafferArnold Gaffer GafferDispatch GafferScene GafferOSL ) +add_dependencies( GafferArnoldUI Gaffer GafferScene GafferOSL GafferArnoldUI ) add_dependencies( GafferCortex Gaffer GafferDispatch ) add_dependencies( GafferDispatch Gaffer ) add_dependencies( GafferImage Gaffer GafferDispatch ) @@ -597,7 +549,7 @@ add_dependencies( GafferSceneUI Gaffer GafferUI GafferImage GafferImageUI Gaffer add_dependencies( GafferUI Gaffer GafferScene ) # Binding Dependencies -add_dependencies( GafferBindings Gaffer Graphics ) +add_dependencies( GafferBindings Gaffer Graphics) # Test Dependencies add_dependencies( GafferTest Gaffer ) @@ -614,15 +566,12 @@ add_dependencies( _GafferSceneUI Gaffer GafferSceneUI GafferImageUI GafferBindin add_dependencies( _GafferUI Gaffer GafferUI GafferBindings ) add_dependencies( _GafferOSL GafferBindings GafferScene GafferImage GafferOSL ) add_dependencies( _GafferAppleseed GafferDispatch GafferScene GafferBindings GafferAppleseed ) -if (${CORTEX_ARNOLD_FOUND}) - add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) - add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) -endif() +add_dependencies( _GafferArnold Gaffer GafferScene GafferBindings GafferDispatch GafferArnold ) +add_dependencies( _GafferArnoldUI Gaffer GafferArnoldUI ) add_dependencies( _GafferDelight Gaffer GafferScene GafferBindings GafferDispatch GafferDelight ) add_dependencies( _GafferTest Gaffer GafferBindings GafferTest ) add_dependencies( _GafferSceneTest Gaffer GafferBindings GafferScene GafferSceneTest GafferDispatch ) -add_dependencies( _GafferImageTest Gaffer GafferBindings GafferImage GafferDispatch ) # Install Libs foreach( GAFFER_LIB ${GAFFER_LIB_NAMES} ) @@ -638,13 +587,6 @@ foreach( GAFFER_LIB ${GAFFERTEST_LIB_NAMES} ) string( TOUPPER ${GAFFER_LIB} _GAFFER_LIB ) install( TARGETS ${GAFFER_LIB}Test DESTINATION lib/ ) - install( FILES ${${_GAFFER_LIB}_H_FILES} - DESTINATION include/${GAFFER_LIB}Test ) -endforeach() - -# Install Test Module Libs -foreach( GAFFER_LIB ${GAFFERTEST_MODULE_LIB_NAMES} ) - string( TOUPPER ${GAFFER_LIB} _GAFFER_LIB ) install( TARGETS _${GAFFER_LIB}Test DESTINATION python/${GAFFER_LIB}Test ) install( FILES ${${_GAFFER_LIB}_H_FILES} @@ -670,10 +612,8 @@ endforeach() # Install Gaffer Files install( DIRECTORY ${GAFFER_SOURCE_DIR}/apps DESTINATION . ) -if (${CORTEX_ARNOLD_FOUND}) - install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold +install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold DESTINATION . ) -endif() install( DIRECTORY ${GAFFER_SOURCE_DIR}/bin DESTINATION . FILES_MATCHING PATTERN "*gaffer*" @@ -683,14 +623,12 @@ install( DIRECTORY ${GAFFER_SOURCE_DIR}/glsl DESTINATION . ) install( DIRECTORY ${GAFFER_SOURCE_DIR}/python DESTINATION . ) -if (${CORTEX_ARNOLD_FOUND}) - install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold +install( DIRECTORY ${GAFFER_SOURCE_DIR}/arnold + DESTINATION . ) +install( DIRECTORY ${GAFFER_SOURCE_DIR}/shaders DESTINATION . ) -endif() - install( DIRECTORY ${GAFFER_SOURCE_DIR}/startup DESTINATION . ) - install( FILES ${GAFFER_SOURCE_DIR}/LICENSE DESTINATION .) @@ -698,4 +636,4 @@ install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/graphics DESTINATION . ) install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/shaders DESTINATION . ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/About.py DESTINATION python/Gaffer) -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Version.h DESTINATION include/Gaffer) +install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Version.h DESTINATION include/Gaffer) \ No newline at end of file diff --git a/contrib/cmake/buildGafferWindows.bat b/contrib/cmake/buildGafferWindows.bat deleted file mode 100644 index 355710bff2a..00000000000 --- a/contrib/cmake/buildGafferWindows.bat +++ /dev/null @@ -1,37 +0,0 @@ -set ROOT_DIR=%~dp0%..\.. -cd %ROOT_DIR% - -set CMAKE_GENERATOR="NMake Makefiles JOM" - -if not "%1" == "" ( - set BUILD_TYPE=%1 -) else ( - set BUILD_TYPE=RELEASE -) - -set PATH=%ROOT_DIR%\contrib\cmake\jom;%PATH% - -del /f CMakeCache.txt - -cmake -Wno-dev -G %CMAKE_GENERATOR% ^ --DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^ --DCMAKE_INSTALL_PREFIX=%BUILD_DIR% ^ --DCMAKE_PREFIX_PATH=%BUILD_DIR% ^ --DPYTHON_LIBRARY=%BUILD_DIR%\lib ^ --DPYTHON_INCLUDE_DIR=%BUILD_DIR%\include ^ --DCORTEX_LOCATION=%BUILD_DIR% ^ --DBOOST_ROOT=%BUILD_DIR% ^ --DILMBASE_LOCATION=%BUILD_DIR% ^ --DOPENEXR_LOCATION=%BUILD_DIR% ^ --DOSL_INCLUDE_DIR=%BUILD_DIR%\include ^ --DOSL_EXEC_LIBRARY=%BUILD_DIR%\lib\oslexec.lib ^ --DOSL_COMP_LIBRARY=%BUILD_DIR%\lib\oslcomp.lib ^ --DOSL_QUERY_LIBRARY=%BUILD_DIR%\lib\oslquery.lib ^ --DAPPLESEED_INCLUDE_DIR=%BUILD_DIR%\appleseed\include ^ --DAPPLESEED_LIBRARY=%BUILD_DIR%\appleseed\lib\appleseed.lib ^ --DOPENVDB_LOCATION=%BUILD_DIR% -DARNOLD_ROOT=%ARNOLD_ROOT% ^ -%ROOT_DIR%\contrib\cmake - -if %ERRORLEVEL% NEQ 0 (exit /b %ERRORLEVEL%) -cmake --build . --config %BUILD_TYPE% --target install -if %ERRORLEVEL% NEQ 0 (exit /b %ERRORLEVEL%) diff --git a/contrib/cmake/cmake/FindCortex.cmake b/contrib/cmake/cmake/FindCortex.cmake index 62877ce2f23..0926b5c3fe2 100644 --- a/contrib/cmake/cmake/FindCortex.cmake +++ b/contrib/cmake/cmake/FindCortex.cmake @@ -13,7 +13,6 @@ # Cortex_IECOREALEMBIC_LIBRARY # Cortex_IECOREAPPLESEED_LIBRARY # Cortex_IECOREARNOLD_LIBRARY -# Cortex_IECOREVDB_LIBRARY FIND_PACKAGE ( PackageHandleStandardArgs ) @@ -38,7 +37,6 @@ IF ( CORTEX_FOUND ) SET ( IECOREALEMBIC_LIBRARY_NAME IECoreAlembic ) SET ( IECOREAPPLESEED_LIBRARY_NAME IECoreAppleseed ) SET ( IECOREARNOLD_LIBRARY_NAME IECoreArnold ) - SET ( IECOREVDB_LIBRARY_NAME IECoreVDB ) SET ( Cortex_INCLUDE_DIRS ${CORTEX_LOCATION}/include @@ -58,7 +56,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ELSEIF (WIN32) # Link library SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") @@ -70,7 +67,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ELSE () # MESSAGE ( "CMAKE_FIND_LIBRARY_SUFFIXES = " ${CMAKE_FIND_LIBRARY_SUFFIXES}) SET ( ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) @@ -83,7 +79,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) SET ( CMAKE_FIND_LIBRARY_SUFFIXES ${ORIGINAL_CMAKE_FIND_LIBRARY_SUFFIXES}) ENDIF () ELSE () @@ -97,7 +92,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ELSEIF (WIN32) # Link library SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") @@ -109,7 +103,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) # Load library SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") FIND_LIBRARY ( Cortex_IECORE_LIBRARY ${IECORE_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) @@ -120,7 +113,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) # MUST reset SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") ELSE () @@ -132,7 +124,6 @@ IF ( CORTEX_FOUND ) FIND_LIBRARY ( Cortex_IECOREALEMBIC_LIBRARY ${IECOREALEMBIC_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREAPPLESEED_LIBRARY ${IECOREAPPLESEED_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) FIND_LIBRARY ( Cortex_IECOREARNOLD_LIBRARY ${IECOREARNOLD_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) - FIND_LIBRARY ( Cortex_IECOREVDB_LIBRARY ${IECOREVDB_LIBRARY_NAME} PATHS ${Cortex_LIBRARYDIR} ) ENDIF () ENDIF () diff --git a/contrib/cmake/jom/changelog.txt b/contrib/cmake/jom/changelog.txt deleted file mode 100644 index e3338470dc7..00000000000 --- a/contrib/cmake/jom/changelog.txt +++ /dev/null @@ -1,185 +0,0 @@ -This is the changelog for jom 1.1.2, the parallel make tool. - -Changes since jom 1.1.1 -- Fixed exit code propagation in xgejom.bat and ibjom.bat (QTCREATORBUG-16619). -- Updated the CMake build system to use Qt5. -- Fixed bogus path in error message for failed targets. -- Fixed error "JobClient destroyed while still acquiring." that could be yielded - for failed builds. -- Fixed /k option (QTCREATORBUG-17131). -- Fixed sub-jom detection for chocolatey shims (QTCREATORBUG-15494). - -Changes since jom 1.1.0 -- Added the special .NOTPARALLEL target that disables parallel build for the - containing makefile. -- Fixed glitches in !include directives. Includes like <"foo.mk"> were not - possible. Includes like "foo.mk" did not recursively search through parent - makefiles directories. -- Introduced the JOMFLAGS environment variable. This is a MAKEFLAGS pendant. - JOMFLAGS is useful to set up separate flags for nmake and jom. -- Renamed ibjom.cmd to ibjom.bat for consistency. -- Added xgejom.bat, a wrapper for the IncrediBuild XGE interface. -- Fixed wildcard handling for subdirectories (QTCREATORBUG-16499). -- Implemented the "build all targets" option (QTCREATORBUG-16500). - -Changes since jom 1.0.16 -- Restrict the number of parallel jobs in recursively called instances - similar to GNU make's jobserver (QTCREATORBUG-10846). - -Changes since jom 1.0.15 -- Fix occasional hang on exit (QTCREATORBUG-14600). - -Changes since jom 1.0.14 -- Fix potential hang on error in a sub-jom. -- Yield error on missing !endif directives (QTCREATORBUG-14211). -- Fix ignoring exit codes greater than 255. -- Fix /DUMPGRAPHDOT option (QTCREATORBUG-14004). -- Fix $? filename macro for nonexistent targets (QTCREATORBUG-14125). -- Fix quoting of dependencies with spaces (QTCREATORBUG-12296). - -Changes since jom 1.0.13 -- Fix exit code forwarding. (QTCREATORBUG-11556) -- Fix file name macro modifers for $** and $?. (QTCREATORBUG-6932) -- Fix equal signs in semicolon command syntax. (QTCREATORBUG-7942) -- Fix error line numbers for inline files. (QTCREATORBUG-8451) -- Ignore macro assignments in inline files. (QTCREATORBUG-8452) -- Yield error on unexpected !ENDIF directive. -- Support wildcards in dependency lines. (QTCREATORBUG-10439) -- Use IcrediBuild's BuildConsole instead of the XGE interface in ibjom. - -Changes since jom 1.0.12 -- Fix spurious "Can't start command" error. -- Fix passing of -j argument to subjoms. -- Sanity check the -j argument. -- Fix regression of non-functional set command in command blocks. -- Fix handling of environment variables that would cause a syntax errors in - makefiles. -- Fix handling of environment variables with lowercase names. - -Changes since jom 1.0.11 -- Performance improvements. -- Fixed whitespace in command line arguments. (QTCREATORBUG-7428) -- Enhanced responsiveness of subjom output. -- Separate output of stdout and stderr. -- Fix the output of silent commands in /n mode. (QTCREATORBUG-7170) -- Implemented the /U switch for dumping inline files. -- Fix expansion of environment variables. - -Changes since jom 1.0.10 -- Fix exit code for /k command line switch. (QTCREATORBUG-6987) -- Fix spurious 0x0d characters in process output. (QTCREATORBUG-6986) -- Fix process output ordering and printing of large amounts of output - in recursive jom scenarios. -- Improved performance by caching file time stamps. - -Changes since jom 1.0.9 -- Fix regression that caused jom to fail on Windows XP. - -Changes since jom 1.0.8 -- The GNU Make option -w is now supported to print the current working - directory before and after other processing. -- Fix crash when specifying a target for an empty makefile. - (QTCREATORBUG-6552) -- Fix lookup for targets in the Makefile's directory. (QTCREATORBUG-6546) -- Fix handling of environment variables. (QTCREATORBUG-6578) -- Specifying an exit code with the '-' command modifier was fixed. -- Fix command modifiers in inference rules. (QTCREATORBUG-6742) -- Fix parsing of the "ignore exit code" command modifier. -- Fix (very rare) deadlock and zombie processes. -- The preprocessor directive !include now looks up files in the - include directories correctly. (QTCREATORBUG-6869) - -Changes since jom 1.0.7 -- Fix spawning of child processes that expect a valid stdin handle. - E.g. xcopy couldn't be called anymore. -- CMakeList.txt was fixed (thanks to Ryan Pavlik). - -Changes since jom 1.0.6 -- Fix blank lines in output. (QTCREATORBUG-3974) -- Small performance improvement due to compilation with - QT_USE_FAST_CONCATENATION and QT_USE_FAST_OPERATOR_PLUS. -- Ctrl-C handling has been revisited. Much simpler and more correct. - Before the compiler jobs didn't get a Ctrl-C but were terminated. -- Special .SYNC dependents implemented. See README for a small description. - (QTCREATORBUG-3257) -- Handle quoted dollar signs in inline files correctly. (QTCREATORBUG-2875) -- Respect the MAKEFLAGS environment variable. (QTCREATORBUG-5028) -- Complete detection of cmd builtins. This fixes annoying warnings when building - with IncrediBuild. - -Changes since jom 1.0.5 -- Fix mean monster spawn issue. - -Changes since jom 1.0.4 -- Fix out of date check for pseudotargets. (QTCREATORBUG-3909) - -Changes since jom 1.0.3 -- Fix that -j1 wasn't passed to sub jom calls. (QTCREATORBUG-3729) -- /KEEPTEMPFILES was added for debugging purposes. (QTCREATORBUG-3852) -- Performance boost for incremental builds. -- Improved Ctrl-C handling for recursive make. - -Changes since jom 1.0.2 -- Support variable names with underscores. (QTCREATORBUG-3235) -- Keep order of dependencies on build. This is important for makefiles - lacking complete dependencies. These might fail in parallel builds - otherwise. -- Fix issues wrt environment variables. (QTCREATORBUG-3108) - -Changes since jom 1.0.1 -- Make target names case insensitive. (QTCREATORBUG-3037) -- Fix reading of include files without newline at the end. - (QTBUG-15021) -- Repair the cmake project file for jom. - -Changes since jom 1.0.0 -- Cleaner and faster determination of targets that must be built. -- Fix incomplete up-to-date check for inference rule targets. - (QTCREATORBUG-2713) -- Don't filter comments in inline files. (QTCREATORBUG-2874) - -Changes since jom 0.9.4 -- Inference rule batch mode implemented. - This improves performance for makefiles that make heavy use of the batch - mode, e.g. qmake generated makefiles. -- Improved command execution. No more batch file writing. -- Macro substitution implemented. Macro expansions like - $(TARGET:suffix=d) are now possible. -- .SUFFIXES content is handled properly. -- Fixed several bugs in file name macro expansion. -- Output of concurrent processes is explicitely separated. - -Changes since jom 0.9.3 -- Opening files from volume mounted to NTFS directory fixed. - (QTCREATORBUG-1475) -- Output buffering issue fixed. (QTBUG-10798) - -Changes since jom 0.9.2 -- Support for multiple inline files per command line added. -- Its now possible to use "." as target name. (QTCREATORBUG-1131) -- Support file name macros in the file name part of inline file defitions. - (QTCREATORBUG-1136) -- Multiple file name macros per command line are possible now. -- Single name macro invocation was added. - They can be invoked like this: $A instead of $(A). -- Several bugs related to file name macros have been fixed. -- Handle quoted arguments from command files correctly. - -Changes since jom 0.9.1 -- Fixed conditionals in preprocessor expressions. (QTCREATORBUG-1091) -- Improved parser error messages. Now we see the file, in which the - error occurred. (QTCREATORBUG-1114) - -Changes since jom 0.9.0 -- Having too many rules for a target is now a warning and not an error. -- Fixed several bugs in the preprocessor expression parser, e.g. - QTCREATORBUG-1056. - -Changes since jom 0.8.9 -- Reset the ERRORLEVEL to zero, if command's exit code should be ignored. - (QTCREATORBUG-837) -- Command files can be used to pass command line options to jom. - Usage: jom @commands.txt -- ANTLR isn't used anymore. We're using QLALR to generate the parser for - preprocessor expressions now. This makes building jom much easier. - diff --git a/contrib/cmake/jom/ibjom.bat b/contrib/cmake/jom/ibjom.bat deleted file mode 100644 index cc8843d1ce8..00000000000 --- a/contrib/cmake/jom/ibjom.bat +++ /dev/null @@ -1,5 +0,0 @@ -@echo off -setlocal enabledelayedexpansion -if "%IBJOM_NUMBEROFJOBS%" == "" set IBJOM_NUMBEROFJOBS=20 -BuildConsole /command="jom -j%IBJOM_NUMBEROFJOBS% %*" || exit /b !ERRORLEVEL! -endlocal diff --git a/contrib/cmake/jom/jom.exe b/contrib/cmake/jom/jom.exe deleted file mode 100644 index acb790273f1f748b61feab07f281e1c919ccb84d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2654208 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

    NIpANL4_%V_ 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

    YN8B)Cum-LVoB>{v$BPzr!;jPy8L8C$iuF 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 G{qQ}8 zbj^9uW9e%|gH#}H3+u@R4jEsG<4G_9 zhoEe{2@13(k>;CTStCB7g?f*_U4H@AS)k*(=suG}m*FjwG%!Z-?a{ZKz@scsUZnzi zJV8Cb$^A9|5hm1K=gQo(?e*@j0kLv4a*l$5oowm>p-qA<8`CHy&qj~uEgy!7Lx1ME z1O6kZ#$61Ec9+aTy04(;50E6DPPkR*c(eFLS67H9gsV_HG1wn?ZLc6#BwQ*Q^Epvr1AY)o6bl-5S`~i`+Y24_3p@(M z#rUy&S@@OaUti$Ojp|3ycCJq1DxF@|YOtA9aAC3(lk)O~G#$@Te!VId-C9t4GtL2Z zS9l$3x61qbcL2uAZ5z8LU?w?5q9)5vmc#32wyZV`@E@DBDN&Z;5Fy!vOmQ~v^0FSX z<`L3-gX&(d3il;YI!O@Q3mk;(=qod2_h`v$YgT?J!u#c)!oNVVJOW6knfMai+oJT! z%)iJmE@Z0Rez53Rg z04~_pd}mB@M9-MdlDR!(UiAhHanlH59OZh2`DuPL$Q+}5rO~#u!12|)Ij%n9q;5Xd z>n*wy|I-)ZG&4L&zG%e-c1azBm~Ebh$yoA=TG}=T<{RnaVUb|J09NJ(&M4&&IKY<_kOF{LTiw*Y`4DqiKAUmU5-7IJy zZ60RcS&tOV4~X)zYCSzZCT|Y??vcl&SaoHEc_Zy+8W&TaXu|XPK9leECHuo%F5yf%hLR|C+JJ`y!9!)UG%I-9=;l*xG>tHks)p(6_H8vS^r9V+so^uS)1q%^IGp?r zHI`Gb;m2veo96MT5QeQ+`Rl|n;F1yGmgc{?+J&7?KZx=fN;%1Ab~+A4)tqv29<<3GIoJ#3%sIc+kv&3!5a4^<1Wa?9RG$hQ2q-IEnZ3z_?fb;k^v zTx+fTw$_@gmFyYhLJItO_3ni?BMPfG@XaQpf6RqK;tgzmkzGq;q$R>HL=j7iFzvD8 za8;?bmK^Jdy(2r&wI*E_u+2V3E4RWba{>BInxt0T&9!a9KiJJKrYd`xT~87ast~ix3X+~tcxFtNqI$&z#Fk*F6Mn;^aU^TvL zS@DGfvcrk1v~2e&se{6kP|7FS_C(T>)n*m$0SST=}U0Picf*zXvSZuI>}#ATIF6r zW3yd5NlBZiyXO}4;WxPhJ@q%sdJ&~rfxO@6qCwuQfTrH|nNz)O zhI-qq0dFH%UUTFlocRssZjNDw9P9$zV?`)18M7HqLXKsNVnS!A1z=j zoFr$>$)puMjz*j{iV5~JB7j9tq*ZDUwp8J?ON8tre~QNmb~4M*M57u(W#OYhc!XTb zMqFWC-E7Z>CW za4gTd;j#%#u&>>oCLsM~mZxy`y6c>wd29%>9bBXEy;8RW%U%jZ1lApK$^^LPh`!K+ zmzFTdz{GG>^tf-$g|>qbDzg7pyB#-k81Z4|xhs?vKPNVk9A|>tD2IQ+_TXvJBUhp# zwe{iVW%!B;-=f=5Xj3}S6&@K_=m`(2G@E{4)w{-xWNW*kt1(gb+|$rkiLkup0(~3m zsgOBu5OsG(22q!nN}YQEb>FHwHFbag{wb(S=retMViRT*oVxN9AR&VN85`|6z zbvEFz`%!04+U489g<4nswge1`1P(^6!h$1!>N6;2F5{paSm<6ul$yRrba0Z~UHtcx z-_7kz^VmW+)pW~|hsaU;s9&l4Eq7G0d@L6Xur_ZE(UF)Q)B18yUjk+BH8Rsu+EZz|X$0&Wh^#VC(HxIulP@as#O8Q<(iJX& zu7P}XaeugbE|LfqISY0zGE(S{Uuk|sYh{96c`}lPGMQWYl)}{UBFDwa79AO{m-GO+ zss;^K#48^D1u{~l_DJVo;Jd5ok2xGDF@Fa-3uZuO8JIp~Uz1@YR}*VFvFU30yzJtx;7b-UU#t-f3^{^$ z9^%9-Tw1_3!{gVUI2@0UUy*Kp>o)PxxMB&YF!MQZsaTAC|6q%A$_PqMt7%ab`H=v@ zV#1_2OilbTZRtXcM1PWQ&ZC0Zc>Q`$(Qa$@U3NW_wWGuugQfocqP{LX@H6J%sEMtz$l zgx+|WyT>_8(GobMtq+Tq5KFh(d=M_O&39s4xs>Ci<=qMXH-TK*hBu`J60JnM7~xDi z;eY=MU(dEdzMj~tm9J+`6we;O=5~$QAYMaBIWJI zB=)ggvPyQolrFiHmZCpfKRUHb5@Rao2bGj98};$gq{|q>N%cIgB>ce`uIbo4aoJ8d zD%llO8NbN?=xIVh+$9(Z{&<70?RDDPtW#Dcq!`h%v-(pKbty?j^E2W)}Yx;_MY6Fw|A9+n%m zU3x33@RbW9q$ZiUGVQ8_oAsG*(e>rxLWb*VTI-P!O)YD_8fZh4e5ZF>th}!$gRc~r z73f?2$3FJ#J&x8EO9DR)|(V zxvn?KW3i@Q{-^4maq`~}jr%_0cZa&FWV1vCP+qhhBcwCh;U>Fnto)$Tx7J1P{Ahs% z0V=84RdcKuo{(A6D^1$3nzS^n^~4DLa8?H1y>q!9+=b_Uto%u!o`g{ZI_swrt#0*2 zVaUwnLG@J9@5K0CzCX}*=SaPe2Wh!L_>}KQ<*o-0NQ&JjNwMqp#lk*Mbc+|& zda|vQqrt)6X`IO+KG3PHpCPj~vRCya42k@`+Io|z#J0x>S5}*Ud6CZQiq#%aSqenO ztp_{x$+7w_1=!#bloD58JQMQ)Ne#t3E7(TsUV|*X%kbXJ&Ilxv{2PREu*uX1y2;ph#*^`+<#tIuJNzOu5<)==P7XBJYx&DrEkBwpAXWsctWU>a;_P zT`nC~dw@QZCE|XQMs$jRnwdg;CX1!U>w1ybq>Il|*UH@ZN|&@Il&5$6mx+Mp>@hYFH=q22a@6^ymp zk`b8i);5fj$*xv_(IgX{t+&yjo_S``x0KA@eJ8()TCiMvpyoF+zt!O9{v^|Zxe&fY zwI51Y<^Imtg5%hGj}v)Y>LScUXbYNaC6WZ-GTg z_HHlY4fZBZ1t{n|%nnC`9IwjhQ^oUF>k z^aVEImyq)a(3`mp``UiYYUO*4VuwCVaMTTV2(P(H6BaHD192Uz*Dkp|&0C}H+@|gz z@#JuG_BOX`_BKa}unsJ9?W=zVm9bh=W)!Bo`n?D>AdiX1sjEeVAi{g8WuEDmTB>@B zS}4OdtlXNV4Y8`;@LB!s8Xl;2*Qdv--94rK7k!pHlqH@8T32MVYDl;wX&?^1Z?(Fr z_wXzaGyBf4#={D*o0g$$C>*pZKUU`Y&9!RL#I96GZu&^J1BMbV&B7#TW}J2W7`QOk zSkDNYoTLi*hDapVbeq}4{2C0eXE;ijoX?n7or`YwKV?U>Q56%rZQ^{Hf*&@d{~0?m z_*YkmQFkEk$rSEW<#FwnlNBLN*7gVpOD+rugJ>0pa9B_mzRbdb5T1{*ZGQ~=xxdU} zCqsBT4%+Rl_!G1X@DbdC_pQ80L@Uu~_;<*+fWSfcz@|a!ZJVjoh)IfQml?|Jz{8Tn~^zZrP|HpIqACNkSZisNN-WQ5 zVq7(r7aBpf!h@AyYn}}&lP5>%P0|tmHtp9PuDqM zVnhb(Kn~Ypn;abPoyFl~mQ&oxKNMgsbaFgXsRH&mT}*H?xe3ifZI~UIsP8Ol@$a6t zuN$p)X(tQTS2yMAh^sC(x58`Q!=~)wx`(H)io`GJgU|)}*ow|#j z#eAEsm3A>F_UahL68i3|^*wsWzeMKm7$oy|*fReFp>^VPq4l}Q23AWB^rEyDYEuYT z9ct+_M!c5PKiLMflQkN`BfPQ41>)N_n_Z^NX6N1uLsn)pLomO^)@jZH#9miFElluO zlVFSYj5ZVsc!&C>OlYbM;Btw%U15&+o0=Vb`5dZcE>9IQT!H9gNm^q$Q& zx%aQEZ?FX8kIO1FTlvXmtM3H3ug2;|dQ;tcLyVDhrLYHG)naw!)y-B{o&?!`p?zcU z4uo_1z!eJqhv;ZIw(E`>>}OarSd1WvEJh+S++PvRF9jy+N5q17_%*&43$}-dE5hQB za$%-6`zXI~E|P*v#oOKAuKoH5KXU?G(2Z!nZby^IO+WY~$CHU?@<1G7r2*XKiv>k4 zOgEoeL{|nKI5OS%>t}jt-Y%&&UI9O%+*@PWV9&yYo|ta_S_NjN6rQ$L#)!1SIdm>x(;`Xfr`s*Y4)8TafgRyyAGrI&!Y^gwL(Wk2CbOU zyOp6UaZf=fqs>0zKZ4~{!L;iyN^H{xBDu42l%mR*f*i|qX?Op+z=|nj_1BoAAr8U> z!8S*jSVE5xcrCJE@J=Yu&`WUDt&?_IsW`=>mi86$?+Yg67}@CH%ZPhl54S05=&f#9S#Z`Mk!UpGQ-a<#U&X%xH8`@3?hxm@gQ!5x*GDGK19INzuj$?C)jQHUd`iuVOMB7rHL*@khp^>gB zq`SWkN2@Z8Nw^;#)JGZKan`{{rh+I+`v+n;WFVxGM@4m})xxFph3TV(qSxqP3NR~i zQlKh%Yvh}Hus0CQmfiAZ1?2%F93XlrKHgu*!uuc#46690cwzO=Z_%84idqCA9tpEg z*F-7K5^^Svre}~DuAbPg+lcH!LQY=y>DLn6;!K{s&OlyAAVbOcWs^CQX#;(Pvq;WG zzAP1Qg<_XfVaePULIrEmU4;_^`w8ZQ*1x%3-GOJqU#_f9#HUnvC0t{+tX+M+Y#qj= zsNP1j&lGijpW*}krbXgN-sjqd!VCynIg+Mle;rq^OmLJ++=5CG%j%ehoPbqrjLQ7(O*1;3N-$9Qi(Qt=!h2Z@qX0mI01xQa~A*`q|S4_6}lN~EJ zPsPf8vxADxBvx+3CybT*>{KNhO03*Y^WAUp^vQ0osj+fuzBr{vs|5w^1?g#R#tZ&; zm|`&xeK!DE#hT+*s2t{ObCk5x@&G)W9px-xDc6MNF@UnxesZO1(Mc8ytN*)F`#)zW z{!a!1JgH@ZF@bJ$bNc!;ESLO69yA(_fKFSO@b~aVfOH10);7q{S79G>9W~tZ;WNQr zV}_ma?(E4B&hgGlKlX=e%u)+6_$?&q7;;d=ROkW&kNJuHVvy=>pmO4M>J>&UAaFQ) z>n}ZuBCsz|-y2?tvNn1oFMNIU$Qdisqeq4B}y96 z?)o-ALT2F$@%WJ8tH8mp6mO~e-pGG)^n|AcUJj3_i~jqGJY&WQ@bKYk{+IV1(;cG3 zYuZh1joYu4LfkEB(D%D9k%KZP z_?EipH4#004dWYqS<7G+OhOMyuXqDHg9}+(DW{qhfVVy08PQgCbedIg90jdEg3b0-UV3 z>F0IRj&- zGXW(94y+p!!Z!%fgB*n;ERUSumP5ASvcv1=&B_$_R zahdBw$o1h^S*K@Oq4y^rMOB=)4>b9`OmV5YJFi>q!+^BWI7FQz(W|@ep=()?l$@BIGH2 zj7Pq&TJ``$lRNCg2hd!N47?Z_zDRFX)nmrDUJOuNopvU3Uv@|ZPsA|U^=DB(o8l_= zrITaz`mgDH(u%_L<@z%-tmNN`>tVDAU5AGf=!I!l8RQd#3FOAT34iXUeq7TA_+=4r7dz->Hh|LkfW&6^|tN!)ES%W=|~f;o-b4pfo6pk*dkp$F4@MxdJ}D{bsO{zV#($`pyypehXkunsgNAKjEmZ+cHo4k- z?HQ>Qyr~Rl_*~598L4qW}HAWt7IS+vilNFvnyVmU43TcPG0o<^Y&tF}&l zoEKD>`7Ud}kuY;L|2bf#u77I@=BnlY=yz48HPdND+lhoblQ*ZW8<|+_qNs7(e4u{; z4Bh{AR#n%W-2c*Fr^H)Q>t-O{(tz>0beBC|9&5ZjryDQNCmgSvzBph!pl{%KeK=^m z=>5cqeS-DAD_sRzCf7Um2wY56`a-zmQT<9W^caaug`@G0OPt(Ar+CVn`dp6-)O%!* z99z&JI!=TPbEg~ya4|bowH#4=%Kv|FWLiq0EEG%q@0LO?PQ*Bcita0qTLK0!mvegI z!dimv(RX>7P}mF3m-}eAI$&&|7Fy6EHq?M!O1gM5C} zH5W{m!iD>e)yC!vvWxwE|7;VyUfFcO_Dirzy^wQ?zQ&C~9D-eOev$4{et75*kMv4z z$b1}GojY_4@66#~Dj{2YaagxX2Rez5qx)io`bcEC^W-Ry+ZQJxBu}(~T5?q4vU28` z^-(ohvaK5s20hB{O%bGaW4$Papxjh~ywKtmg7QM9ih)ZIl&c8xLeNG11dWBD9Gjq7 zLeMlt5Pd?din7O#gL9sfATD>FdEo1cIQ*@xLh#axd8i_-{mUodYwAX7f1b?0)Nz9@ zW`u3|d*FJw1NJFHVBeS4<1dYL4azH;-Q48BNThGzDBDoGzeALwHRKPyRGotThxMKN zPQZWPvU*b=v1p;CQ;2y|gS{bCYR2;tVHQW;jOFtyb_6ANw&X9igGYuB)JF>71HEssB3#wv4Whf{{ zQ91kcy)p*5`cB~({@wnLeMk2l!6how$eznPd{yKwxE0m)hgx(4OH|u5M&F{poC1%S zt8YtzW*n()ddA8;qR^)+^*7B;?Ka;9mvJon<1#Hv`LN?8d-buBBkL?^qk#) z=)v?>=_OC}z!B*vU-b1%{|SkFF|ubFvovBSF0I3O+Nc;3GIZu43$&Avh!?jX-dBgk z@zaFBMcaMo-ta6TNQxBS9E`5iHjVUmMy`iNWQ(C8uV}l7zJPeP>U$NNb>n8{Eu`q> zi~Mq9)66R|=*&susk4@()l}D1R~Xa5?);rXlF8LO)$^(Ajn|2~5=Nlayh4z3@w8~` zxWJy}r3rl`W2pJAMfT55(nR;yc%0Y-xSNH=^(G3rvQ~ zqOB6n7ud6`MQS!Cg=efv1(q^o zezH!>%guR_dR7sU4G~nYzgUXzQzNnB?`MD(aUm%a^{v!h7b`S>RC7FD+Rf2bg4%Jp z8s8vI(f){f`9SoDZ{_9M?;0i?nC<|6$je7`yR)?C_2~Ar(w#fwEA44(9#2J}A2s4AGLIKFw{-*$@Pc?jVev5SuFKiCu&Wv z)BNT|&eG;KUSLuDb1o_E01mNK;%a;)eDPq4U$7|NWmZ)8Q@o2RAlIVXJ_Njex1xB* z4xu;}+z-(wQCy3I=6<7GUgj|Su1m+^yW!X+TGK3HPZ9F;@Gsi#j^XVz=OY|u%XXHc z%H(BAD@W1DSbZD?nqHv@rxs!(%eqRblOkeW+ix}e4vq(;-$ZHA@>ul9#FaNO*7L2g zF6N_@(hb)vj$}T;h&g&DKY7wVnCzQ+TxF_gEN6(p0FyM|J?-R^C zM^E|_a{QAAn#VMv5O(uKNAREwz4pf~(UzxapgVfxO6{(PsD!saY`uM*%(SDPmHv3X zae(g#7OJ%m^n6ObdZgjiAN8D*xL)*ZPhz+q(yM-=2OrXF`}D|x%IYPw6@p^oFo!_}gU>-T+VX?wk&KmNSmOCK81(ood;R{d+v#eFa6DXMLntK#N-b2hDuBAut&I&wh#?7iaS+j_@$z8tS5x z9g)NS)_q6don*L7`@1ZWgFXHw@%W05jNoI$`~6gL#E#&4q0T6O3=ieVL7TdJO4A+6 z6?zk$LWr4W{E9D?Qq_y-ox3067yW1iABpZH$lNV`KyMOd71@t^V8urvQ$ue?%F82v zk{(!>(gTm!@0iFtdTOtwW7a?;s;*PzWq?NYmJQiiS9EU!2opJm+a1f2VCdc8MM(?wF#`$y#M4Luo#al3FP;<0vLcAQJSFvxhJ zIjxb=+8OV;d7fb`<-Yky>fH;t+f#y#^IQcyoWvcT$Kdyx>GreZi?&-A-lIKI*~tD4 z@6izOW`eoZ8?zjeX~S8fRVpHk?pzr?JN4!T{U(E7j^nN3R7I4AMB`SQftQZU4n4?Q zOJFYBj&)6Ubn}<_(sYNDzxVn6Hh*XE-I0;u%*e<{JxwemB_i|EoAG9@0u*#(N@5_Zcgk&2!?V>xRc207j~$be7a>$#<*z z{#cV=HJaJbXWxr9Oj7tH&051i8F)JjS0mTy^o~QTQDTOIH?S? z0&^Pw02zt%1|fTT$)u?1MBvcY-OC-l3V4eK65cBLOYYClcD*{~hWoKZF64fE()}dc z1u|ysm2h8X`eZf(eI>09EOke2l#nOFBlo)YME~JlmZdubX-HJ9ZXhnXu>9@liI2jc zZgx&hi%g83I37N~d75+TbZ6we=!p~Ivzn)+O`V<=$rkrpPxCa_)akBBrrKu2P}SIi z#HQUFeD^fCfL*Ljd@0Wwt2lc@{ksl3s4mhgVysD^fIjnn&y;eXw&9?(ww7a9lgKNv zTEY2}`vHAYnuzQVbCqDbh2)yTVcrNnkMm(K{+L%_+_gvBTyQlkp70!TKxU|(k8bsy zhPvl1>Q10TPBsyzCrSXG~RFSO99$@McG>y(crbgjtQ!A=Ra0u7yc#VU#+P3Te} zTRaMOO z8X_!cz#7`cc`|hk{dCY8>SChyh0I`4${NZE3|K=FGklu4W3TWci#)YzOj$!Sgp#U0 zI-cmb=vNQQ8al}NE)eY0j1@8s?D1GQv_AMLb9Wzc@Kb?ktp^#8|x^x7zU8GZ8o=oi)_|FZoE`BriXfIkvFGJMVW)&s7P z`5&JXD}Fqc_jE}8Fj^!pd!p{ge%Z0)+zELQ-luG`$^ z5ud6{F)eAoGv?06HyZ6So(~>A#AKJPk$Wu5srlUbT9$(}gH}t#{^Ut?k-7U_wiU|v z`&n50&-Z##KYXh51BZrMNeO0w+5~-KG7mdv5%>85=wX=3?o4mEx&T>gWW&+oh^wS0 zqv7b)5oa0c)gph<+l_LMe+%KFPcr`mlN-J-gDsie_RTY|xDYOIjm#N=tHp~s#a}QJ zDU;*7lLJycO;J`aD2{sMAD?G82uqP8Rfs~CBa>sWU=VV<6u3Ka!;aRK3G&lE2vlBh~? zhlG4wm^z<__O~Y9<0Xl2K9jTy%pJ@-hWqPGKXbUj#5z+yA}BkgF0tn+xeQxj0nIQH zih}XlEWX#f3sAuj>aJv%#QeJ4;t2Nq$_LR$-^nq>aNh-dkjMUJ{+JVAjrmJn#U5>xG&i0U0nh<^F$LM#2?SwOIHQ0jQe34^`4g?5l|Hqg+e#@O61l`dZ)X ze__>VmXmlZd2zNPrHOJ@!f!|PUro>6?t`j8C=W;7l6-xSF=->uc^4_4?2{d`Eq<{! zwSOlKb$;&%cB%CpwEeVDVuE=unrF4{xsCYiFn`I^L9bTyioS)VOt<&fO{HgkYajE)% ztWK~PwWp@^fK~n$ zyL|0_hHr+xM~1C%6pH6AE9W%BCy?MSwN0G0_(6!{RR61UQGR-*XmKTDdxE8tYG2wO&7)Fv1O?t5Zax~64= z^Od-2vm5g3Rp~E*w#tb8mfGRoIru>3SkBo^t6Zs`iP=u84#~1(T2G~d06t_ zGu%@pzAhm#*yp9x^?ytCN%?b(;6qqWZEJEYct7?Ok@}3_Mtl8Zd|{G$Lgp^i@$m>6 zI*-h|c;w!Ys2a^Lz5|Ku8Gt3B`1}W461m{ieI^;=d!X2nJ*o(Xu(_T_VMD_WE104=Vz;{6g`If z@`272)c3FMuLm(Y4AEcz`R2c_zhW85{yOpA$MsjYpEoBK1E1YD<8zeq+iL%b{`s=D z_ZQ5B1RzwfkIjQ2PoO~&^6e2-=Ik_9M*#1G8SDKXA4%I`J5 z`I{5*?&sKV_(3i7bKI=w8o9y#sCFi?iRQ+F59-1ESnwe|SP%9KCB0eW5HkO z!I`n(BYJRlEclonyaAJ-9$XL$KB)(9fmz%8$;`*^hnlmEkkj%P@RY#uj{3KRGiF6k zj9C2|`gxKYlz0MRly4hm@?vxTqiGH}Y_P%nRaANdaSB|k^${-s%jFG-fhEeWMv(PZ z0x41I>A^g<3OzU>#eiq?JcLAXv zY>d^eg93k9_U308%EPbg<&CXxrp4|PGnZP2L<0(kn6IY2lrC>Xx5SgE)(Jd}RO!J+ zTA77Kx?NYy~PGW4fYxlSGRO^}cV@S&( zPydapqDRuSrlQ1zm~E%$F`5=Y)?$+#CZuJlA018N1|s=-%-;8b3ftW6iL#(ysB7_hikzw+en_r^>cV= zNufFAg%MWk*RwfB?$tYO@vJibxOCAH@Mq(Z#`xow<#U~R%SD83IYKpwg)@^?&QA4+ zvm03mwYzcuz~L(C8FIL;dXMg`+W52#0gne>TvJ5v8p{Qvie`7=Kghhw*1bit8*pGL zj?-OL(p?;N+<^~Qze+nR&Gc(YZ5p}PJPtZh_eY!}=(H)p20+~=q=%lYaMUnUK)nI; zWj_C_neq->PRLMK7q1iQ%tzjpxkKQIQN9lU9JgahA%O{IC=g;vi{D$V>f9yqj%hn6_a15_zhKg=f`brWRT`^EKtNuI~o_TI`H zPsJ}0+H1YB`pvOg&|xB(m$!7EiIh{cy`yOzwK;gwXu6+oF+=h%#hNzC|K%Tvxbh74 zQT<(`I++mp9U_P~Y~pGx@+62DJiGc+O{AG=p~29JwE3hqr`0f|=6E5I$PbawSyvV7 zs^V%_D}v2AC!}jYCXqJ=9+%RQ(Soc|Z9Qs!Ssqh&t;h7;v&6#Zu%2jldnPC@1}}q) z!OP%c@UlY1%V1$JGFTXl3>F3>gN4D!U||Op3xkm@hLI)x6ZM(j+bX$5{)-oYu#uAf zSz5bMuHGkv8pW5#>RSR&3AwAmM;-;=rpu0@ zo`2kG_fx9fsv>FkHK7{2-M7h;>aN}HJ*6{Z>NjmJh#nhZEk4QiGR1mB;J!rfjRNyo zb-d{x^nQKE^q6V^m0ZjMH)M!)m2RtjrZax=scU*2{LR#sq}Bur+Dw{XU;J@Z-4XB~ z(?oXa!v_Hq;{xkCzC7TQjg%?v(MbcgN1YuMqOtiL0AB2RdIs0fc7(G?9&nD{hM1oc z#p z3*wRaad2uQ$dcDLDq*Y@VNO`O{&X{T$8iuTR3qa=h47G_h4?aPu?eE)r)%KS>ONrQK$!p*5 z=ReWjAy~o~Ts62qWIp>lIH^!;tZsrNIu+WVTA{70xV*cdv(i;dbVKG2!+=cm>BWkG^0X+R}Ak>A_WE<(&cndy}xq8O+wL zbsITyqv!#U+v93Ayx%bQ`|;>ehZ7ga@B`*YokF4KX(2uaD&Bmr3m3=dQLpSYDxCNa z+4;kF-~g~)(mJ)RxTs{(X_hy{a;o8Wa^iNK<{)L8FqeL4^>^_3X3tcOGbdW5<}&Bh zxpL+tnNmj@qU?Y(=T!n6C_8ql;&ssaw=1nW7=6wHPP1c+YgY0RS|^J74-h z25-a->)d(<@M@>6ar;q4X45OHvJgip>S`BfO#%Vb(5ZGR$iH(3C^T)YgU5_n&tsKM zPQuZ$_{I$=&NLKN2-EOJyFB1A<(-I8ov0W5vpiy1|CR9K`d;R<@~RO91oUK!lh!0= z^f-GdPe9ivK`rEZ#hn2?qx&0%cZ0YAn&!`Qj+2kPX_br?+J`}6EW)ctBIt*@tWII# z56@9n5~TXD8K{p?4&vr8J*`6Dfn3-IpAUHwOyCsyM2Vey4;6_IyyEtLed4@<`os@x zy<3eZFx}R>9d=zO_<-mW3sYe+6m9aKI!Ndx!tAZ{bcGx&rmKU6(4-HOa{(%eLDv%% zRNy{ohl>pk?xU?9vzHX!ygzC2sIV+YN)@C6m(RrrRionnM$I$FovTiSsMAB{J#d#r zIA;m<3oRfBFbs$X1XPxM+qTj`#a&CfB~oCZdqux9&zxZGh^k9Jjy|s}-BkMU1S2b} z8|@G`tO}*y=b2m3u90DDkb%nL*WIc7I&>;w5e|W~!A@Y~{JVww1%J{U%w*tksJ~)?Q$n~c_6PQ88@@%c&Egx4%;;~|U*@b^x3MAcg-9K_P25u#7s~Es z9uq+Ba<(nuJlE>MM_g@z*805WnOCP5e{QwA_>MJ`il^~;)0%?fLO!Rg$uC|Mmiux0 zeztwzYu|SlFN)NPoa!pRC_J+GlJM~2;&4XkjKI;=YhjuV^*QW4!ZwXH8Mt$PL!6VA zWK=Jn3_a$pkfUhPngj>3c}Cp0K3;s0*7Siix_oQ*NUoB!xO}sD-Vx6FXptYkM1d#oa39d~HZ}hrubi1&2Z0+8|Va)F49J`x+b~k$%26yq*ku?1Ag2Hqmjx{}GYt0y3r&l1#INRnf4L#*}@bvTYyZPtRVM*Zdyt%2t# zYLq{s&DawnUTY_f{Nfp$DHCJ1*~&1%{Lxg$VLoZkFy|rVEb&w?E|FoqFHuBmx>$yF zmd99w)hk>;<2=Q8Xd6~@l?Hl>Z_+j_mG6aopQ3HJMZPc68pVx!iMwX;Y^kj@QCnn; zUcW2a?p>V6Wn|u0;Q`%~q-c80;v1xBZnEfY#+oxQmsB{DTYmJYdl`yaRcDR)PGw@| zHA-#>RWwCDh#pO+aJs6s#@yClc#9N13>}LnSVY_?LR7!$_Gk{=gG5vR^m9BzciH_uA&?W_L}Z|?%%WO?@S zCr#Q02qZ|ws#U9Yu2^&kY=Qx7fu-t?Mn_zswCKwk(FfNRC=2DJtUEY*psK<~JBA5**Rg8aG|Kk1!AK^Xi<$dPhuJWq zl3&%b!x6rRAFW-cb0ZkTE^&>NUm|arU-UUq;KD^hfJBC->nc8N2E&}M=f9bO#}qP# z*;Sr;hu|C|q!V1mmT?4Z@yoaio}JGZ>llf?ZU3}&`BmuYkCq+9^EB3WfJRT%aZWEr z#Fc1@y@D7%b&&h$q=u;$TwW}FY3YY!ZTtC&P^3>ue+gR5zd97Dex{*L7Mj`ww}XUE zSnWntH2ZjR-Pse8crsy&K4rbET-+ymkb^+@gPm*4> z@DQ&rat1M6e+fJC_ygMV0rosDO^oH)&SjG57oWD3pQi_e--mIPxt<|h^p!Rj-Cf4} z`f+Qxj2Gf$B2T{X;2HAZc}9({V;`j@zh1L2-uj1G7@4XZiCCOYvzuZMZF%;K1LtqB z%F3p1so9I9XO95JugIpK#_VkqVzM)n=2yhxGHGOuV`5t`u2qjn1Vs~mSI?S+-%Si< z*7OJsn6>zTS<}zdHt1Os{{<$-cGc4JL&#|AQXY|QGX`G>OxE#FPWb<5{Fl&f7Rex0 zTF1-qvTpcQY=}i`iq16dT}`mQL(XCozcqeE&nzy8-@4^Q{PEaBS2={g*8KZG{@Cot zU-r$X1boQi?|{9peQ?2HU}J?Y8sR^@-koqs`S#Z25vI*C`Satr*HXMeeiF`V1X9}2 z1~f)L`xCp1aCJLW$5$A1!g1$tR!LDS)?&}nx+Fg3Igur-p(3JBoWz77qTd4-$M9gs zZnMwo0Z2JJfr&MKui1G@dv$xd&FI$mkjq2D_-)7*SkDL`W<2)wjYpQT5QmTB>+)ca z#(>ypiN!NzY`AF3m~i2gDUn=a?#G-^(MV2m$hsh#dvoM92`W$?YHYe!&VW1gJs96 zqs5%aM~6g4f;@=o>>ZKMu0_J{(9gWb;`7Qw{4*q+zjo-lSIfKalAk#9WgDm7_om)o zJM>!f>UFD*UcZ8}?`%DN)zJ$1c1^2q)zNYCZE`FBERLKnrz{M?ovnP6M~+>?!^h;2 zW0QIK*kX8wqnAa735$@|nN$2k@pN5x+m|>}I&&P?rsV7tfvOdSvtO*QNWgQog+_SAQ%>f9u)x>Yxsx=*D8gRrVIAFvb?tKPU^}N*#{E9m~i9DCUJ?<0clIVy{sw z#`lZdfo?I>usVFRU*bzaV481@DCEdKFUblue;HCU(hV#|HW;Fo=IRC($EMlI3dP2N zGNplb^T?5Lt60>D9N*w+f5YY40}AaPL(2AbZ!?|R^qK{q(uitkZV5m_yd(BZ(JTBqsY2?=+6%3sRAc4XQg3saJbVy}VE<(50nz@hCz zEOrVSiJbCtc70cGg_L;_<}aKJ6Hv2h#UkKsSv4EJb&|~= zVyxh89?MH_>gswqS6w^f?zPq~LTrT8aC0|k-Xp*3uI4d3{A;-#fp_=_Cc*^V%mzA= zh6Yt6>5&9+6wKTHrt&^G4(RB=Nmf8s&@pW?gW8|H=pq&<GMU^k1Z)-5^zPa5_j~ z22IlO++=CDzmY<@TtM^CznDje7xaOXv;pH$K|&mTmZ=@~Qu((CNlR)B%IYzmW`M4D;V&-}jiGniA;AOdtBKa{H!YZ_HnE6gr-sxb zkH#-E_Nzy3KJWypvrflOB5%UxYvJg?w1j@#MUbd_Jl4(kV8GJ$N^7A|gZNx1 z?~j+P4_p!+SsrcoklC5!Vnv3GBN?w98?3+>o;j(;duFLwm zz!BoECT%+6_T3|LzXUfqX9l-`9E6(VhW@|!hGmG)x@LYvf4@H4FO_ISz5LG3Q(vpe z`l>oSKFj@7mB823x)=4*z*_MTiOiIy>2t<0b=ABXj>u@q+&1{xsjI%skIf0E9AtwF zaz-u{t1u~S9A%2dE1U4$D|vP_u`ou&YrHYPTA4?Pls@D@cO4_5$S8T2=uf)IG`8{T z!F9lEcAhoE@fLp_XU}k)%iqcTHS1-4AAQK0zX>T)cdF9cTx!qiy7>j2) zZ>jOFx}(4m9@<>2j=ZI>i4u<`cRpswWg&?=ecz8L1NwhmGpB{WsTA1+dzb$(>%PV- zfRav~iJ{B%v)rs1+8YPjJh?*!rsX>hxDaJ^B zEuCYxG(TusDQP9If$}wvQ4@4SysMVeDK9Y0R&}nqvvz&~6f@)g5OZH7*cxxL+#AbN zcl)R(t1!<|;n5jwbx5kRojQx{_V%uGT-!M%#|d?7w3d6U_V1Q$v3BqIFz%igSaCP9 z=iMv4@ugl)pt3EltuSRgzVcNa|0?4&g1(A;0ZsDbgFoFX-XthUy=y0ICSns#_|Xnm zdv}gF;!ED3(M#6r_;qr@gzb{rB4Yjbk5?q%~uQ8VpBH3f z@4(`U_KNi0xOorg2jA{jRi~iKrSei z{3G5avEW$wLZtlQ#a3q`Z`?aT0zttV90c+#k&5g;W7v~-hJ~Q7tG{aB4I36pG-6q!592}u&JLX^>_1}zP_Ylkk8`Nd> z0^aMBWrO=C{~-$KJZ+Gfm9Zl!a!rqQMX~ze?i{gZb127NJ@Ea;qwH_#^YR4zwY|Po zbGaD~rGAE-2vbPP)1Jh1uLfaqN@d)q7t6ROrk9wHQu8s^d`vPQQ{=;%?vEbmMW`|N zG=mu3IxaTdpO}s_hm^ti$Oi|TeBjE-0=mKfLSj1B!5qPj%!$W(?NiUm#W!Wl$t7#` zoLn?uPJVMn=A7suPt;NSryg=vu^IAJZT67IUr7(S$=_7Os%Oo+S)+R3^7Oz3i=|VE zpc%NJ8MvSsxS$!hpdPrXP7cEGSli^NNv&fzeJ4AXqSNWORSlhbxhGW#>+u65kF zK}I8`{01*g*_4m$bFe(sV9K@}pP#%$O<~kB2+$w|O0(~F+C2NU;aZ9(PI_-6iSp8v z-*l29fBwXiyoBUv|GV3D#C0q_u`qBrJVKI3`PKL@ z5U=)dtSq&z8$*NXdP^U#(J&wpE zsNh86g*c&Z+SX_=zT&}~?&rVPt!gf4P}Yxy^Y#pM*f8x|&`000fy=}do?9SBJyM+* zHWq2a#ta|eoaF5Vs@&8TpX(?KuVU4ke+SPp-_+(C$@wNP+b z9&=Isr(PdaqdR%KSM4N>H>X2_#YUP$TS`O>)(d((W@5 zVNbX1mPWuk0@=v#o3VHhj-!ugnDzEh-+GJoOv<|CFyGk6&P%v7b3rQJD*PL#L=Su%-Rh22 z;hPk$in1SC&rchcKHGHQT}{?2$>aU9wkiGdi`pB)21m{Iw$1T|G^k>ZE!NqgDl$dX z9jY2fgjTC+5+fM2hL76~=ddk21;TN=JCxj`d64i$m`f6<5~FMhL(=SMQW(x-VIY)P z)nai+ak%k5Jwyt|&r}L4I^=L#!;2{|l4lJsGUevi=`!)NAIl^8c6{sT$`ai6^nn%` z8eLh6299vwj!hqoJ^w>%$Kf~I-yZU%EnXzVvaRi1Iq`|{Nt70g^jLppIEIqv>-bWp zeTUPkDiNd9dY(+8x~VDwHmG*fecVAYAIDPfzQ3_Yv_IEe9=#(sUg7N~xb8G;B#5y` zcsR6xzv7Yg9RBcaH4?-p=p|p?R)KVaMH;;u?^}sk7r?` zqU!AR-FuGQsw#<=dyjRsRkcRr%UZ7 zJi-bPyxGi|?f*WKN)6LNE)>ml^sSRKWu1&R>!j{0dYv$|JJr*-nCbwyeqm-&>Kdw- zrTU)y2rc9^tndaZJbF!666t7z$ChsDq#Ad0rH9=Ivaw5DTFtCnDIBEDN%bSv{mcdo zJ?_k;#|7Drprck*Q6gX1aGCbi^x7)-YG>!=*6qa>C(D1`k>d#TMuOJd;^-Zvj_@$+ zic)B&SliCzWuTsN@8qTK)@m+*@99k3y)ik_qbAE~QdJbB4?Kcv`iehw_fho&O%9u? z9{^?2RNaGB6K7a-CD6-oO`ug|rBGZCb*l?$hc#C`?l^sEK$1MJRYgoAl<7Ds4XNgK z{A@8{->E*v$)lMJAzyh^Z>B_kFQP0%ZIi1${_6C88*`X2A8*W-Iy1T0%!AOd$Hbd| zZxsw%_)HC?e0bjaBze=;<^TiQO~v-IM?L=$=vG9~F(>9T zMNLos>nc2%yedc(Ly-hQ3X>JyF0qjUqq25tgf1`X2fcdpSshK(tIm*TkD$2mskwNE zT0YIv2zFMkFNyz8EQ5^OW4LXrcNSer!46p#>>l3(m7|1d6n${Nfd zoSUP0#j_~&f)O>TPi?~W=ny|S!^4`#HK+~WHwS}`B_zMEWs#?T_cW;01Ajkqtnc^o z26cVr?`A#zTBX-xR{R%1i~Zf=fr45U#n${%VBM5v??TH*NI4>mXvB3Ui0h8zQi0o( zo#{ZS$^9bpuJrtvARwW@w>maU3K@k$fZ_L*ucUxPdTEIfJrHqGQ$0)SA^G$6ignz zlyAN@uVIGT4X-Ho2|aqK+>amdOWceupTzbqfS82WBWC@sY>)6^MVb$bE%d_Dz|E+Qg3#@7 za)TtXDT;^*!O{}4I6^>O$)Jv60I8{$18bB%uy|ZpsW+P;boHJM(j~f|-#AZBDIjpA zO7Sz}dEc7%IHk=Y_mn)HDN*P{${Il|%oa?I*dj*&rd@HIMsSHF8u~sl4ZW53$*gI0 z!ULz|q1y?r{xXf54d-gr>;-KMRF^D)VIq6hLLZj5X4mWXDg9F>)*QrfoZ zp=uA2&HUgz^%iIn291Ik)O%n_@K*^O@vS+^X>Y9raHRIg16^-(NhvM@FhWoVjldgU z%5ki#8AV;wAqhKeIi&&Dw~dL)&2o}y!rS~bgssLCs^zp2LVOL^@J}0?s-b=%b>=2H z>X*b?$677>FpRfr2B)s{!-kV1pdTvTzdZt5OJ=Ev z#MRGH`@SlB8BP8H9%dn4tg7E;8boP5)AM*y8zAS%R=Tw%EHZFT9j|-oGqM=Bptv@92 zOZ8Z}S1)|X2+}FDpSvzbbTeDK>wLcIH_tx7o4n@YHC=~~mmoru3C7%ZE61jgv#XK& zZ6067!e-mw1WHd4Kf?bXlv7CeWiXkuSw;PU*@pIAlTVd=-5?73;s$N?;O~P{^z(8Y zTSo;rh>UM8P`5rH$DSLTGOq~~wnU3UHolN3_p)-3j{Ncw0~cs45n}`^N4W0u#fEi} zoyc{<=D@41`PL4d(I8Y?XKh#43sVMMaL9%W8k7$wVt@r=wF$eO8@t-uof9i0bjN(R z`ao#q40pVaGmBy|lO7Z=Kk7ikVE@dqrK`yB0T(*1yVt7l>~0cb{=Ms1K%~j(1OG zyv$W*<$TxneY*bBtZUrXtsX1K4oCfEXW$**ciK~qOB1o(9A|aJz2z1;)xB$7+rziQ z&lP>(YbDF(AHWGcvNrQE0!fxjrZP#tDG&Tc6cO^2Ji#?_wzu)Z%o4w~%U8L@SNX3{ z1NgH{&S`{#v@3A0b!`ccFN~ z4Xf;NrN{1Q55`+g$>y8`6i4Ijqm#KR7Nrd`C7PUq^a)zJQ4G~kdxo@@rz!k_9GrjM zs1MHZo0-s#jZXPj&llpY*kKC)5MyLn|Dr1`B`Qt}Vr-o?zqlT9Gm^M8I}CmO1&dsD z=RQ}C913IMOHfLAu~8e_RG^1t$1gI5MY7Np*)RMRzmRiOe8RC|(WoGH*6~)abtyk}-)1cmtBBY+eYj;dIIim+6Q zz=1`nZO%#VUN^Jkw3P1CwD+yd`7g>k|B(~~GZafltCe6%MVN*oP@1{<*E=s9Zm=j`^k^hjAy`s@$A#NYt($#3K8_ z_yi<=@oKH?7Bub|zIIj~a2~2GUS&%?;V(+K0gQ#KMQt(U%kS;zxm@N0me9o9TAuI9U= zHx;jJ9;=>+!_J#z5NViUc8E61}n%XME3ZU_)6v-k6JpG@)JC zAPvD@G6SBvAU4BIRGB5Q8Rt=_KZVmcE#V*pv3AP z#mHn`XA7rTEi`{+mic@>rd z{L@fpF9Y>e?cV4|FL8ktnG~-nNno>x>L+*;XXF4-D1Os8OuY3e5{nea_{bs?Nd+QNQ=bUc`Q92D~)vZMxT@V9Hv?tp`#mV{!5}8&D)h~ zk(5ho&ZRY0eW?fqq|7R%C`=3&NV&RGrlE9*wq~~THBMuA1++>Hdh`fBQ>P-V;Kn+A zt*(ZdV)URGX7u7Ur7D+V%@C!eA6UE-#ZbR0sXZO(Oe=%00$rt{jVXEIxe78Tmpo@-WX6u#ne^h?grI0ugun z-Q31a28dT>F5NJrpq^B*x>N4c1iwsVu|1L9H`o*DcXcKzHRB#_xgQvZO?bb|V9otH zIMug*%WTQcl!%gEio4-|WcsGq(>Dd|lIi=tltv$P`|Xw&XKQ&ux{=*y4`~08zMsf+ zMknr=VNbNDQQeCjY-*yHjuJV&kikw(^b}P@18B0k|1p{6V&&z!>q7_xl`w2(QJLkW z4zLm!C?@PyX>%Wd(pJp#iMDb4o93_1{}CHSuS|j<3664#+=%N(n>MnGLu&VrfNo{m zGAQ=iQ}450J)T3{B)thu%hXRxq)$5Lk2Zm40Kg@R1UJHv z*j=ZN9g%lg-NmuIuA#J0Ql>0rDaDXZ=26&Axle>AdsG@5=&M%`OOZV+O*c!g3H&Cv)$hQl z2#F{?7iuto?a;)kkKb6)M_P%8l+8pujWceJTxvIgTpUfi1+xO-+MB36C{v>rNVPRZ zGGrKbi-oUEOS@Yw;&|8lagQY>3Al>p?&b8e>!!-h=;5Wx6#vT>W+!ZJ`bfiQdw(cwFYrbY^$X7P30x2d*`RUK zJP@qb+6Hyg%eqNSeF^NBYb!*KE~JBO)pAB+Um(@ISlaJkNbylA9?$Sg+xv}o_H)c@ zwb1q+%G8J05O@JO#Kd4c+9IX`hw0Wy_$6VMyc*#>{AMlOlC>k#mcXrT2~Z;KRad+U zJZpF#8L05Ji1CK;nI(*mUl^bA48~{3-x&*3(BU%pj>$oHq)2noqlq^L)2X(joxpsv z%_yA;tYu#C;(e*Y99b-c%C`%JT?B`9D(PFooxjT!;|wF zR(Ad+0wQATir<}w^o0Gnoak1MsQKY^0I%@aE8O%hMJzctSlUpFic~#|M$m@L0kv1P z?00}qS_}8esSy_6Eie#u8o0U5sd)L?S-D?WACObRtA*67+hi?xpM=9n@|_o!AfxiwnzRt(3=nY%D(r< zq~7=1?-!UIY#RgE7#PL8o>7e1e-D3@W+k(3zW1VY{2qd~qkgcx6U$aUc|F_aH`nP&NVJr!<*zn zjWKT|jLB?tiJ$m48Ma)R+;&R-O!m>I+AOERd(D1zWR(`6MFS|YQ>Ddf?lfYEIzkeo zn2nlL=QK)NA;RhE29iTt-hJ!NK6$rsu)zBsqoRkwHbjclLw#xo3%~_2-6lAxp!8N{rYliA;X(!tW#c_|Y7PyiY`09FGl*JHiM9XCgxwk}g2 zzNF~~!78p}_rni?5(zeFPLK?J^W`k4KnlMrNaJ_w{#R7p{#f40fVn|*5tC*eTX2$3bY-nKhtGyRj7yIaE`D>&um0?2oJ8j;*rO0sIijr2K;56FKa zp~3VJ3;?a!2hPqQhCq2$f#vQMFIo$Gy2k~o-7RIcygc2!3?r9{lsQf<8vJr{j@AT( zFVl9opTY+BLOuT4oGQOn6U9s|jS^ky(=|B`Nj()NQYRcd#|m=w*E?jkz0sBfI2ZwT zaJ~RMBtzO{%~mqB^5Q!3E%vRcG@-T`43U>NMSH4|m!o}?y1M5@_Gh+v6+ecSkT4eK zqj0ts5{r4Jk~fP(?}%oNa;z!;f%#lg4cQlt0qK{@$wYD`RxsqNzxK5 zo)BKI{I6k-O?&ERI67$Wy80@3OKE!xf?qjr(Xgh8@PSQJgc)p%RZdEgsE6OydkO|+ zjj&d5$nfZ>n6G+4cd=!xRkL9HX5j{6HAQPHE7w+DD*Y3SPx@D`B}A3jWcoKL)xYu> zFN(e?d)$k1(?7r6KhkmT>aMhEWUSNui~b<9e_!4}|9;t^`*)S}uV#UCky;kcr@iYc zFO{*ctOO_4eXK?Bjn$MBwt$w?R`o+|izl+wsR;7K6BDtgRK@x1TEG)Y#;GPW{`IvB ztAv4$RgSYI>Udi@n<}B93JP+>+60m?!k3OeP&tV~kYq!%;&GA4YT>%4gw&f4!Kwf@ zLGD2hieo@lQ%*7@Q_PTj{3AW(2?N29R$)+11)?ES-w^7nBEx}Q*)m;OiCtOAr>tzf zsSF#XXv-ub0!|6fFtT2}vN-va03&o|Tu6By)oX(QRwVb*KC$w zy`7aor-VkG5^X7WM6h7xKb{~&?>OjDNIj;ZqasgbRd-mXT2T6yDb_xn+<<+5KX$`k zdqh_htDHhQmueW#cgX&1MWzILTMAP44Fnrdf8=(ccf|)%i4OQHwLrK+YAUr*1u%zo zW@lxklYRS$St!!Q@Wm1xAM9Y9>}5ASSXUn;ZwA5bLVDRC#MY^85Iq`R*L|LJB|K(b zWhKkzJXV_hOi`WsZ=R8E={xEk77#Rc-NGt@C>2Xh5t3Mh;`N23PB+-4L3K6#lEf4b ze4CC{mYifkl$Zt4^FzHL%+gYe^lQZ@d9B#I_LO-|r^G5i#3VZKSynp-zs>dPkQR;V zKJyq4=%}sQ;Qw@<8gYfqF-d6+>Oah51EUJZZ>r8GY-%3)|NER zd~K7s@;yBV1C3y@YinTpx*GC#ozKl^3+9t$`k^(WxJI;&*9=2)1)&UqbqlhOUTRg# zFl5WWv+g;X$G<{$uFc_!v;}vD`SxG5)$RqDZ=VT4{$WsC?VieNeU+~q^EXWAV~4ty zkCPg2+g96;@s?O?+qT>oZC7cdZEJ_fb83wgn&#*}iRY5IM6C9t`cnnGMoW?Nmrh1A za{9XV!ABA8VzUb zVBI-(gWkWqCR`7O7`abgC3tr)uxh+Ry}BHIMm^m7yKuoC$_!lP3DE@ zN;jKf14AN4V`3J%q8*psebzAQ&#^{EKXitPM-wqoPS2jOSsMbTW0h_Rp)@n`Kc8XJ zUAEYc>rpB$0WwL=KJZU z_NqOb(@k~#8%_PqrcY>UdAg}z`(~=CpWMt*rkN(c1#^_9(6$Mb9{2{;^GIs_Xj-18 z(7p@`okKiP^Vs0sti>16@i)HkQ`Ff;B_MdcS5R;73(s;B)b&X|8r0`F$C}49aH#+O zaj2e2oxw_cW?UC;KG^U9Uewz3+3V#>fZu?yc%SfJ)1+Qp<12fGz&7VJm2+jH z9Tq(E5j1WAMXE6`CX-nkzDcnjmjt%ndX_!>#aSO4z+RZq9(w%@$D90Z=I>1YewM!v zGs}+LEPtF??&apBZn{!m>`%8l*PS}vUd96R=mi|bgxLY%i&syKZk|F2uS+J64CfQs zJ+L+MFD}o6-k)M^Z;0QLjvl;oky8jl0*oj=MTR#7<-5d95J^kDKfX`#6GeCi~Z7xB~H-E+agB=i>Gw zIdVby*cX`)8w6(S!WbyxC~NSR{o(N2dp@*YYwteC^%@TqOCtFn%VJ^gW>{ZYdB*li z43xkqBO}FLl;jE91&Ur7*xGugwvG~;Evr(z?&9u|nD+iwJtl$K>m70LwPOD@Wi90v zy9nP=9-nv*$9P!>U)vAlgvk5(_#?97yto>lYa4JudTjnb`i?i8PZRQp`3AV!E0xSH zDRyForwhk?jPkD~VwQ{8>7Ie%sBC(%G?QLr&37TDHFw}Bqg{IvmEzhH&Q$aizCS?G zbDO1k-F_QiphVgE3q7KCzfiXD+#=5OuVBqgj?Z=?u6W_CVtmKbwh`|ge1`aah&8e< zIj>w`@wr9uf;L$MJe_hHc5QKWhFA#tQ(eaLt5g3R=Vr|MJL9CPk0{9x3B>b)n}b{O z^l5lf_VIIULn}q;_4#VfVxvjQ0~Zp_lGe~|i9yaA$h^6^={o7WTD?wAJB+UjCHbRB z`vrlWh#5Nv@ibr=B`}e~(_kK?pOnxilHEjdKyF67LOkv<9Mgy2vALf#NNO-022%LV zT6gr$LNp21tU~-?M4-xKJ2xpDQq#;Q&l|k*e=_HLb~fC{0497 zjA^&BzM0?MbQLsARD8P=l?Swn?~d3BXI@-uGnUP>P3!HK(;m80PW&>Y<&pDX*O}FQ z;JXs;!@A{WsKz1FLXlx#U}XgU>}z{k_S@oO#EfCI8D#R@=5lpYvrV~ip5Gdae56)R zgHp-#i!2bIQ&bzjlD{`(kg+r_Nt6~1QO9aY7F4&Ryzn#7a2)|_G?jLd+| zf7FJEh!U@SJW;txhP!FEJ%o=d$66Wq%%BFDE5(p#GynTC=ii%+KR8NOSd5vQN2}K^ za62}AjFQaWCQHt(d>>^j`18i84008msD~*?x%Xfg@6|#2tl4Y*GGOcI2>1Hjdj2d% z(*LB?e!Um)JH0*~eeuXn5xVwLE;UnDwy+r7+^;7Z+9TEMMoZ)KdeH1YeMumDx7$&b6jCxUUow{Uw>isEw z?~~2ila8RH^<(n9Kk%3Et@2{1zQ3HPtw{14Nx zW04mZExtCRWHX{NPcSgwx&@c(v@=j_)TC4A>x9bh;n5M zu#y%5YtGc{qW_n}dA5vk4;)9k#rh(bumxP+Bqdyf?%*_H^yj|mCS^;7Y zxyaW#yDc6v#5aK3_G|FMslf}eFOIgBI`jmFFG^cmJor8FnV2&cpNT@=0%y3G1En;T zxl!jQ*Z1dK%x`1KtjSO6(eLW&GqRT({UZaFQsi~$^#Vh@cCApPnJ_b(BWFdA=eGEy zX$^#CxYO82Mc>I~Kv-eXBi_gv@`U8@^;?dFL#R{6&(84Y#PIh*JdMJii5?jS!gjJ>=BkX3S`nTL$NuRXtZZ*7+|R8985P)D1Z= zt93?Blk7(ACZp~)ou_gpO?5lYsScSb`(` z`t{~uZt(}wk+3Elrbw4zD#Rq4DMxkk&(9C zJ`*Hb-=C$MaBiq#g;WfUPkAKf(|J3eMNr9(#< zI#mFmvoh7$n0N>iM2ygX-KV>zm14sv*`C5Vq6gzFQlFu02?$8=h)2}&U*Xo6Pb-Oq zpi7tbWFI+Yrt(2kJYA9=T1IW{_OMvy3F4#qC)7y0n^MbQw<=rJ4?{T( zQ+RA6immN^T;(X>Ak&YXaXm~tBVi!=F_!*WX~xp-^ak@V$>J`ib2b4s{DHSS11~Jj zx;|R`(L|wjsoBqcMmk0Y4H z19OIhNNRe%U~pR-@gXZ%544=sg8(-mK<`ceDdBm(CMe*G?lxJ5GEvV<#1UWR2kZct z?q6baVZ`@QtB;#lBn@ihmoyJ(U21L-6kY74rWv3U7X(a}JLBc<86@AO#oXXt!D zDg8}ee3?7u{zgS$$BGXuETl$Av>ZQL;MfRJ1^@JOaEbN3yxTf?OiMwW018{m67jpp z(@{WNmi5Vr6Yy?+YnAYlilX3QVlyv+$8fSk@u+AypbKS${S+J-CS|G%A$cQ+f8iJZ zC|}ze8fWU&QF?T}6RB4!y%6Fm(E$HA#Jh>h3nRG^%e9w+-KJ zbq}A`2p$k9=1h7_)xNe<_#)MR$*z7Nch!MUWb-&}obe^~%p#jtR|GEs*vFdA+S**k zM9WyJ$|7MOl}Lm*vsNH2d5QBvTN6%+Wf-gV#;z`m-BA>)C{9$A$ml03O3eqx&)R|Y z7I9#`S%oqx+D{TiYpd_+MQBHs;l4_3ATAE|$1_v4WmJU|2e!TkViiSHyCinYSekEY zPgHoNs=m5oca$!PU5(3XEuP-?T29)>8C(T;G1o>TfSv`d6(9R-V8R zTK@Z$vpZ+}D;m!CnfyyZ6F>k2<|25pF~a}0x?4}jxG3&Ess(5^S-Z7^uWH$ANa3yS zuK%MO7$4AN=};|1#-nDfg>rKS_>rn|RnL!DJ2jpdvRJ@s^up-7{ur3+Zgmj|Fz(*! zO5n=jI*xU6V0X9}doVoW6GE5#BpGvpb40h`<_4kW_sE-=wANtH>2591C<+bRs@v13 z{)P=AzgBxD%ppt*TYcpO`1v`W?jmUu{Q6#6#b|2Yea_d1IkZKBH4FiKOkdEBY(dc` zsPCFrV-p5V1>Bfz-_tk#C$N8!8F()iIbco0>o7G5zm!SXhJ>=V=3PNNs@MTml|2vp zB40o)G9EA_u-M&t4i1QMH#p5|S0Y5n7y*I^YPypvRZ8b$i^<{P?b4Pn=?ST$^IrAL z-Ao9S$*;-Mwf{{Wm>X8Pi4Sp&*Y#Rpy39t}5wKt_HMvH+cCBi87vJB506XC;0CN)(lUy!%Ltt(AL1d$X^5q+S47Bni=+m_w)_>AF+}u`<)I} ztFf~!?dlxYmiWZ-_P25x>S~p<4XRMDm?hUAtjGak((VDrG!uTBbQxF3Dh6S#?)5x% z$v);hk6z2P&&`BB>w5ea$8xz$6(Vyo*xOzO;miuj6b zCepOTY>QmhT&Vth^)LrdAve2?t}0RP)=@3XJ<=(ha?OX|+$@kQ3FjJ=`0WMJ&G>%& z=q>3I3Ev`@TXW3q_5!u^FD!&$5llnU~ufm-B1Xqj~JZQa7;8adRaK~Yj z&kj#Ulqb5-zku4HCKJd%OQFP(EVSgin*NK{&0ni zaJhv4C=P#K4s+T%Q<5rfDv;+f@YU>;ZtG2SEVHef)$iyKZKb!~$mv$&B#poiFOjez zL`DkL&C?-4vNa{O6!fRy4Kqvp0+kCW1$JcByGf^YGjWKoBEm4j|6~aGjn>U2B@

    =A3h|Rj1lv36D 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≶lFS58!#z&V!=Hvcba_%r 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 HO_Nd{JtdD$td5nblLIc1 zHk$edPlmH$8F-WCFmU@x&ZVb0jLqcyHfSJ#;gntK;7T{BsO&4oLi$k+>S*;!>oj;m&NroZHmCBCH(2v0>#5 zUMGL1#p5KtadO9|e@()Cn%-yk6BCkL5+Y^r&LonXu2@WyP! zx3LR33FcKOeCEwjq1W>vnq-Sbf+?S%Oy>ym4s`(b)o4J7`3x%9_Uo67Mushm)9ydx$nR>hS22*>l zlU5&cjyzklsh`MS>~p*329x$lBCe?2$!H{Aef{0&X}V1K+Pan&2PPIIANo z9Vita81&kglYMU|hhbmEA*bJ_4be?NJ%KB>CDt_3b|ru?eXJQ4IM{J;t|0J2W8Us65;2 zd%SN|380iA0*bR&gf}nrh?qL$6W}gMI_3)N7sJG9o4V;{=2c$WW=qzTQmbrU@{q;+ zuBuz)2>O<`7B6x*mG_bi$EM;+NBqES;6FYI|8&6r1eS{LuXZ@=W99p#k`d#tZ)aqmwWSDM^?<61OM?O=4q>10UId*3k?&^<>eCoUn z`?5@{olc5=aCEsiW@WoJl&Uq=%pTnY66`Rpcg3lIZFNj(x!U&Rk=VJnluEx&nLdx& z#{_O-B=;@^7guHlaAxw|HJj@W5AU+Y(@Q2Il)q}_)nr>W85(0wa^J1 z?V8wMW8pVq_7p9){%mciTxj2Ik@&)*rOe<7sf>kLN-^`j3+zOn?{ zZ1^*K$VV^iyK;LhFR{m5Rd+Qcaelb{}{6- zKLcz6?^+u+6<@aZ*aQa6-KVA!#5?qH*}3PdjsNBVI;v&bsoq}Xp2*H zY0!z%?=xij5HqC^+EO-2vGDb&_Qp3b_1PrgKQk}4>Woyz9f%_kt z>A+wB!OqxH8XTLrkQ=q~x18jr<&6t(92=iCvp$w5_p5aNa}w?d?o-XakMG%CGMkw+ za(P5<&$Tz7R+BqJVg%EJiYotOV6L`}aaNS}mrjGJfR`ID9POs!Ne<Y(z&=dzFirBnTuM*`C&3*(H5-2tZG zEvKaO<$#pKpU@>dLK4ScPk>A=EG^%IEvr2n(m6`pCY+^{yV!7f!#P1OB07)1Y~ zv+|%&6CBQ-^Q_8X1nuuePS%`E=Bm2!j?lQOPQB*epQ4wXewIr?ud{e;xMCbb39yDV zL1!=lr)q7F0VFENjQrJw35tjx}?`x0x3;FM*KE)yJu5jaTm- znbFyKb_x;on<{2!c3zd^QPwL*=tqcYADKTURx^5O>-6ysC-NXy3&{-GWY(HZ<|}-? zdin$@H+_s+4(C{v!=h1-=y`NQxfV*3ix;kQ%CA8>Xe_a32u?dSiyCTO|xfaeZL@ZpTO^B521Il1NW zNeAh1gLZY=sn%_+Gj+25b@5J zsmc1A?4$}n_!PUoGfjOx+e^fY{!R1#Sd##)=X+u6{HO@DKW6(}z>`BhgzbQpNSSwx zZ;XXbLvLRDRcwOF)od;6@P|KgiPpSwArl#nd2!F9gok`+I-*eOTcKZUdmv?M{OK-w z@xO{cP50vQrw#rI+IQ=DHtTygPxT8{ZrhT!FhDdU4QT%`l37OiB4$_ zcQ2}$NE<=E<*cS2N;r#WLFPp_MhmArD-##9=_;p|ABs?~0FVcQaitD}*o#rz3uh)#`-e4W7k;r9!}Ew@G8 zGos#$TJ{cHJfvmehQ)-;Hz*_>tsvNq0N}tT2Q(yjW^{@b?jBTgO7wEw$Z+m&Y+k&0 zzlraGmg!+U=gb$t<8fKUBOR#qjz&dl;7eK70%YLqIY+1b6O!U`(yF@0s=lJH~ zhAfkJ=*-Z#aQB5FkA}I_)IFJ-tXzkD6YehLW)gOJ`sNmHWP-S19eDtxyIpeW0-nVZKjly}o zdnT_xFi#R)xEsP|I*{5vg;PeED13FIFrWN)=F9q9a=t)69GDL-5BUN+mW>V{s;fCG zK4HOhbNGSG;k))6{y8~^)ql9Q#~dd6KMJ?~?n@YK0%TLU+1G32lTv|i#$(UF23E@V ziShTCFT;b=Kbp+#DiCem5)bMZwZ|TGLFVuU|Hq-`Nj{>h=_!au8xuH8>6PZ)MVmbYL~b& zjD4)Jwpmb-ClWGR`t-s~k&mJ2`Qt*v+nZD*$B?Iq@RRaS#LIW#(%vovIlr}(-t5Jn zP4`Be@LZxG+yDk7d$aG@y|E+vUly-@uZ;K@y|F`)`t0(xd!{4Qc5SMfq-WrcimDx?8{AmUx}RYxaVUtav-_jzRHDqKASGT1qPRzjnTJ+j~x8SUM}z zfU9jh?h3G)?tMW7G9<)(VZ)4Y_kfxkV|k5LKb`5Q_NWKOAYtf=Xgw4RNypcDR-1fw zzdW18vm27nn&jC;o|Pw`?UiR=;n|erGY@0xIDu#9C7)GMF0$AiM$vy9^&yL^aDf>_ zs$9UfwZH#YKbh$m&JbGo{WJgC`S&INgdSGZAF5~OmU-$AJ<0FwL!x)(LiWPlzM5*- zQ*Zca;j-((M^^?H)gL`VftqPcir{x1rVAIIg z54;_2IV1m*A#Ymi7jFoxkGfA7`Fj2PQnm)m}h=&TVpO`%EZv;6tUt_oSvQaG?1HTnKXR;nZZs{DA!4L^? zxDhs`O*1RaWu+M6&+$rqX0L(XAAo-Z?}B;4LPqN|HC!@kPP7?9HgjPKXD-#dOd5Wu zEN;M}&tGaX2ETNOqm|d3YYhK2L|BT+0+?kPJuBe__RgU*bOB)@*rOKlLmyMi6Fe%k zpSnDkhCXf*ri%A^!`A%oG=VB}G6d#HOa$B|*Y3H_u@r&DS4pt2U`qI4<+65Ouz$$Q z+;`2(p}ZW1&A_*v^y}}sUro-r6U+t%#W247(bNFDe9E^qpSFQ`QY%;MZp2#qjjM(3Ys~@ zz)Hn(gP+&yY!}4uD}GWK?0w-)h0*(#$YdP6wB}8s!t4|qWJ=rcIyV8(#sOYjzk9N&mnMeL(adSg#q< z3DzeqfApybrh1ac|GV|95{=TH;pP4tlu{i&e=#`T@+fq40)8&-@k|caluw?STOQXe;pO&A? zCa;yB@rfFua>8Z^1H#=Wb^Id?$BH=m1j)*FcIcg^%j07l8yXz$&Iz^YKHI~284F+r zTxrTo-b=;Y-e%vvZ*G^_w;#xDq-myMpcBwd^6S9YYe4JMjo6*KwBzGMU*AWRli=?u zPnQ<;2IKFgOzMBf#;18XDfqOO={Y_=b^YnO-uNWE^{D!T%a?1Kf3S{UXny^Bmf%kQSyN!gPX$!xrb0R=+`SmkUSfbZd7lC8RCAjE&j}iXQsy7{)P+t>t%w6gN=1n; zcc-Ay|K$4_?Cx=x>%eh->un)O{tC+_B*|(+u{i~zbdpV!CJRv-4^avhSX(=?g(7{` zrbwe~igappR$=nIEm`b6XogxA%A$5zn}yWnu&jO9C*d5;e$K|6@-BCY9C3LN-)}CI zfh9_h{CHj1biAbf-0s}+1aJO=zLA{9d8nIwjeQd8x*|@4^9#*Xq zwyU_RkVdqbO~=G4p>kD)^8Ebz*eVJIbEtub47!OQ)Kj{s{-|Scl>-V`RmdMme^!Nh zm~3urfRR5u$frW(6Vf4*uagtT*t$ldgX+9PAwNVc5~ItZqcEgQlqpeD+vLue_xT8v;Us^DKIcNxQQRflJLf?4dGWGmg~@m^l5Zl z{VkH=yDnxbL{K@p#v|#szrw9RCtJ4KT&#pf6U@qQ>}A8RO1+p%oG#Px&}wd^20wQ- zp1?c4yE5hZ=KMDRXQ0b>&jF@$nJ3WhyXQl$Xn7nj|5)vqGjbC_K);1^A#M2S4ZGlI zYqxLhR+sfpt(ebo5#*|+-DQ1O8mT`h2!zSNhrYYQT$!HUY3j^nX^U~Sq^?2xtRA{i zHqBg`Y+HK)7t~M3P5oyj>OUn}zi8>D z{%q>6AtWHTxu*UsQ-8Luzl!>^O#KpxK-d2#-G4cLnEE$xZ~FfdS5lF5FQxvI(YmIu z|D#pO`d7s3U#{zy^%Pnt@cBlf{;Sj1|8HaZslR^HY9`li;!WQ@re{hn^0WzgkU}t&1|<%`2?5)A>GwV7UfIqA z2rcY(yYlBF-?`s;ojG&n%*>g&Gd*|UcFzSnA2v?dwcv#r)6uZklW@kH$3c$KMj*@C zQhfCBL%#ktjS1d4kXc63DL z)h*~nklvcK7rW3Va?Z9tX&HWf`#?UyrTLUo+7F2~shiT&+dU}DgKo%0YhHX7n}yNL zyXD0v;KB+8v@fZaL8Zs*5u%yMn8+>G5pJf0@iAChHIZbBHM0f*HoJ8qH@d+fWBeBe z;dV0^

    %$T#yRMHB%o! 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 z z+@@ctGre3iaj?C*1%1P+ThKQR&H)%`*PNt^ja{zaqo^skpG}6McD|Ew>pK!5mgS#z zSaF9b(P74wwZFuziOIfd9G2{2d^cUWGYOWf*`}!o>?1e)U~E!;mI>g;%}}!8aV>Rv zii7WFjV&a^z>5Uq9%V9_cBU(n$>MX0GMVN|vNCxrE@PF+({UN4Om^UsCL}9ZqtVJN zW!mh63xJJjbG+D09Bj`+v#rXb)Ge9v1!?hcY11UV^2xz==yn^s=_R!0q)mo{?Z$5T zW10bp0C?0jtx8fQom=Bw+rbm59nz+Q@QptHOq10$@k~>eRQ-FJUOO8-Rt|FPvu1e55PXF@`Af-}YCFD|CZARLBn!~tTwN!CFe^K?GEv^a6UM`-#|iS0 z7#PS)@B{XP?SNY}AO!kMz>x;%VGk~}0@~0<2f=^f;0c0$0*7AW(DQ0gtm9xieTM29 zk6Y0>7yH=R-1zep2SE?mM{BUlADe@~|Hq9=J0GK%`G?52`$|yTi z+icTQrYs?Xl_b|UTt$<=`WN(SIXWNXU?wDv$+$^RZ8Uac)-Fl?qGWAtt{(F6oSI0v z1M)i0JX_=9?9|3o%r$r?Nay)xq<)dwTRY_zU#`>s0&UHUZ^B4C+^3MCS_OkszvxrG z(wllt{=u+hv^woV{U6?V9%0atjW>i4iO1(XOLTP02u|aAV&NPc$;|C zK~VmnUlLiHYrrj_ptZ<~IhO8lg)2Fv)C#KZS*LhOt zfpQ`tixOhBw{!5|`?OUzj9~dV_0NsWn7XgA-I&V6Ai|8I{CU@OtCRF@J%XUQ5%2?3 z93J2sA}X6{1L%gDGAeN2X>~6fH-DbHG?N(naXt~T(5HMcSf4PVzrQ_l$IS{#x%UDE zzPGsv1c1^JcjFuekDu`1`Jae4g^X~?O`d&<*wtsxfw6>tJt(t2HADNB)KK;OtK{IX z$SJw_%5w(Zr^)vxltm$sA#wi2eSh|TsA;z{uAcAr<(xjl@5@wbCTxW z>}RtsknIE+L6}OP0Z&mD#eR=SBN~DPewNh*#b+`1$4?p57fE+f^Z(^wcBs1nOO7Ha z;t`(Mu_s}SL(x^>y9R9vZ%Cl|ogSsZ8XVO}KnwrO;D9aQO~9SvOqp!vZY{V#k}tUD zApZjb-V4F~3Gd_m3}WDTiwdBQ@_3xhiiYUIKQ;^ud0uvQc1ZqnlwNGqiT zHW9*b>>b8WpeNVQ%A!i!qkl{)&-58vIO#MT&61S`=`5FyyJi7&Ih9>K-j_!qySyDf zTt(QI1O$`o>#|$JMbcK@!@N4uU}oxXc$F_v5m+)8l2$r7)IbM#_rd@9e7I)kTBMU` z4Ugkt*A#<0(jDWk&F9OtzsK*lKH#;X2=Cymci|o~xC`dbgC;-{#H z#yQtS1xKhWfGOs>qZj}>Kum$h5LBzwf!4Fzo`Dx&5o3o&f#!fV)K|G?etL}ng=QON z^$+bJptYghvqemT{;*;{RH$x9ISqPN*=fP*Q|2wbeO<7syEZV~)n>ef-a8b|PcL{G zZO|$2C(v^Bd=ma@#u#qbF)><{4-V6IFaxhT}JA zb6?|NyD?Vy%tR!G^9Ekp)s#0Ld7U6}&|BNVwXsdOr#hyg4o>19vvU#;t!R8{WEn^Y z9p~K;G}d?ddpF31^DXrp-F!CLL@|g^fgpMa34sD&fd>cEooG7+E5~STUq_QE`@suT zGcrVwxmVMdyh7f!+QbT5+0HtxZ^gt4n^l`xzw>292*tp34J}m*E#TC$!VE|cvJ_7t z<*q_ohfb58qPQ{=Y{U$Rc)+G<8ABb6`vZ=N@iBgO&?L2l9Ufi41V!f%LD8V@@2A;a zG!E399_R~7t4V$jz5mRqGqg@Ft-)+?utVrXgpAlneQj_@xnoF6|Cj#*_kmH==~8tj zhAfQ<%!X2I>}Zf7dm!&*${X4UT2RaMd?Y0~*kh0)_N!q)poXeH0kmTFC=@q}nTspg zgNCxwHPpASwxKikl7GK+HWV>lE?HAzxSC!*>TgRGIn^&_@u&%lmA{VcpgP{aGHe}u zy#G|i(#=r?SJ{Lr_ygqQVK}E+gHU)V)grdbA9Lca_r-AQk1AgH@~8Q%>G&NjBA1w_ zPE$sMCxWwma_^wU(Te5$7txV0-P+-G6czBYtmLLWxKDk6hUYf4k-OzR0U+;p_^$^L zLy1@<5V4SmSi}$khyVd_-M}*8ZXfJYoW?3)-aSGwQjh^8C6+{pZ}2E^;XLS1yM2c4 z+q@aNyKzm{uD<6Fa%bpjk%o9E^23Q3e+T2g_trm$vEbuWg_N&j*VW$#tJHFRn_{J> z`iv`TK2&3xOuG8*_)6I$d?F5NFvo>s5;;}Mi{-SL2ko@ zbwyER6MS5R7MVwW5BWD9X#G?=v1nfPRM31(3P-P%FA&toZ>7lYpLfCAYJ4UIqN>TI z~6!aqN9?sTdoz^|GYgU`$Uo5 zBA}$~p2E@uE$<&g^9~Yuqqg8MMd!J`G+E20gl6kp&P}(gN`R3q#C&bTp9-?q%`@R( zp!x+QX>Le(Y+$$RFqRP{(lSCF17d9%=eLtb7k&o5OIl4vR5gQA1v&oG(yBUk2n` zH)^Y);KVP=k;1<5SH7&+nO%e8$?3Q@80 z=iq8T#sF4wOZnnkMRXn^e2rab&5x6C65oJ0z(}iDVF79UFM7L&Wos`K@ufD(1vG~Y>1f`3Fzu2#^Kd(NG)x$eDX(LSpsftU2W|m5$A{<+>`=Nl~hzMB! z0R`$qd=T29OY!zLwgd@970{$pnCyEnD0$1Ywf1@}Oyt-h>c28Cq-+r?0R z&X+Z0euT1s+E(=;Eo*LR#*y)JOe@OWbGz0mGfPFd`bnS*x50cIywpn9;4%aDtfn$6 zOWHtCTiv;(o@A^Lt(f-cAbgZ9B5^q2yIq}G%BoV3oLfr$>gvL{$T6Y3D2I1&3c60V zcUdR5=5Uz+GTG*smapa&BM%R5JYE~ud4g))pe!v#p)|IO_}GTo9LDw-2m2&}lP8Sq zmpNcy@!9KG%lexRYSTz5fEzJX!>7-%kl86%-iOR=jwp&Ro z7ljSCSi9^DL4!V~djo>rXk0Ur{)i-bJA4aqlp^RHj?Qx}skt!ckscq4ImXZPh^0cz zC@~shiS$OoVJL|f7Ltc915O5t0&&-@um@0Q7%IP{UbpRB5|8?G3=W!l*A#=C<1=4m z@-26x<9Tp$xNxSR<$+gP(DGaoF+dU6*sPjXBVKRZX}F#5q%{i`oP-P^Xffj2?qE+Q zqT!g3M5@E{e>BBFthcUS9FDNR z(J(HztW~1IB5MvIi_V<;B5PVGvL*{;ohkg^A`6~Auoauzso`stgZ+8{4!TKX(?uhM zJ&BDjkPNBWB~YX_`{~yOigM8G9J70FC$)Se9d{u%c_dmA;hO>Xi5UvOsHlj&c)eKBqA+Ml zfy4Lp{i0GW(s{A6)S}Gi4q=<&5VlTD`kn31&T-oLpfck;xrDuB%{Q~x*7FA2PPz6L zv+K2L0}E-8M-OPiA{166g3Uv%T+vnjl}5TcUk|;vr<;5}G)&;XuPV%F_z)b4uIhkf z|5&o`aukqryA2~C8Nv4sQ{$H=qr+m{hto8&Akn)azA?GsKq%Yno@8##Hq%J2&9+b| zuSh_EN#ds$r-SK5*!Wki_6F2VtRP8K;9;KRDThgLi0RU%Q2~l(XQv>P+i^$#K@3dV z(l`JV0B?@L|B98Opz-#PfW~|VVV~$URM^Pbm09RME4t5LBRVPY#LMRh9S8pL$hvvkrAAh!e`I~jg`yAw2_hI4 z;C*6TJ^6|@u6765tI5G(Hg8t!yG7edMOK_{fypEF7pb%Xqnh@Ooy-F#j(oAg8Yu1U zC$bA2sM->Bg;uxAGMTFm*f56HG!X&sGjx5@a^8^SVCc{(B-FzM+4-_)h^q@h2<+#H zB!Q4}Hfby$-GX+HQjj6X0+n$PZWxV#cB_`hDI{kXyQTRgHW=|Kf*kkXo9Q4`}cdC(SFXthm110G-C&L z6hwjGmV11jNqRgBlPu$ayRZ|EiHzrr-O5rEhFkShD6C?o1#0yc=S|8jMA9@aN}UP+ zCH!27ef+4{7!Vr;)tv@uO8znTOp|A-5~a>J&ng`Ow#$Jj&n#GoFnoZ)Xs|xlwnXYY z$+LKQ6j1nE$ZG>{qgo|Z@!>*f;^!DYgY<;9J}xRVf}-?5wocpqrvZY}j1eRjf6bN@ltSB~ z8X!pU?NDynukc57@PPEZiL)1noIX`Iwy!xqJRcCwemWD#G%tzkx}3P z!9zo|%mG~OfcGQqj-C4GB;>xIB#SwuopOcUiD|<4fiH@AOOuvP(orLqvfl`l4~LYU zqC#HnL-tcpYxN=fi=Pm(XWgUKghk5l23{~SaEa?{=ZDbTBZp&Vw8 z`l~T^kK62t^6hCDV2GcPO}M*_r9n`r_VyS#evwcDXc8#K`P(Qzs1lrZl?n%5?` z-2$gt5TR)Fo!wy%*=B18{$%9Nm1D7ZC9t@;IEvV(E&@ExAz+gc_RJmGXH}SLokv?f zs04r?N1z@;iGR&dn)*2WNAYG(&ABeYZ2(ZvYYR#z$yzER88`DxwA1F9hW5)83CEEL z=RnIIZ13?U4+?A9~nn#|_F+<~R z$||dGYwhn|FjgQ_dI#@OI#2Lvq_ESAf&JouTqJ`y`0`F#Mz6(fF`I=cLraBNCWz)Y z;uFw9`pPFCyntDW)d`y*CzqChRVBXNK&CKmlD3pn$`Q#CbMk!?x4b z6vWTNsbVNUuj~ao|H!+igyJe3JjN31(%pAUHMHM%yYSs4e5V+--BdB>&mrm8wo|)H z@6njv-K<9m5kH0}UBr2US$zIkL5#KaDSTdyv3$svSM0pP=he1ec3cgS(4wq9+%FK9mzP9Kd+ zFSt^aMnT~1U57(DEaXH_yn`!fKkG7=c_HLrPd7nNWIK)^Ndhe>&SpAxLvCXCa8ijC z?Z6OzP#K4Y-EO)aTmaknbIk8x#TTEFnkE~ji=cm_p7z6A5RUq3U}3}KBX}TbwAbB% zz3wuL)j1FjTERw^=`hhdvPl?dfhZh`)((@g3##Iy)QA65z4PvpwNjmF2K=hJB1_zv zGd$69_kX%zPM$O)+qQH0SM(K@Tu$xXk@ZCMu?(XNuOvb4NYP7y(>l^nv4}10Q%{LO z7Tnq(DOjMvqP_P7+6xEnVUDy;Dn+H5R+an+cF0$e??|1Hg!s8rLMNCOWfHK$`LD`M zEBd2?lXbo>xS~rFuEY86AWu~3D7r~t3OSF=Db?f?P`!*9j4|dSaVRYf5YIqx1#L_A z<$a`)*m)Td)}L9Y5kWz${Mt}KT9%ri^g&!uzlM0vN&WH{7<@ z>|n2gpnwUWZ7-rsa9qI4?)Zh+_I{2Lo3X>4&&2wV1*8W{NG`-kQZ<=gA&5F{eQ(6p zccvLDC~da14KUk-5l!b|LEGLgvF(-AT(ekK3*bqZ4d(hPzHRR)+V)<6mrz>OETm!*w@=uss|(uGw5DkZW;{F9K?a84D5% zz&Ze^)3G;y7K)&G(iAXcK#|fo|ITKx?q-Mg7WR9t0%E~FABjPg;gKg?o_{h6->PnoRFw6cZdpcky58+y>hs9DIUf&#uHoU)Es(^0e7 z8XOXU`6Lr@@Xn1qS8xlIY<@)RipkiK(Ev9IPc<|b`3_q*VxplriTtp2AP6KW^(bwW zZyse7pYU6MkzzjV2%Zn&;;&#M4FwS|r_Y_#6I_i%8~H?^q5n1vWYMS3tG$7Al?XWY zC9W8fwm*3Ml-D!4%$o(xJuYPU1vH(pl9}CcB(}T^W@OD;KDJ6NV5iEWP~->Soq}$P zYoI3LL(1zs1u8-$hk>Mh4?Bx$Llz35N=rzhzgihU z0&!Z8DBx}k=^B3a>PfH1On1AXrlc6LM(Lap@c#uH)`bvpm~CCok(~Zu^pck3wOb(R z+{0eD1G!@nmZs5cJL&qWk5*eqAOLNIi1uU!+9P*{rDo`#V) zRHNN!C;J8RD#LVOKC!Jl2x95fHk`Dyg`8OJfmlzdffF01ZJXlOXjtpyt6(@zL_0D# zrtqBM)*x$8LLT~Dw&JC|5xwB zrPXdG#!xQr;! z0%wk~NnTdVaouq%62a7RYAJv}!vV9gEYk-RyboJ9wiXqkVS{NgWH2 zO%rY4xVoS;g%qhs6-!gkVkwV8sF804X2FzH{Rr7neXE@mJS(6$znjn0zbq9^{yh~L zk31!7zjDsdEnbWWj2LLixSx#cqxk8d#B4A`7$YJgOxjWuL~k2{=}Fl2$bEkoSBX_@ zpyHToPzrIH{)pqBF$aK3f|2|<;5^`3w11_o%~b@A+&gG@w#&BEv@!)eDJk9MT8yo* zSoGhrG#LH6mzp}_>FYpxaCXMvZG!TAgGNK+LnCDc*vVPhhE_5)aSI%U^VbU@=Aa}Sq zMD8#O4eY1Qh=KOSw2ht>0qnj~Xb}+uNS?^H*|bX1ECj_`mFDXp|gTLfI z5whx5A*&WU*MO{AqwYT@IJ~ZX-ob+sE1D9)dG*HgIqjw4BGzt$Iy$g^M&{MwoE-_ZcIfQd1M#mus z>pISbKv*{cTr`c2xHrV;Aig1npF#Y5CPqh>)>GUxEf&jWeXE`K7R!GWn#mv$cDkze z`qFx?q5Rq6Ga!Uk8eYF0O`$z@vnToW5Sz9hvR)dkqV6tFMh9#A9cL0Xs>6EbAgnwl&oZ+z$KpF*saKPpQO?3!0Bs+gWBmS8 zab8H~b5-Pa2J{nvfq2p~cLG&m54y<_fywh+l=VN*qhuIWMWAQhXc$8Y$5?7e$@l+~U1 zKa)(70S0E!iAIez)}UBWkpT+?G+e?(1tz2M_@)yhDx{G!ZAlgYvt)Byu?=glY1kFSLuAo`e zZ-*n((K%2*cAMDJ-d|DlWI?kCsP`h|FfyzyrC84xT0++5UmsA`=3lQi-6oqqoXM}* z{ADCqvE%Pbtk_fU=(0zXbZ{c6&_rJ|m9j!00QUXRELmgA_tzsgk$FnqyaogW*}bUj z=T`1yF9av-bIPn|MWUWw@l~(Lfqm{xbu(3;e5`Pa581bC=Gii8=h<4;&cn+%XHO2F zsi~Qk7vR{( zpZ9#CH>EQ)f8GPykN-IyUz|vW@o3^T>A-95zl#cz&N~ChTP1|)(0M_Eh(MVNSpoM`|wb!!O3qddX zr3pnYbq3<9=Jc&d5V?i*p3Nkb<0N)9_XuB9-iw>>spnPxRW#qTm4}@zS2K3ilZSxw z`3_iswGEQDIb#MTDf=$gNq-$QQ=pkNycT~lKgs^@WM2rV46Mb)oi6m{ZmDZEho!R& zd)%LEzNZ^@oCSKCXRVe7GP55`lafg;?d*k$#asa`bgQ%XX|}KMpN8i(2hU5k>^x1t zI{v&QP!Fv#XW~BTojzV`b-Zstp-h}_ZmL#tNuUB|@^WLx;*O_i$jSY^uy4Kwnl9a6 z^L%S{`}M#5L*4%C!R~l>fi|oH*jla@>ce@mA8I>-KgdRdUxoF9V(d=d=)S0RE*=L)Pk&jbO|}@I7r-b3lf63l|@-aPgkNb7uPr z_9#by0o3L`UnlUku->mi7B>F7Z00I6<=Fa@fDO{#!>Tgotrj@-)VwNd#umIQ{A#_t z5FX6Y5Zt%02m`JySRPv+TWk!E>ILXGrj3cW!n>G463tH-5&BY!hO>7}Hhz`Hw-B;l zec3I{%*4w4#m``Ynk~qUJ<_lIr|r!%&DAo{GU=W0LQcKSj$Ga34I2EJY-4!D37zhg ztzGmTOZx!IobL~k=lhiU?w!V64)wEl^-Ql5&xS@SZ7<{!4w>oBq?w-i;J`E8Zq0OS zpbd;84AE9~c7@Eem}C4sUJd)(E3lp92x9GT*_zv32EE#MmUGw5<(m}dK4*}lV}gXd zsorL^2>WG)PC1H6{V@$tco%RsNnKbS8%_e-D36HoBD!JwQ8$50{=|ttJVB4 zvk7^DjF*lM&eh~9-_GxSkvKS|t0CKDj?~xFO4i)|_6`jVa_if#pvH3(1)ljbWjv(! z3TH&OjbVkPzUn6|ud>cckNQ>tlWA_NT%1c~8S3tpUy37#=OJjL>m_e<`Z{~L95rc zi%leG;=ix=XYje2nNL+$z#$%&tR^^+73dY}?AtX^R(gxok!j|J-iNVIq6g)^JEw)P zn{Dlkd=he|$5#7()=MvjJF^DjCt>HbU%mayZd2vtnDms8W?^gC)Voh=43sf;U&n6< z(2D!Q=_bp)?{{klA#wn;tK(2YW-JFuVt-)8>gA}~dt>Y8F zqtZytm4i)=#mpZQhYEfhH*yvnU|Q26XNh>F%7f5(x?Z*-Av~{vGsl_WU9sm7j)F;b zTL+##d8SC1<#fey>8aby4WY_qmLyiyl=R2?|8_|?nI(m*4%pTVt`=Ko2f9}&BIq{B ziUFI^Ni*1&Mp(`0Zx_?Q#e%d*`o&Uf3p2HMhKnkrc%DjV=ZQ|OT|7_iG!x25H$5>h zLU7@8M2XEwf_$^!WpOgRoJxP)ILneVavG+H8dLhnDWOfi>f&qR<8N2SzaNRex`YtZ zKM%X;-U;wBrsISq)xCZd;Dp#a|ABe7n!7wUcb)ikAx+&lQIK=5E8&yrZ7LWd^7$cZ zDCb$R@S3|nNhB00+pipXe~VX&g_m93cNIloIWIOB2UyeCh5v)gnu#hfM|EH(l*Qs* zeXBJC0@j$N0FMKwx3-ztW_khTPW3a0Z#L3z(aA@A(n*dXZ>ryaTfcfuGDxtF`Zp9a zI^H6+878}eI-Vz8Lq|~7z_*hfrJQGq{!+}-$#4Pg_~mLxrL3C+px{bxp?VT?4;F_- zECTOy)($tCnWUdC@T(PLwMya@#cI$Og0vmA$2Xww;*MTT6H>c7rt@f;?y*0eY}3=r zy&f3DbJicq%vS!>JljP)oK$8wC042&E>%7f zzg#L%4^UsDn4vh;UaIL`48cx#Z0nrZc6@*#-s}+YvKkvV(l$tGGEx3)KC;lJ{O(US3T6|48zB z9uWTSdfByC#?cRoATRHUUgJoR=h__Pk5`MrmPHK8stY(q303;m zuZ7K-O-M?As z!gUE=(mXv^OZI!MAS@dsOEO~lpX#pA-5y{q_MiR4{MRSXzjL7dU-UQN8g+_BMtUSe zcLq=Q@!(asJBdxg{TBz^_{UIV!z@4$<+=usDA&1*E%h`nigpsXAnK?UEy&MuKv(@a zLKf}Eo`|Qv*Z!3pcCES)$H;1HWtOKLPfzJB`c~ z-9zxCDP8ZCJR7q-k(nk>HYv;-;VNap-AQ3tk(pWj!=keUn6V|Em#swK_iLFez3c7v z_{K)U2S|^>HFidC#PmCvplomYd`E zZeRT<+zw=qfTp?f{0~}SiQU+J8J2WmL2TsGl)t}iLbyy_Vy@K_Tip+2&GvU+(mVeH zG=6wumU|r$jqSJl<-$ES9kDq239j;&A3|_-^#KiZNerB1qS~zA@93@nQlUl@d{UDd z#lma4m2ihD#pi6&5cTPX%OLeX&x{;>;(12+mz!CKCjW9sWlpi$Io>=aX@64Oe<>!k zNP z;vAWnP;)+QKktPX*4ruYE51SuyJ-dSEr$O>m<7;z)#^^pmDUu;&IK_FIy7wY*)H|q zb}X=C zs4Qv0bmz&6CpZ2;)^{c2C8HB+HK<5y5~Yg%p-8AJHsvjB(9NrI=;PM+dU#;==*4)%vj0dA#wYin zt3>_&eX|D(_xQF^cWQWxBmB7?NC8H$2at_d`U-6VXt9t5MtWViB)mc3mZ4R{M(fG2 zF@wW!v6^R9Bbs9fc0~F+jFPm3`)$=KxCwKBkoun?6Q#ew~gE`{UrgiOA6V9&wRi3pFo%TjD1xk)EC*`Gp9cxz50 zn^19udu@YzI7ihAP-@)=^sz!*GE|`Ik@l)+UCA*vis@jby+L`zl52vpS0RibNVWVJ zW_FAF4^4S3)fuB2!YU({GOFRH61Tw5M(*{i-``IXx#XO?&K=yGoqIMcTW8eq7Dd}e zHAqsJ7-rfCY2AMa<_f2PaET+6q*w31a5N5<8qLA=s7_3zM=k0tJUQ*}bXru@;p+_fp}Q-qDF~}X3d^o-IPd6ZzsMBH=oGo0XVq=XowY|- z-08h?)y=y3cmD3EaFoRIoh!NJnyN6)SSc0>f-&8hI^FU8`WrvxYPiqtoiYO84cKnD zFfF{-R`}Br7^7V|T2RA>R{%J&Rx*8n`IAU@=(71k6ZgwMEx-k-c zQ*Z@s9!X1bdb@F}U}dxNsC zz5u7kKXjV>*QhJQxOSsw;^pr9xGj*|_Uw0d_GW-JR_hU((lc9#Nx#sMva02hFn@)6 zMVpItUhf`$ZSE3QF_flU?Z?*y%y8WFav7n5Dqk_1o+U7nD?ejU>^g|@2v9kWEr|-{ zcI}+Jx2rE%<3t9NmA7TZMcg)Ulu)@EEIW3VzN%?KwsEyHm5b#zdODWSJ4rh6UOhBx z&aECaah<;JartS~&zhjt8pP?!*c;28__CSm98x`Crt;uP&si(zx+dr_J~cj=7yc?9 z^47v<#YL~H_V}jB5B${~eT9X|1$SAYp?Mf5hcdJee$iy*{>XJ?rg^;v3o#=&X_H|3(y9t*~u#e6%sVSI8NO-sw%CW(Z%2aBD@pf_4akpRnT5^fGF7qTx z#@aQ{8Rp45)#P_Oizxj=8Cc8aGqr%tfdWrfPU8?kDzBsE87@==?>|nTuE-|Go0l%0_7>jnBamvU=6_fr-0@uK9VGqRUHZX>ooeO#vq zGF}m~7qSr7hkHiLYf}b9vjp1IjUp?6sjlft&BruJW>vCRkbpN*upM6>`WiJHdla-{ z@u$5VDnGZe-M~Urui|!2j9s_I4X|DCw7i``QCjP>tF@FwpZ9C5BI(Sl4|MX=MZZUw zH+|_XtCD-n^kRF}YY(i{ri)Lc&)s#8&=F(282k$98!cFbm&Sa;G?^Xf;shWh=sQFv zBBBKjGqR^Ia*sb+_f&5#8(bir3p78;?Wx-=b?EpAZYAnOfecNc8IgkT5ZR(51=J#S z0u}Dzbpj1d8OTHvwC~Rk5E2cElFtil>o()dLr>@fg%&2AX9;HJn79R5u~6TL1#0G- zxcEc|pi!A@Nax}UDD??}3-j(L0hx{=d?pqjPZQtXn+!Aq;@jv{D6F{$)MN!xt2$tE zP)b0nj;Qyc$U=n?BGv^c&g1bJUT)qy<`F*^-sHBR2XcLwZDj_JZ`f9?!BePpoK|EA z?KZ@rw4Aj-rds!Zrio0gBmM;HGx-})eZG$_!lSkLluq7XZuq9TzZ?qvr9>Usq4$>o zMH^BVRrS_&b-%hMOI-u`uRhz-_etz$o#!Xjx8AI8An}JezU_VETiYp{_CQ;ju~!Q_ zMB9LU%v~qx{0b?w%_wq3SD?r3(EgWAUm2zreAFpmTZwI zB3y$qK0A(vFRcQwG}%vWIZ~{3e*7h!!}_7F>fxL86SWX~GBBnoYO{ zWzc_S$19}iwuUcDbsc?CV(CI-s9J$6L!`4sU*S|_@VgKqHJ#GQP zK)oe>Q2$Lst^9C^9b@hx)ebJe;!aOS zYh-QG4#U4sfRg&}FR`u!yy%=4OuiOZoz~)W{ z7@n_FXdV+`FVT2;zhHBe3d{&G;}nW1uqF`+*_0P*bKn0c`6@P54yF{q@9_`KX3Q1% zf{WFnrb*pweg0_OGB#MhvO8tTd!$#I&t34a$>=V4N;A4Sn?wq>0#%$t3SRD8UMF5G zX@OPa99>~e)eu}QKP*?u}uu2cL$KNpuT2I~TR&y~7HCv6#UW@)c zbq>qX_`ccZz_RqGXXBk#OEARLb6msqThl4AAa zi!`lfdwlN~!Z27++b9M3!+*4?Q6u3Ube;Z1UA+3jHI%v{=Y{z77p4h~VH>pr0#7oX z)9f!)g%pz7cKWB%o`prl>Y00m-gm)v;KY}p4>`XtEapfkn+Yd?Yz_%*DEjm+K}Lt4 zJITFDydX&47Io{}oZc5^uFBkBJzRu$Am0&ZpB2d;0}p1*wOkd9vs5!Wc?aClZLM;R%bWMNy8!MRP&fx zRPvG#1F!K{vq`F6Bvm(}aFkT_ghbU+V}c*BSNH)fy878>9l`~eVQ~ROIfl~ua{)R# zHFRh$z*6%bcCzH;y;XhM8V6he7hHf2LNpg(;#2w%Up;(H;t;a5)q{+sxtrpK|3KU+&i^Gv^lThweiy@3etq9yn)HY5Uz5($r;-N>^-<+9$`VQoLdG2m-cUJO zZO;Nyw205dd|xBsg9yatGu9}_+A5CwoQ^FHz>5@OaRBrYb~f5yCoka>9Yo7&bIDqB z!BEJo*pw)3XkBmwdNE$ipK#suilWMT6ZEllv^;US0W9a$h zs5h4$=L?L^UJ(6`Ddv}>^a25MIZwwgk7vpW6ofd-?GauJEIR@0d`^K#+(5~2U|jCu zxUgu!vACoenTj%<(G-~nqMez&xST9weA`tRmR@-4I8j0zN50ABgxzk1>20dEQ?5-; zG;v+7hp!^z;oNMVbjwxD(2V50#CTah15Q3@Ci_A*ZMLbqW=IX9tKgC-$s??zEKNlf z$G>fM1*U+66{-D8v5dJ_7ey|k5uP4R+V6$Ezg1e2*oP8(s8J}_R~pk?qu|-W3qH?S z?quY=?(<}YQJ*Va^Mfa@y+U}wUB(-*e2i;rwZ@^_V=rIq9&Wqd?U{;(LB24Br{)-Q zMuPJ5b0V`xvROx6%*sYj>}|6~^y>wI6dOmSM^c0OwdhgXwHnC7sqoylFjzIa;I0 z@(wUr8c-a&grpH);u1{FN%*EtmgG`bG?DEAQDIY4%~}$=V!f)8NjIE}=$4+HX{9`o z(W2esCLr5kA(}a7qnD#g9(-ulrg7?A$39I3?}8i?2r| z9d^-0_-8&@KMek&ABt#%9xt zuUVZY%YB92g~w-cia0o8B65>eEoGIY>4(VbQK{ z6-*>f^yI2!Q)PA_m0e3FJ!!J8G})($uwa72ip1FMscu}A-AFe@dLGYwj=5n%nhHLH zHFM(!vgwP0(H`2HqWtCX1giF!yfO2pk?i%6vNlUO2Ue*l=j_Mj56RO|anXud4(#U^=4v|SB<+0wGvV^D{_4a@5x|pUq4|!C>B;- zqt<*WYr}JM=yAFy`p}|}lXT^Zw7u`jl|A$~;fSZ-l`DP@k0t85m&|6DwG_!LtBu@* zC#bkTUt~Z%==&#`&}$h*^sd;1sR_&#OWEQUE9HqRHY!|PU_B4HO7sZ<>9R%~nw7Og z%$s=nbZ>P>X<)j(TP8cN$-SE398zio!B!*p z6V}zr__8Ch(B11_;sdLbpS-T^5j?Ux#JLp$bFVS#9AK}Jy-T0kWDn!p#?!e8(C?_i zqh4|(D84W9#uFl8x%EX(Coun&#O;8O>6Kt#L{h?U66}Y@E_+ zeMuFKQ=XQu^k%!1*$AE4zIC3ho4?ZuAH!b)D?$UM2BfKlYUfIscu#+kAMq(x{4-{J ze~N*4yA}VVf#SoRo&>SO*wB|ONHDJ`S417T&@5)KV@Q*$VXAx6u=1F3R3M1i!* zI_9gFf=A+c2&9$|U6r0UBiFGq?P)uaW9!Wnz4wDZ`{3dDX0a3O-(Dd%oG07|{s5`| zPwoT%$)#VOa3A=BN0QES1KT$@pvUOjhwu|=j%;`A9wOo34WuFq4-30a{#u3CRnfx2 zmpi`Q>%_GS+cX!*2B!)4OP$SxgI~qrSqhk12{fq8<0$!3I_9dmBdPtTi zhEIpYln8e`hq%WiC3vaac=gd&r{)$}MhX9UgKLI%vMu% z$mU)bCMVcjxGfIeGV8(FMw>Xh+(k^Kttg)P0MvMq(G}0U;dh0$+T$ry=3XZ<8l01` z=aL)y2m)mzF||PTmXKr0kQDc~VgLwDgBdiaPO0Z_I2y;e?k?UnPWvU_n*Ce0%#^`$ z6(|mR+6CjKsUEz0VKK(LzGLs`hVD2z9DHV|GE|RGI5 zn!5V6o}W%!*d|ted0i`et@`>IhxF$wTU*`y@fQ9xty6mOXA;FD6d0nV5oXE(?63QS z`}V@XexMtUTd#Jry7N15e?ck?UgP$K&<}^T{+_7gK|icc23>3Iz8gMa1 z>}1mfQJ9X(FtL5D$&l?!Mzl||XJXt!_1-dVE@#b?Nsp@JL0^=h*n}QU)|mVp>;EU! zdvgSKU$zJ|+V><3WjQ%D7d*l*kH_Vqe&;`mZEc{2cez>dVFCO?kTu`=pp;Y>6k9xV zw#?DomyI^_oMCz|@nSS^Zn8-L4%S{4z$;WwjnyC;{xa^adzqr*nTuGWoM5i`vi7LV z;wr!U`N*Cf;z%vp!sAsz6de;73b{5_I&c;Zvm9Nn9iko17IMIiXO5$wBdo%$=X8gg zQdCOm(Rha_8TR^3knG}>O*|$bz}>Inx!v(Vr(kbcovG@#KjMtnRb&iPPvl|KJ*?(V zuPvB?GS)j2Wrc24i*N3Zzbd$}<5x5*vKS+^7JJGj}fAax$tWz%6*nwxj(u=(^aOjxJE2pu^#b5U}BcA zS;46>uvPddvv6)u{ra|SH4(+JF-dLtfI4(r{;b(yLK#ctPL-}J{|8Fsu=VfBB}R3| zmgvIGa?gewCv3$FaI=E_S87WknA{0`u|kLNde~&Kr0EGTP=Zf#Y1$thwwU9XZ`NeY zeM*ZP^!h`s zw$HN-=dXxA937wPpZ!!3rwIS=rawh7e=pdcAnz>wfviW9=#i{}{Oe4tsYZ`)-S3&e z_$r5mV}0Ff^iqwj|sX80qik?@yp`Qoq6l}G@kIcAGpm)W>uIRsF z=bq1s9nEIYrxW=_l$CX+mS@D5J5t{eX3dZB1Cg|R&%A?Owi#o&dIFfQVm8^C#wNlzuHb(mBgwVsBh0s(O5vW2UV0wST*rI4 zH31#JxXUI+iLvv<9N!BEP<#)BOlh|`G{zgMD#mwsT`Ew{OJ=G0eOD#92JJ;gwD?O`^~ z-%`3?<*(xPI69&bdKqUNfkud=s{r@`vS~5EzI5N8)XjiVpjyqdsV?XiwOnU>{RoYc zMqjONB|tsT4{aP0XjcU`^*A+@sw?g}7+06e&vzuruedG7`Bo3Wz*Wn1wo$aPw6W3~$iL-#HZ__i(UE)DH%p;@GsroYJY)B5 zDElOQ%Q2h!HZdCt_CNYKL+{%*HLoGKpSI4443&VuBP^Lf4L|A@s~bVFo`gFQ-z=K2 z9bfSiSR<+YlIo*w>M3nblgt#%Y+`{4~*_B)OpvM9{#)3 zNR}tvO)pln$gyr8j@v&ZNKU8fb1ARX>V?r1n}SCKF|0!uj{62OKbP1>;})epnx+c@ z(%RMU$X!$QiH(9Hye4uNv?~uSZd9Lg-tSn?xb$LLi@rlQ9W~8!>W{Qu&|+*IVe3LW zxaHvTAx1;#1JvorJ=l1Ojm&kn*e7J+zBtarL+V2!!1M}P?%Q?bb3~JzmU-@uO*LB3 zt@mp6X2N!M?A*8W)17TYwuKHKIb?JlS%N?Zh38!Fkw2&ITt1AWv1gTYc?L&g*Gl_5 z-!7p0dh|nC04N0EjdF4-mJ?IG(Za0MR$kI??HZYSFz+4Q<;`{FUF}*v7z~g)&6U@( z+!fw3GVh(xr#L=@39}`3RBff}081*mn@b)Q&U*2yPcrdbvKDjXwFbqS;EgW#Gnhz) zx)NR&shGtJpQ0&kD{1ZOW2RaSnV^T-F}A*}Q9b*m{=j#O$|k%t*73AmuW0VFDMsoE z`c4ZUw};lK>AC^IZ-Hko3_L|~N(uC{yeKJF64)$3eSPdxFO&?-tnIZ#j3#Qjpxon}+1U+7lf{r|Ye}w?OHOhL3xP~fCh9~@? zAl}_ASR@L*?O{m|F-Q6(-b)!*4cZ0HUX=SHxWNo=n_bq(iG@SQBW|!n3&p9GOeh#L zpg_9u%+-*9Mwj@HzgO^xJUibZNGeoRRaRnoi1I(d(s;j8zXTkTJ%oSp1Da{YBfESTWpM%6=3Y} zjhC@v>UZzZg9=`LpTUT~v$&D&ZDQc!Gt2`jcH(sW~ zEK&d=QSLpu+#_v3QClomJ;Mx$F`Y9}!F~-P>RQ6N7p>d@pfbh)_dDlRQ&*#%5{s=>dHT^U*l~`b4vy7*8+ybb&tIpik$@ zLGwltaSl95-#*@)yt$6Nccd-+o(-|*ZuCK^XEDgNcY0@E@G|JjH7JR~< z=8lK5iZG&(bql>?Ypiqy9+8TslCY`Z6H+4AMKi?x+h$-SmFuUSf|!iv`4RkGVfQ-f z5JA#}LDGaBv>^7Ue)WP?Sv68GgtS&Mp&+yNAy~YWpu8lf_{PetK)ux54B74Lj)ab( zLV_B3UdR)iHmb@M!QPfy9wQcSoD01(V}AmXvCYC-^?!gJ-1VS$1C}ra)958dow*>$z!NPKhAB} zfoc2oV?>*NT(XD9!}q5-Ny3$cj~(OFC~!Px;~Txk$6OL#w;$t^=Cs+w+4=vdL_X%= zt2wQQ#USl&PCLe%3~O_mQ>UZNjzzcD+nQ@!e5Vj&ejA#Yja-}7!*@eFh~%*BTYLu= zfhJ8m77nefl1itNeAX~zo5QgFEpr$EzW=v};Q+(%-|IY$jBJqpn|(`T_WQ{^ONxtp z!o36sRC#9!Rdl57$a~>78zKcS;se16*@?KUzPN1S5@eQWz<7J{hQ}ha+Q2AT6sU=? zow1#JHJP;!G7G!{Hp$j_BC8iqcr7x^W06_&Lm3uwxPEat@N3e8R3&Dho*^y#xTaRcl1WM}tUT!UT=Em9I+p!{Os{-CBA-KFV21Ul z#EPw*=m}P{Thvs$!`A{_huqiIhmWR&vdELUStq(|%gVtovT54X6d_IAm%Z)|pU)d9 z#&0rHG`a5<6X*)}?I`Q5_}tFVPP<%iI7y0m+D!Dus?inhl3f(=M(~^dpY5HTTVXhI zD}L>{zZj*_pu6h#ak8bo3@c@Z-x7V zx5@Zsh5NI=kfwvM9fbXju+JH#_Hd7F?FAGMH|zpfAwYa zDvMLcf3=~))_CFsOL|5nF~Jak`qP|XJs*3eIW38q?qa5IV%C`+_d0!NSHD@4342lx z>}7APyexdw5j;ctr%?IiF~Q&p-eO+!{aX^s)Z0`JZ<0AN+bb?g%(i>o7*?e@!(Ygo z2Bt3FI?m*W32CFA&}ov}Z1!dEEvL;lFmJbi#CRTN>{smJXKnisoGF<3#aWUGj1TZ8 zc{iEO-r~OdZYdi-32`ItE~!80{#HXn$9V_ciyUv=NE%oS=ebL^5&TBOrxNV?qXZvx zmktf+=c0zj=;OI`$|m`B!sKFllbOX)KtmtHrl>@t8&3kIxcX3v2b7{En#7$hh@&qm zO9YuvDd({0`wn$bE8vnXzFqV0oEIx%^-H9QvRo%1oEES`){iu5=sVO6(}z0eD6ki# zNES~QPtW{26Nsn$MC`GBd(F}O6`3_hb5^9gpV+dyz0qj()z?7i{i)Gc@7vY5y$FOP zEtTVEA3X)Ink|j_!Fo3kGcf%m&Gbq$A+_|`Q-~*NrgNnB zhQDWv$@F-SY?0KV&3jSumA`F$(9v&v|Fd=Xr<{|0yJUQoHNJ)L1DqT%Laql@rnyTr<# z4^InA$maBioeN=GU2!2|SvXy#CWq@|)TetnTzagKhaOhH9Q(I;VE+phP%MZ2YB48r zIrwngmdH(XH?SW%Pe)Gejr4|ZIn0r_$J8h)E_rRt&a(5 z604A$@ysWo(Tsu~pPaCdp_>DpcDcOVXugOhTRgK}2!71c3Xb{acKYTX^R?u?9m;rN zK4r%|bvrN~ZWuazmd)1C&K?@kq|lL_&~emb9?X69`Hh=x`H-i9EI=uq`IMYX5Obv> zV1~egt1#uDK7_)Su**SjGBB`xa}J3c)x#6fkHkfT(}AM~g~5gSmBJS@I5Ew`nT$h7 zna%Q+qJoS1-I+byGD{ z6doZ3+u$j@y62_}+e`A3cW6aciE$;&fI*mW%Sk`}E;{Xbhn9aTjCPXlm!$I3KPji1 z{z>B_t`#dr_Bst%};9iZmg&%ghJTjp@8 z8vldfElVLS3-(vq$IrUu2caP?iz;oUC*=%HC+~=^tK#k{_33t7@Pa8frl(*ZK4qCa zGN<^{Q&FfRkVgiAskYE?W6BuX5q{eq(J$P6YX(%weYmtjQ9q!8M1IZK%8W(6ZDy@e zG|^HcD;#3SSVWWe|5}bRDEl#Xc;J3J#VoFT@vm*LL4&uMJ$E#xNw0-!B;4i^%Dx@QYOt|HrCKUyC;}s?nV}-m*HEsYSzGX zrf3fb_4ukRF0k{fYv9e5mSPUBZ0r?AK9`VgSAQEJuU?Ee)u+5hR(sT+BxtTDG8?>q z3=qwa6x0hI59P!|+3+M_3>2v!aaIqD@h8 z8z7}7IA}*Z8sCNk4XXCopsC~(zIBryef}bqhp;ES)f2wufacE9Z)+x+3+k!arg@tX`^sX;8_&xiA<+ot?D~4U`ka7q@po*dt|mpy{}(e7=zlYgl`e@hpRziSJzf2 zV4^w!6V)b6TxOIV2v=>jg)W9?If5})bEHtfDl1%7FA(Q`zTRJ=>X@g}Qih=HKx3t2 zvkw8S`t%jMP2EbB;nmr;(77_ADwj`HqMPAFnqiB~&Q`y{(p2UD(Au=CaxfOCas^@V z%FL7q)5Mo?6YSB2JxWun!}Kc-LKG#Wz4A;OQ!CWTNxK{e%dxQGCRj; zkd>%Q3U|&ZVlps1sLE=>A9zzi+*VudsA0nT!AcKoY4^Q<1x@75a=4=(^8%-;_DY!> zciq488D8s2b=U16W9?dVj?UmkuiK%#$hvjc{g&wP+H9Myv&B^8B6Bq}*AQOO{ylF(pX!MbTu;zN`q-49Mx_ws7w zX9K#bmRCeg#o-&X@!AOPDiw*{H$?j6bnqqGeyL>dkRMrza}R@r=N^WnO7!??*+6uU zf5}^-F$45?y(Fx5+1&SNg{rxG&@5Di+{u=M0ACE37vj9co40U}JNywt5}l2zZVwv8 z(L1{$RV~cQ#Hn5G`+rYV-qgeH`=8>)I4e@tX_OwTgV%Y0$#dVQ+21p>MZA{pGQ?XU zSVr~=bfv3W#S36n7PsGVP1m>3ri!o3j*lr+^D=1JR%Gh1bn!${(B+s-0Wb^e>Z|vX zc{cumK`%JNM6d2roE65NjfZd?(-jZp0w#EA0P0(~dLq;bw0h&A!*DBw?*z!wEA+1E z3Af~Vae_dHq>Fc72&%2AVm=0AmY}}i!p_ptnyNVPP%9nFkhAr9nmk#)B3#W{bal_l zaRk2?X03(3EAOG(;;XWY6{MdzYuBo0bC~Gg$j`6&i2y&3@(fqyGIfWG!62dXqFA|H z!Ob+R%$DjyBk2R}_e;YIY4&wC8H*hCJ;^CJAj2dk8r6c8a06-UJl)pl+?UlM-U8X* z6Ds{>zxo*qp2C!3Jy&u|yWr+A01>E=hN^!--$y9?LL6XKIcu*1*lNsMTB-HudGxs~ zE45Yqkhbno-XQDIr-EpdEhDE${esz+O?<1@Sa>Y&jTLuBmq8o(K*7%pQ8Od@+{Ix@|XDZG#l0v%c<$ z-(EYyc%MtZ1KDrGWuB3Wo`?hA5$6gNf}Y(o!;PN2Z?E~UvGo8>8MofWjw~u&@5qg} z3o*{+a|;mx+qn`YbxU3M>Y>IQr{O)ra1Bn~k=lTq1zIQ|M8qfDMr|xa>CY9OWUF!* zM`P*HJ6)+iH025*Z}EacZS`}#%r%=WUWU%+Co~R4!W{C?Dp7ax z9?MF^EKiCl=RG0(*i5DD2l<*%x@iTof<(mzfGaLMjr+J3!^1&MJg^RC)lDdMa!WWb zh94c1kaJ>|JIW~!ABW6g-L}IQbrg`sSFgCRR1=NXhOAfVH)<#7 zReOd-&7QA@XVcajvuqt{^i`$G7yVi5R6XZ_JZ5LfUd)hZ2?TsBmxC90YF9gIWKav7 zvJEd2l5LqteAMfbB|l3@l)R8PcmuBY)-C|K<=x?^x>_s(yNZ*t8!9B@6uP2GMk&(>wNp#%adq7ty`;1fDHWB4K9z!&In{dF zh#m6*HG#%hUAe^Uicruj8qkw^^QMFGQk6-#F*nQC%?fyln$CMoD1nK~azfv%ounmF zXV*@;5UdzH&9Gn4nAf~~aQD<4Zfy7!m3B{aR0Ky%yu;yM_Y*!RhO*6@98fXVIMAhD zXSP`gu{9I#aD~p663pErZQ>o-p}~}PGo?9#WoBKWiQyl5QkVNC{?NPfQe#>+V+vs8 zx}Pt=luHwFQZ9lzja?V01$an^zr)5LN>S`~pwe8kX2HG-6!(8odk#RMSG_Ftg9oceH!H~@FxN^4YiMhZowI1y?Vc)D$N`LG9vcH4AtN-)*eJ(EnS ziPm&Hbh{Q}!=;17bD|#LEPZt(N0w++J6@FZJv!O4I?ptQggYFCpr>UyxM*0NrLIGF zCjL&OtS3@+jJ?3so#71P9_X-e3N(i))D;im)V3X)Jhm)zufz<50lsrfNig>O+d zUxUb%@lqe;Hwqdh0CU20U*C8x4Y& zb@>yDYO97E*G{K9o~NkrEiIe?x7U3+&t#UNXY1p*0x`tNY>#dQ zBn(s_BGDXZLG!qx$k%C$+;Sjtn@TjP1wT4wlbQ>9WHAZwOGhAz4y!A(2*@Ykm@yZ| znlLm(3!XF(L<^6VmI}KrT-9j{p1H(emmoDK4veXmMD$l|5PG;~@$67~)1h;aBC-+6 z(P+L4Uy$XHp2yfPuHXa~u6L$3igxWB1jS+HoilN@NP(*c^O=VyDCgQVVnZ41YV&li zJ9jbMQ^m9tM>csSu2r7AH&(eQseEy&watZYGq>QvB1R@$&lDZ&ZEd1)as)JPJ7(N` zEZ#2dG^e?crj{(h;|%{Ip&szfgG{O@6mWpyNQa>KWg%t?T-Z;A+rN@Yn(A0$AR%KY z0IWP~Ad+FH_?TQ0KF{gfp`LqJ)Dw#1E4}fRxLlP5xso;KR1a$f>Ks!yfl@_HDKbp` z<_wCRog10wP>=B%S(YpOTYa8a|0HoCXWp`0;Hr*~==;_%1R;B z0#K84snsApIhLCLh1v_qnoxT+0iF%dN9OJ3Y~$9PcssQvK+N=d4`FyUt2sg;?zWY8xJ3gXy1PN=)zGBd!$Km<87MC{~&Az5z!x%xgwl70FWU`gk z<_`awoJX1o;+XJrd2ce`g@NjR@spGlLotBva70%+A{o(Y2SKSThGPIfEZpIYu5@Ao z?~YbGk2FC6+k&^aU;J~bJNz8)2*u_dj;=gxh~#XsC)_cH=gb^_elRAwa!mNBd?N>) zJDX$e0suvWJ`PW>Dxa#!d|*zX4bpI#Lcj z5&lzZJoiDJEjPM{+?(WQKYxn9WBge#vPlX{e&0CLzG0U5))WY0j3wR-+c-02!>p7< z+UU5;qmw7hn_e_lb6M5YYjge`1=WePw|(ibK}g^4YN{{+NQtzx64dphV|>qk!D#6LHC?_ z^QBMbXXtZtNi7f5{?}M{XLRZ-%hgXRV1sfURK*7Wgcm$VdD>NqWjA)2>&%F{24iVtFa0S zcjO#tXqR;Vb)*4o6AxxGGz^ejN5ncb14A(=c{j%@?(CGVggfk^&#h63rGiq7rf@r6 zN8NQFQ8A$LVRgf&8NrHPc`=ZlF3>LPtXLN1VwPid27mJfKuZXsFN9a*^Ya5gKPzwK zXYDc~zDF4S<7X9N^e_6n^e_6F{9YY;jJB0CwV$TJK0ZJCGXiZVcQm?^MV)hX=wp=W zf@2Is-zh=2aYp1!{P>7BAKfDajHxEH&zvBB3uu}*?r*Z`{qO!}QD6Tj`ZbPM&K&wAt;oq4P(` zBe+{0cI0V)rnxntt&7XA$JQ)5Eq;BYG40r-#^4ngrhPi;qu@pB4g~*%*G7Ue33`{H zbb{WF{b+HyP9B|hoXlkX%6uG?hu+{|FO*ng=DzzY>VajjYL)x>g)U=D!=FwVJ3Vd} zye-x`?W2zRb}@49{v)SHEsN3Hc0r5#m4?)2_`?OQGK$TfSZfgxdoO6)`Ju0VRKo== zb1r!E`b44`TgtaJO0|$)6Mgj-#hdAV-ktY`dj`b>b7om|Z;a{OLV29BZl2YZAHCMy z<(}3M`U?eY77o<~&9n&$CTO$T`yzqy-G8F;o(sMRd9B!d1Y(r&t~f;Kbie#=>Xz6m zbRON0ZSjM@2{+jBN&1<6V}a`{zMAb5GBm#}#b`c8MKWw8uBnERI@@s5ylK%w`$qdz zB!)*vy-`#gEwvY^o2D_IU8Ml(S@CZp*@-UT8!iCuy2ZYtQ}hkvN~!#$RF;+C7v+E5I4fr6Z2=AvDg`%>G7Q_ z_A`F*N&%NrE6%|ND^Vra9u$5Hqu!m*5x4F|av*lVJ4vKU8Ed(C^jJ84+`Voa;n7(s zQO7Lf+OQ+)2pg~myO`WtqQxHd8bY;a>>K8ayNZgn3n|cI<$pUo#R&t|7Q8edPc{1& zc7zbZ>pdHn*Mt~5L?-4`X9?nZho*;d?*{*;74-E}N}agY6pP zJsonv0#D(u@-LPPLK)3>?40mg*YV)_0qH7zevtz~T<-DwJ_W(JFH%3%%x@|W-8>PiETs%Idb)h3SQ>SB@u)T!7QsyH}~ z_YCDHF!mR2jbJ*osoQDl49PKpaP<3rM8WD>r-Pdn8{*$&8M-YG6xefObvIx?fYVVp3fA>(R^Wo`?i(%>Z6l?K7j_Z z=eUg)=6pzWs$JCSE@+4?G_rp_n|Uk_*hHQy9&y%anJjjX7nvS6!aXISp~c0$F)e2U_Jv-YOkhe8G)CTRn^i=0;9t z?fo_Z9oGHgviOJ=I;?YcN~QzyBX5;y%FuI%um8Q;q4ah)@k9?#rEHjDciI3}46 z%a6QOrmMn}b5{1|+@6%vvw}=c`H?r&H$};uwo0916lGO=NpI%Xq|CXJFI#@(4fB}y zL_f;vsxTZy%A!rH{sOBPC*HivXFRip0jKd=ityr6CaReE^mS{az|8_#yLb4u`Lw}X zUh6r#!hbpv-hwjHm}tHu?~PFR;$Bd_sQ6WxXAus1#9|NJYEB8b6&R~ME`^2K&4H3t ziXCo42w6*6W4IwLT%WelGii7zYu&D3=SIJMQlXvYT%Ur3X5B7CWB?4pnKFo!u>h{I z%)xL7mGTYU9d&lG$uy>1fMM7a=}0hxd$*f`a;<5JzLeHQTulfX*JI$7#zRPN8jEnT zBfed*(kBe_>v6Jj+e&f$5RwR4TX~kB$ zOA_f$^X)6L!p_oRTtfA}ue(@XA6U@!3_cF ziC<5rt~x`3M{Kc=!4Z#2Led3?anX?IE)CV40zt5e0mf*P7ZnO4TT2=knS}xeb3KR` z)Wu*NZdXQC52WHXQl(GZgjJC+tKY6Jj#4Uy2yc zRPh(DvRMlk_zMdIkDT7CbE?bmZ54-TOClraf}C*17>mScXteJvW0@;_{CF^rGRB3! zI39H59b9>7bll454bOUvA(7dx@Lh-rwg^9=#@jnZG6a(S~fd$_AxTM?lW4nm;1aB?PbuK8RTCe&wAR~=J1cVa$ zPZ(^LrD=0qqSCeC0iBCrW<2d_;=)Z?;bv~Q%UZqsN^fKyz+w$|{L& zuHg&N6YJjiP@VO&EZByjn7-7fj~<|f3q{@$=%J0^3N@NmmRWn>N#i?~u|uN(y>?ac ziXLB&;UBrc@aHbj5^XlZlZID-W=5`Op}+EYz?OL;tcbf`hb0%o5wXCEKuJ6}375E| zxU9g@yh_r7RSnAl}+& zh;c)|^}@PKEEoVnqJ8y9RJA7G1EPuG3M>-kk6RgBwrBRX)3nPs&KrYd(0>T%lvbvw zi?{L=oq?JuJxn0N8L^#4)bv6ZpX=?G4uTdmhb9}EVl#G!|D?^k-_WbJ5sOOF=CuSf zeS5V$%6Mb)#RiAt_Rx^P7~a*w7pzL_;-TSzmqm~KDRGCf=UKu_ z16w7aUIH3*0FB4}fizE=1Ng?(MKqG&(bAP~$y|uVKkg(CYT$NgC73cl;UN#5ytk2Z z8`YB!+HK}osrk^33`Ne8N5@F+{6K?pK4}+)0rsvWi&!atJ}F9d#28?EyQp|+Lwu+X zjY};T1_&ICsgqM1YA5&$KzM()To=sF3hfK84h~!S$M9xFNm^@KPgr50iM?J&j3eI@=KzdQ22nxu!i@Y#o?+Rn@lQ6G^v6S$XjY6rzjEo z>6!qR$7G5C3wvb>6yN)T*YRJ+rx1W|Tc0{HAt}=B7tKJch2NxAO2&*up> z>r_Q#Dz)lLl%^xZ@JRSUX70IwBR$XrAd2hzmDOm{ohchvGuNEytyY zIk2}DI47h@9WqMA>MRzOdWKEd*R3mwk4sn6TC5sN4M%#oJ_iC=P^5?+j=Mr_Vmd)L z*StnIN9aD5T4gh7W^(a5&^M80m^cqegw1spNAKWxmYX^`MIU;vG18x`4|XF9FEJ*L z>WSFJ@CjYKF(tUoSTY)D_N%~;^|(-C4ki5*GhSBtvN$C^ZM zH`=m_Q=kyYrZa`o*rmm4EyE&eb28eoZ*UWIgBn8K)3}+DI=BP*4Oz{M;Ro6U3i}n4 zExvZL1CI!5s(*`N)r#i(g|z%vhCpK?(MJf_G@R)B%JKh;(o{Qg{h)CrR~^FuC@xWL z%!+uWVaRQGO-%pej z1Z05f-j$`MwY^YLc!q+@VWiL>jXqAGKDb-2 z-{X=v4xsTMWUMpXZV$I$%L9x+{D)Q=by8PeW9U*;cE;o#S~)s)lcC!r$%^RGId$E4 zaz?C(WN;m%l{)D6ZL5g5W<{e1q_P7Lh&8Wl;ME4lM0Y&=s2|$zE4gj~Wh38P*Q*~t zXO1#8r{Q&)OGOe@KU;YmuPPOh8Rf@g|EbaFKQal!M)poZVEWfjLPOgBHyun7DR$O%=8-57ZxT$!&Lhcl4x`R%7P44W9VCak1BVW4~QHA-_B_a~uaRLA|nj zilW^B)#gaG3th9RI;rM#qjAWV;3Tat7o8ekP!yRtQcd5C%|*i)(a3JAIjURX?bnJH zX@yf-@xlqM5OqHs)976sCHRnMZ8rQ|FGv`)>{4f*1E^iaxrb}nJZn1oc6>AK`A7j? zEfaM{ouf$Q_Ddg=8=Wj*^r4u4EMiCBE;7{_!HeNkPh_e$GBqnQH9ImjCo(lRGIeA{ zWa^m6)Cn7=PL9;(174BZ83JTlGt?X_-!6)wtl=abYcxa(9g#w3q|g;9^h651k;1G< zVRoc2CsLRjDIB?>a7?6d!iK`hkss;OexyrF5WWn$x=}VW_(HbGJ^vSbZyz63btnGM zWG2aw2WEtTkq3#LeO1}IJC;b3}8#h;E8U0#=&`Bmpf1q=MoDTB|2sY6GTWfRy>YKj+>_g3@lgul?iq#}{6cd+xdC z@pC@soX`23&%<1e&Ka0(MESj_8Rl#W7`ngzrp?Fl&CBH{nQP?%WClFz@>{{G0gI z>JgrXSGa^5WY?fr;JTGabILY%d&t+Jg$!X(R> zq*%KMgQ_=rqa5O60N`lz`Q{m&lUW-P96SFGA8g#ZinV^t>`eq&Gg%Fv}BvfT20%8IICiPBg^gg$-dowZZ$}LPBokJ+9(!*GHkUY#KY{eQ^zS5zgtjrXOL3N@#V0gv5fW|VuM<8|iugcDjDI;uZj%10>hwILVA zsHweW^avn1np4UVCmY?;-I7vH$3GofLS&h2oi|t=NL#=~k8wfdQuHfPM;&y`tx)Gv zCLQHC7&ec#nD`TrC2PM)sIHSzadLj98WZG{)qbKFmNtnwbQ`)aRNB=I9UmB?zVvAeI66{3~l-ux{OWPLktLJwgzqR}t_l%T`pM{sytKs$XsFCnGCYc18zAk_hWSVRv z(_etsX8=?-1Rx{6_OhED8~FV*zwh(g%D;~6LM3$k~V7CUe8 zKEGhbhIUz0Zc+cGzp*#S=J+c|n1!m`(=z|c9p%Li?{j-uSsnFF#TCIqDRhB7-DZ=? znD1+GGMl*@4X?ivg2NZeQXif-)cz9PKoj8LWzy{k-+$$0!L-)W+zRzoR0ujFrCCrD zS=d2=aO30xAamn%wmx$Ij6}jG{!+r0(kqM0MWZWn7}*^7gd)J*RXPbAarACyf)>w5 zxz8E!+vSqkGwCnMPdQ(!-DSKjX&dWBz9x)=1Afith_% z6o)watPQ%0YeGxN&%AM%3kh&6b(mj{#J&=|ED{R_S=rYFISzg;bTuDS$iFap*Z z(6SDDHww4~(3Jw{>jcnO2A19G@9;Ja@`bk57x}O<-X?HL0Q-Hu@T!6Rx)s*IhATJ( zY$+FDd!J8=#0o;^)knUTq~Yx*V*=j)N}5RQi=pxIRYP39CLrDziQO4IFA}>am=%fL zhpc)m6ikEefGZiR3Ee?T4fh%X8tyj-zCyb{3;7~GYslvl(2&2BfQJ0}cJI7a@6G~y z>(nBY3r1=%xbjl@l{BjHE8dOY)=jTzyf%1sBvzVuzg|#v&icub*bUxqhINw4ke8+N zNjfF_?)QnC(bkLINu0X)%<71`73qAH8myAFF7$zz_^$z3&3y!3q(vqcT~;*C3(k(j z?p{yj_XtwmD@b);=sD7yL&4@#1RepX=Hrq1IlcvfG~Ta~#rz=xvjC16A&^Yc-ZiYq z5w*(N^z{1L!}@A%cnf;v7!zKf&qa7kXKyZzG^%n6+N$f}9~iObveQVSDfh-sG*$_u z5JH}ba zYk)r>c*f}ltu*;i4aXy~48I7D8uN2n*JqI}0KuL1 zU`l*`kr+vP3+)P zD%6ifzkB2kK7}1TRfwbGwNplJ;-o$FKcuzJm@vy@>1)n|#O|DVvsl*^b;%Mg6_d>V zfXD0;nHwYiW4=AZ?^%8l-fI6OEWa1+XX2X?*SxVvIkW~Gn6;v-{6+MuIm3M+zWQ>Z zk+6f{hLP~FsX-jAo5|=rpBhZxtD@zF5J67!Tmt6kuJW08_AhjFm5X2-l9$CuKRn|^ zYU6*Xf=Opr@s>MGCGJIrJPvJaYBp)vCL zZU}@M!f^UxNthM+4FNsN@%4~H520M9_XVRp^xsR`}0HY9pzW9YWICvby2aoa4r z%}8(u@C5(Yfjc#@iiNLy#-D|_pz)b=Z!9fl7Xvxjf{X0QT50vz`+Nyzj0Cf!Z(qg= zWJPOvAsBS>8J4l_zT3D}n7X4pUpzDDdj$k1l8ileAuT0?%}%DQMt>WzgGpSCuAgZi zONI%oYMJbIK55_cHG={gd-DE_niFjd&9JI!UNYER_9v@C4owwEiL7wT4aWj?=}&d* zz@u@xao&;Bsy>>XcpYwx-AcWWC)i4|c+nK~2Irt!jMBb>N?UNP{HeN8{uV@f-NAF! zKR_hdNA_1P)myZ9Wt8c~q-FEl3`Yw&rg)#`{#Ls_xiD*E zd4Qj(EE^Ld>kE;I*XuxjFoP=!WB$w?&ir_JAqQSANrZ=~7tWzAK&@}r>syv8V)L}& z_U%gqZsr_;_Hr@gB-cfG@@KLpGq9)N4(*23vI#B0YPUI#Aa}H*>v_s$ZE{O_c5|u> zwcu5!u^=ZwER5Q)D@$pAgta}@)P;#Teh+^>sUdh)e)E>V5Q)Kwq(Rd;) z5xE}&V(0NUH8@sP4k!DGl?(#KB07+6!68<=%3xy&EKpC8(&%|<^HvdNJsGD2#5%K( z;W2hCZ_95#k>YZe$osRGAIoo#rMPA`NveVJ>CRx5 zCUNanUZJZOj!1$hjYX9btA23UsU4+Gj9=+}sm#MMfCDU6LJ+D&em^7PiJQqhgLL96@*7fo~B{+(>FE$uQ50JB*}wiN{DXJoVgD)x+CPia2P% zP$7|o6JU`P)5KDEeX%3B#3(Psa#oeGekP{2+AxanJeCuZ#3E`%AVmZ@v`f#>kL_hH zbV*TJ9}+Rvp(h^d(@8A8^$y15dVgJE=mqoq$oy>VO(l}8F0|-a!OJH|1;r`TM~Kef zd|MNpiIvd4tNrwN=uex8ST|VlBGv3#uXj6o5t7NMPKs>e+hgTZWQt;K0%_J z^1dec-9Lh9?1ysY5!i?>Sp&4jGw+h!?^dqq!(o(jr|@@L95z(GlUVbyh44SwExGe;5fA# zCZRpZxmE+r8FH^Uq$t-~mXWs$RKZV+78qmf#fmfXR-ntEdX5=eTdQey?4Ws;F+y)Y zB{E)G7!K2|>{#g(!FNQUy}sxI>#e80==@NoDi~^-xm%o6 zt2=;uZPAhs_;#-Th9xJ5`QMm%LqbAZwenS0sfAqWK@f^yoETH1eQ^anA%byHT85b2 zVUcMhy}C~dl)xhx`>`=1P-0`}bTVq;RWL7C`j!0IevQ}KSAp?$(R^icn`P|K%w`-J zoo|UwpQG-B*Af_2iz%n}-sfoqR+P(pRxdjwoMnZdqwh#%luBwT&in=TL6IX;AN_`g ziTpNsk3(0av=!=$KiOoJCdYe9EsvamMjogc6k4 z393*(|FUi|Gg2E(QXCgwQTlP(5)VIs}y8n0__8bTDG6wTC$s0f)2H3NL$)SHIrJz zq@LKIy-Ct{_WlqaaDtF2X!B>hycY5=cxg!_HhtyM*3#ccV&|+$4rIbgY27e~as#7l z{kT88xE)JjtcLEF*OA^{7ORwCIa6{$)T3C)q!BtQnon2NNB^N|=9Ddi2qbq#+Oj&; z{zQ}rE)(VJRIfdaxskcqf4bh~*wEhjJ@&l0*=U1qcrV^a+3hyfCHhVb(+gB$14v8& z2FBCQNRAfL{?;aa9hRm3MW+#_xwcwq&{~TT1Odr*qRUw|T+Xj2=;5YIB|fdDuuR71 z7f+5{$_Mw^ux3Y7e{L!7BFo67{E%e&TbFVBGQ0F4IpyG}wl zMxOw-K+yE|=mn%d;H&K$<;goP&Nvaq>)k5RBB2Fc9KkmummNst1;>l*WoW!gg*3B4 zeh2e~&4tycl{ImA;{wubT$lhHw6?D-^)i__6z#Xl6>pGQgOFCDMbNq+sUFI|J*nQ` z75Zb|uDvHJ(HC!ZPpnX1kc~K2D`JMXVbvQlt+HD6u$KT7FyC!-nICDDn2HMJpf#^1 z)&e*Zlx=I8I$KocaDl z=B<+XL7f?AbImfdZv7t6YRK3S*M;Qslu~keN-;U|L}NW$o=K=!s&0gytTt)+6c$Z1 z=rFnWjE1h&y}TzMW7Sv`lXDi<9elY+ zS_kW@)Gc#Cg2*dzwlyuijyZa_K8zXj-Wr(W$%TKYt{+9DrG74@cB-_YjOtFNE%Qr#|GWCsF6>!gDY{`eL73ehPoagz%onA3Epx`_ zwk#e$jic>`_rjDcB>KDzR2NHtRRvEXgC#r#W>e$|tR~5mL&bF&;bsaj+`6nCb9~dB z<`tidOEM=+X_R#482ej>o&KC@*q9u2h&Bw>nCElPMUa}!u{aw#<%BMnJ5~I#KvQac zK0#U?g3fWz)r1 z!|Jgo$v()Py~AA#%EGK>3k)(z@hGe9HPu)WGqf zwpWa0K|I8nk0m}C43DOXmayQHoG@GG9aR4g(Z!KN+*5LpQ&=oUb}zdmT83uGTO5ip za$NyWRZXQjYmIxSuq+!CWl0U65;i|#qHGz-;Zu2`(d>#X=a-W{8p@z3OiRZ(n#O&h zwJn{O=NFG!!$kySNsoCk?{^fRXTLvfj^({{=zS;rl5SxmjAEgk6-ZlZ79u#<%po(B zfrQ1x;u_eQC^iQ?ONFf=COf&ir#f69Nwjb2P%8@dQPOdCRE+#GMt!Yc?g^jJ?RX{9 zenvZZKcgMIOFMSrDh~Mi_pIXh+#lJ+^3&(cU=a|4^;w zW8eYpiY|(&Tcl}AVgsEX*b!xlBSKjQZmL85Rh4Q$Z$k`Yt|}RjQM-t-ALw*i3L+B* zI+KE_BCHZNeJ=G(UwJK=^89ChA}TBN+}VB`s{ZPF_q?KEm(g~P&=OR1g; zE{4(%BrO&C!QTa@!~|1b{o@d(T!Qq_U&53RRKsgSm?FroF~$3QzN;(XsiI5j#b3y* z25UbmI8?X<6hUn0^z@KB{arJKkYGnchWGiaxvGyg2zFp%WL_5QJ9LsGkY5w<-3p21 z!JbUhp(M=Q`TM*NEFuuNhI`t+Rq5X6cSKZv?<}IW_}IN9K_pw=Zcnk3U&33YElrYV zl6<;+=*^HMeTgLE9Aab=`Ow?TSz}8*7_KWl%-hH$@}YN!B>6Cr1kWR9B#{rjKh&kL zQR!0t^)pH8`Oq8Ir6iK9`Am`zC5hYwZmH*hp-Wl#nI!U|S0wkg)U!eU?e|Y}?4?LHH-Ie~bEH=APEb@xSe{^Mf$nEc7qkF|| zj`IF2lqDXsV?(&yTf`PtCFm~VOZFz$KeWlk*yPTE9uZ$XY;w0DL-4n4a(%MN-6bR* zKC|piu1a2ol!}jPLD6RvMQ0T{Im--kd2W-ARZP>N>w$>#v|P0qqY&c`j;k+{v^~RV zFSFA|iX2>FJwN>696luEd8v*wD)}?H1%q4f!HsRHnW3KG?v7(4Z*wm$L*LyZ?B+4) zgX8t}k#qfMt~s<$;0e;28Hu;e?C6kGc9sQPK&CBNU~CsXFs_qiZ?ZkoFa&sNT2?T9dSzjOJAZ^7k)7_iYkA4rh3)S~|RAI13+)##&RH@j{ zr4FBQP&M&I%-p0z3yn|BnUO*)?y40MS(pj=hpKCix`WqfVHLTzDvGaIP=$*kRYwan z!&aKJEDQl*DcHQ;APA|Q1a4PDSQ_)=ylT_G!9}Khm z#;V^Rfxo6%v~$Uf;i^ED`o}hqQO==(k7`@XgIG49zsd@q4qk-iH^N4Y zlOw!IiLSLw2e_<*oSD2;ZY90XmF7yVrfXK9LZU^n6bL~v+laO-fIH9u)Z&rghR zSbQswfwo^+pUKA8XECqX)?UK_h48O>WsJDYwUUaT6X-@zs>Ivuf+9(9u=){qd~gp* zE8?c|E-%W9x6|TX`1>lJQ1=Y<02_qnZ`g zA8F`=J1nd$uDAO0IyA{o@oR$kxk62j!o@Vgf~Zr?12FKjGH$Xbig)9K6ukCcvgAp1 zc|EkioVGwc&f&8b)6X0NZsj8fDLk_bHhW6=elurLx+M^3ibLyrn?}*dST*7Bm0C5A4w%No=pt%7` z@cye0QLHe-X6RvO(awh5J{>L@1IeNzr#!XRuKOK?k!)NjgtY*U2Fc!OnJT#dMVSN4 z3$lz*VHB6Cvi6KLTp$Dxe6DsX(?$z!k*qd;FB0!U}M#d+6D>4SPl(9-h(JYT|IYA*lEd0da6$#vox|~+xtL}d_c?b*l0#)uyS2V86H-%LXH**}^NzK+uf^0h zyJ9i|Nui@lp+D1`)6_d3k^CZaPr-osnl5>Pc$q}rf*}*)HnV76M(9E==;W#w7hG}= zIfifU=5x$mtJ?E82C09Ra`du#l*1I&$|7Bvchta)>Ir}xI%lW>QzIq~FwY-~NF#z~ zVXdEwW~vXlcBDF%HXXVx^q}O-q}D*ijycY_qsIJqscf3n=zr7=UeYU9CL=9QvhHC; zNt+B?jO*!6KF5OQo9B9;bEjRC6q-v{uDOo7SI->iaD{qX-Dy+f?2)qu`LpIt z!=2_&3cVIF-K(=&pTPj^X{=}-@40x#(_#Jv_hQfFwocPU#oBzF7SVwoXhq7SCvR`0 z!&Ox<(Ef3fzkOmGxjG;b7J15}=d|94a}sRZ4bdSRj^r{>!-C*&yyDfCeWuyXjD4V@ zwdwF6(BNAEVlZakS|$38SrV$=^p0%HQwq zm%q>U$ln)V_2a2F{rJf*c|87bQy&jQ+$1Xk+Fx=%fiB%1 z+h20D=>wf8gUV?R6cRByK(-?UEI-KzIb*Hp35?jZ>ShmnMIOsGz?ULS|bPR;qe|9D4#5Cr22ds>5}3E^zu`Hcg0+ zTY+)LA5J2Oe3allk1ZLzc5d;>-zTT=7naM^qU2mc+7O|>z9Oz))zbtqkqJ&FOG4}w z%EN)vskTl`>bO~n)hJ;`VyqdK6Bn$PRjGX1Eo>b9KBi);Wcgt}fAmdD0hp*>T1}EF z^}Iaf-qji+5tI;OlzW@wEvaU9@hs%TjNM$FBnLk&&9Ab4a-^6xuH@vW!$~y zYcHCEYLX-^i`BYfVf2HaHqWV4)94p%Pm)I0791jYJVcO-J&Pln7}py?FpJQ%Zm)wE z7%A1pX)~ij?H~i59*k6hPaivuRe+#lwJ}RZ0Bjar;H7xh#<=5xO8&8RUtNje(XWVE z(S!8#rU15wUBi93N^ElB8=Z6*dbCr5%9Alkdg@uq>3? zsm$!NR`cO?MQ%A;*SoRr#OiL_4O`@?6%(z;Lni32HQQ6})$^-k$f^hOeg0$_X)$?u zQg$qRqRH8bPnX-D-nBmUt_OjaedA6<{sl*rD1t0|QeFiT>TX`KS}DPwk|BPTWLH0w zytSQMG(J8lUjb#BDxfHhWSza$1flEa3Kh_bn5As)fpoP(_Z9+W$kNJ?=z+>*Xju}^ zc18b>lptg{C9IYbY*f{V%3zIE-G>vq*~PMM?JyUL4mzCcfuKuFjtX`4Cf61|bvLzu ztc>8z#w#Py6gQ5g&I)Kj)xu)M#Erbb%mPB<${H^Y1EPw zy_P-q?F9Pm;zr9tKSbcwV}Q#L6WH_Rb_842aP8;gnnkqePvjltQsP`=m!2boiAgqZ z(7${2x#8j&vqI+x{dbFsKc~?Ll)__&TNLJZ%Eh!^TT@Fgm-4B|xd^-`KQIJuM^La! z!+QihXhB*_*bH6G$$>?6?~rtLolOKzgg(6zwo?6!AEYEilRG zVJWaEpiuQKJz}`#nNax$!F5j3j-I`*oPWoex+jXBxx&Nv#77>#W~xa084t`q%}ZknLsJE48r8=&GdSOpvn3A zT64%gpNXv~?UgfeAe{FPYy|c{p;oHJDW`BtszhiJ6P=c8Ed0axLg^@^lNEf;z@>}i2CXtL3R|~-e8A;bh5nmNY(5h~<#c z_U!brRY=hKNVb97>d5F>+G+X9q0aAb)5h>qTs>j~zrz^M3i7nJeg78rbuZsY-;Z}- zyucB}syS_rhqg!0HM2Lok9iFTq0xkhCgjG*i+JF{d^_c4VC}{7`a-RA!rLSoh>2En z1ZWm8f2&c1$%^2#Xz`tM)#SH_sO>c}g?7b_4)bccx)S%7a@6_xGpsIA?aEGFNzIz% zK5U#EVRj9cGT3SyP-`fj8To-W{^n5+NmdJIwVVMW0Ta}Z-x{hBdz5h&+w`8^d)QX> z!Dr-=m=FK@9@9}(gc>& z5(GOqE=$O>iF0n(#5axCdQ&N$8}$!obLLpSJD=07eP50n-Ih7dX;j!;7B`%EP@gwu zY%=-=+FikQ_+v&ntRL-a{6<@s@B?#FrzaT=vEUeN69b$gsCAYdeVuP7!Ls5?kE9W1UChTi_$`Zl&BAsA`06d`h<_>MOI(5 zDkN4%*BnZ~OoPk3Mn3OJe98|+&Mj3|d!_;gs3r3}X?rM>`ImG{mHHC0Lq?zL z_}JGFx&b2-1Rxh$x)+a7Jm+x%OAkIC>5~J?j*<6fFW;G8z#$x)@q@N;NA5F$S$Lgi zno}HM#)Kl1#?1AIdu$FxoHn={?VTtPmyTCrmS|qzrYfV)c$0(qCKqf3HTF%BQV4rD z?jU<0shU>ws|)4yx!vbS$h*Y9$QSZcuE46o?RwqVMN$3=_r!h2_g%afF5q0Z04^E8 zjeWN?Ue;fiu{3No!ftO zO-=&XDS&cp;>Clod1+dS^&>|T!&Tfug(g^q6%)8!}f+fS!(Ovrdv1T^BoqAC3F zfW3u|+mV1J+SD(}JB&x=$q9qM{)I(3-lq2$9RHl6Dc+_7GE9!vrarz^EEA?wYtx{F zDKI-eZVnVR0#F;D(a9{(SE>biZg5R5^Yl?Zk>r6^p2l}|19fRlht{Pve!WPyea))Y z7p2sKeXdw*s}2nmJu1Dztl*(wG55uVEzaW1(Ad@+;{NVc*1^EF{GUAivn=7B zCkPvRv~bS{mcdjJ?m=$nOyQn&)haYasD$0|C{pq7M3)@YTVdG;LlQoREeW4->W-lr z)%8{*O#JfNlts0wq()gRxm(z8yh%Zc&68_Lhw++u1zj+f95h1vs};1Pi2e+|ZuKQ~ zxa2!fYo#&9>yRUlaXzz2kOe}>BUV&)36<=L*CN$*j_M)11p=eXIAG4BF|G4r@aAPM zaz1rKu0xu7EvxPoDnR;L7$=DJFB-hK!`~I`lJIU>s86IUAIP`oS@_N?bN@6#T5zb7 zGEeS?ilCb|RdL3r19AYeYx)o zIMt&2S{lUr?cLTm&H5^X^h2!1{-O zPtZd4xo2u*JtXHSQU4sbn2K?1pRE0?X7RV)7T>VmrR!+ovUe22Y zBMk*1Eb_v0dsjC?uwXZdUR@Su?6%I7GttkuTnIR~7V7g6;bnbCkq@+qX!n&Moq>bBpBed{Vwzm<}-5*2bxRL^bRV&S&AUks>VQ~+CP7#~}R+H*Y zRXP;?xD|an#{!XT%Epd38e+_K;nwfSS2XBlUb7Fia`b4b~WRI$~(EUO*}I`I->oUZ-!$NHc`qDO`j z{ekhJ57Wi;*HU+5%DVAI7pxo;NUbTl!M$#Bqi4hH_4y|jXrW4_Qmt%E^ zy8Q*mC^hjHAq-%RLCGwj1OD^Wy zjC+7I#UY}-$)&T5l`Mv2DR+|x2NgO`xqCR%pCDDNOdcy!w$4G4$$2Qy59!TA^^myDkKOK>PBW)L8R9sHU7=Ucu@KvDZET0sgpJi?p{!pblz+IHJ)-CB>&biZC zt>j?Q4o3}z*MQ?zk$PmcJ2>&p4efc9aLcl9@po(odd=Ci7a-j!vXzj1CsnEy;g*QJ zzKJK*0K6F2jYSx@kvAQ~VwYNw9jzrcno3NqS1bQl#29mEOl9Cs-lpp}kx(=z zR&MC}3Rj3$y`S>YXMOzb40s6%ONNmnbB0MnS)1pzaoi0}Qg`ebT9RIn8HjHow%y)8 zusvXLsuG&}n8^EfM>#@rbkYdc^`O|AW;wggy+hP4X5ToeS07LzRv5T zC_FwP(U!jc?>2Rn?au(v#~b!X7wzBVI*5^P3LSe)Op{tAx7|M$Eg9Fl#Ed|gG3Y{E-DHL0J;tP~lC(UFEiasEXOpx41eSecHm#4DR@k!Gc?A$Um8o=Tr|@)uP4gO^%-MB`_bPv z%6^Gl;k^CE?r2%tSj0_{=-(clr@`|W-E2&wHi!3thX{kO6B<(@4f`D{$G~8CNEi%_ zpt$#eWa~Iz|#fi$4Q zIO+=RkA}L(;wG-4hi11$%U)e~on6y4)cPfvB`fDNwXM6T@!F<=m6Oauro}hc>9(x; zM$^u94_NJ3%etUyf6dkX?*+X38hv`|q>(eF@x!KpRqxAG=j?o(hDZZ<8)a>0HgURc zVsU5-P5gy%z1x@vnEIk++g;d+`CKb6(JjlNjn_zfw>wtO03HuXI~sEt-Usd_WS&n; zCP-_yJ64UMEu*~;R}s(m$b6o5oBsZDZJK0*Z4+d8Bv$Ng%8^|AyiM6W4VRq2cG<9- zXTfgXtLrYY0Y|0lzDV=hR_4oK{SF*yyhNIGh!6(s_cdk%oHiP?QyTO#vC<$>k_{su zY?+o)Pk3aT=qVUL=%WY9SzQE^LNDt-V$561_E)IlM9d?^FdH^G%h(ILE6!Q;YHQiS z3f06>!P*J#plsv%99FE<`!6X9#nxYFl=XZzdDT$z8Iqi`LI;gSuNtS&bo=xv^Fk?F zmwVq+u&{ok00NgH%^3psB;O^Vi(H={RwEe*)H=%kF)obWf)`{@_$#Wy!gC(Ic zRb*_hqkuXn6D@k(x4Ibk2S6LtX$Fzho}aEJ|hP;DBpf%_6EiPnsHG!mCxkgF9ere>y z@`en|10kqgurH8&-EGVn`H$xjd=o*Kvw85Jp{;% zS&zxz`IGzy8YcL6t-Hj(r|}~HuJsrB_cWXjSJme8`uD6m=HJ!$iGR;}#DyD#)cf7? za!;|V+`YW5*p+fmpJK?-zS|W__h0ob8H?|>nH~PC9+%+bZRYdVzPt2;1kx=)p)m%p zKf@^(1HRDxboB+j7 zN#v7M^TKL%J%w&;Lx`jn&tx;3bd{+Dq)t~TXL;F_VpmzNbhPa9d)lO@uCjcsJ8^FG zDuLn;rN_}(f{WHcjll(@eBtTtEKkpyCq200glH_=% zBsS04A}{{#b))mT)0SzoQ;~5``_$PXh*-Mltmt zR_)#4hnHXc-9MF&hJJWL}{s(uoWM6Y$Xu`%r!7(j0&TDF&q0zQKw?iWB zWhUz@c_CTnNbV)EThs-&Ld0_MIHbs&Cs!mDs+4&A%t-m_RBfUvR=<7TjhgGaySnxM zq07oWRg&ozwdNgqA=+KuCIzwvTuZB~(0eUV_q;0~5DD})?cqZhk98^K_#_SeF?{Xx zrKo_@W@mYontV{Oq}vA#jGj?TN^u@`kn-2178f= zHpcxM4^;DRh|ZGrly0(;$$Ay^Ebl1R@FGIi$l&-VV?5|&Cd!NrF+eH;Vkw}WH1z%N z(P^#4UKyAj|6(A%Y$2&xkM#X4xiX5D^o3H5l;)b*xY{xxi!w!~ zq{h^ZTaqWsGh0CVcd!)%q%n1q9qLzeb;ts)wf?*d0$H2hh9en3X_#`3=p6*<4$)zc z=xqg)X4NnBBRW|SuUzIJHL@adMP>n{LM{BAjg8z8z9`wu@<{BWP-*;GNu|oF>9_d0 zg%hSuSFt%?QfYl^ZR#gMRfQUpC?V*oG7sT#hg2MUtwtEf^NX8Xe$D!pDG)UhsCL%M` zQQFZLPnJXp_FoD(pngr(PO>~JSws`gBL)5gvHET}MJ-H}CES%cLh+pKD)<{xj9dk$ zsO45ko@GinZI|+a$kB;X)G``!Mhm`dx1d1hOI+sh;rjtm{)qBSh%FUbF0c2#+{TxxlLTIMO_gi3NSkx&X$Jn7x3;*+_n6LjxemD6>bAsEt$I>Z{=Z4u+RJr7s;-&YRI*u`Q#Dokam-uONA6cC?={MM?E=c{$Cc2<)Fq~w=x-y(s9FCX(RR+M~_QV)`}o!_tdy+wQv z&)*ThgYaI`9H)E@-JAi>E_QH%Fe$5gA1g>TSgiNh&* z^}cPlle6BteIFJ3OuNzje3cI1`MmZMhHu=8Zr%0wj(Mkd5_goi%&?BDIa2Rk@!==5 z_LFUmaVL#Pj=$%m5!2-nIqC3za|f;EF5z%vpxXJ_ARR7c~yy(b`QYE&H9R6R9kz1Uc|RC>7`U+x1XdZHM+mI>*V+DBo!X6 z`HOe&RY#|jbLSk2n^nPg(tcd;t$l;%%YeC!a33iT^CVnznkR@~+exP5QXNICFeUIQ zzu!tOehhBSc7B~~xumoPc+BK{UH|%Sx=OWTCK8t9)EK~hs+f+d^!`ko(Oy`S*>l(JWY%m+G* zUEFDtZNo_mO@2U8dWy`7QxSUg%(X=8a`$e9C1;npFw<)4s=d@EWsjNsE#3CvvUNFI zow#v!p_eSW#*vf0mA5f#)1}PGKAqlLEP8Q@7blW6#+&;Q9cH0ebs&d8%;=uV3A7Qt zar*zj!!*eIpm^byu0LoJ=>0lzdO=`Z+qU#wFKyi3=AyVW79^m*odWU9zG}aee3%k~ zw*X~(nOc}^cWK0O_1Wd(FRWCJ*Sa0O_j1rPdPHI%-bnGGCz0jM*zmqgE~zcQ{k_bK z+mZ3@YfSGE$MUqLkG71-l$C~O)|6x3x?S5aR^jNCuIltM+D-pXl=RQW7aMxjJ8A!0 zj3y&+U?)~ENVVaFHFiS9>E#yShk@4#aOPi$8y?@#SE*7jEq{4z1#dnxt{OjrOpKwW zX{xRSUyd0>CJQpyO-*hd4ky;JL}Ks8B1UjTzdoNJdqe^z%m+-3?b|*95qssls$s@p z0?k$XatQ3RfS=x>F+xui;W3jgbFBsA{Hu`eq72ztM&nI;G}=eN`R^Hr4nfE%Q*_Taz-8|HRr+3V!n^T1 zluJ8<=aFc;%U-l+!>PM)7%pdgSVbd;5Ft5iHv`!012!ERHs&Jf$8Z-kLK@xaAl#T_ zY52AYcCBp9>kn_6%-irZTXXKpWYA@eFEN6$Jxe%pB%95C4z7SfYh!<;LjoS_;f{Rl ziDpevt2r7|3yCnj+DXUO=Q4NQ>_HcS&{YVoA8zDG#3AbZnsR9fS32XEHY`s$AXhYw7UvAhL)=)KP!80Er060uM6e- zIt!L60_ESHH04w8diNA5tM%WeP!C2CMv&HL4Mt`?gZUBGfKv!*M2>jQLVSn3pCP7Yg^b+*iLJsPOFjC^j4KJ~CGuLrsdlO5{?+9$!=*LFSafV>M`G>f_C zSXV0uHERY$L}R+{hx={H>ePP{<$eljoqMp}dqvyV*pxfkowMSc1lC z$!&Tp7E>{xu!?x&6UMn?avxuujI9okbn;={#@9Jt=t@K?R!%-^YOIqFqCQwFI>sWQ z4^nbJHG_Z^KNCFheT4e*o7FA8K){l83wtN+lDGND{;4ZwPj6a)fW)RdtHpQoJ<*Z z&1k0ZqFbW0}T|9)t-sUVV9RaRGzx4hbnLbJXF0F@vTH#Nb0A zJ7kA|?w|G(*;NjSo0hht z{H?Tb{oAqTx_6Loc@@FDx=J;U;zdG#_`)wC+fmv2J*fo2cK@fr(Y7D=NLRl9ROlFT zVddo0p8f(^%Qg$nxwsR--?$^k;Xt9_VCY=+@Xt9lj}ilTAMa+=cc@E9(karI9|TfW zyVQ&%rg8d7ktvEc97d3H-33LK0iMv6N|+8&%Y+Uf%?f1Hkuh=T9tWD5|EY6E+Dd*X zCEQ@XAZPbf^)o5iX73~G#-T^Uen^#zaT?)4S-gOW4Z5}W*tm8Fxb}|ZIc4G6cLgKh zCq>pdk$$_rTK%YiA!$G!#fdH1PaGJV{ltlj5j@+Etq$~?p6b9KO;>ebAUQ%s9tDRtf#sl^a zF~KxKKK2_FZFH$xYVT}q790@^PkmS_h=$(s9}V6p7#RYA7 zeIrM*LPoMeMzUgfBy|aqo5%`ZdA$1RGeg7pErQlC4qtV1w-h-ci`y#eqgp?d-n_nP z=h{pCnKA&YE->2Zwg~g?q?MNTpujwsV&HrnJAMUr{%eQwtH~e90W4RDJRbE;kVcqgha;!s^ko~#yTovrLp@HAKARmo%05EFQWP)HmHu~O`PGJB zah`3PXh>4s9yi6?uB}frzO`@yh~Oq za~%>%8OJ+MfNQ~t>SuPcZ9~b%S;-b+BxwQ4ckyvE!ElNk5(um%DW1Lu$`1NMm-E*d zykxJ5?VjKT>JC12iTN&vxLOjtcqwMxPK_Jpb#l)dKob3PE&J6^q-BCFVWaFIGQWpUi{%q%1$KH4#>Zvrj)+#H zzKX3=e?pvRs2QMjLEAvPFPOX~Om%RbeH>CJ1?;p6*l888(<)$3`Yxk=sX41&;0g?92WJRusJuqt z#t?V}j6B@}V4gS{k_L1;ZD`Wsp@D$4{GB%%V)Q3gu+!?p|I~z(4LhaNl~vy7`(BWx z+j!j?J%->CPT~w3kUdEfm<|lZ7}7I9W?K3lQ}S|*-0-2q@b!3Tw3O!LzEhq_j1ePT z-_#M*?!AHBFMz0ZHtyYWX1K$V&ezSN3)s5ibkNEZh6kPKK|sMAo~ zZ9#Fj1;yP-dKh*K6jL^E#q8lKyT{md@hid0zyoQu*xs{R{Yq#&Nu<@Ic~TSY+pSyv zzHYgX{t-*-DM+`T=NYZ%9nM+;XQI;Sk1lX|Tns<*{(S{IH@4l+nAJWl(C2JV@A9{MH$KZZ9J8`GqJGw|K6wbh z*U}F#xBsu~$I~*bXY0zZbXN{A1fT87fj`$3-I2epAMNS83wAsW*lplB!bZE;@VBq{ z6Ve;jQsgWdo;Qhklti1meR_UHx^s@V>qSSVRF$#!C4sYz`L72rrUNoa)&lgpEI>>R zS%4TzS%5$=W3TWWUBI5iqzXNM+^Xwt zsmt1im-OZfnI;Mcnl#I^6!|7LWEG%YSW43y)7K?K^sjOoZ!oe4u`puA_=wp{OppJ~ zV8I#btk@W0v?-YMN;10rd$D^^mW^@y$Xs`P%lM?!u<1dxB6?-?ezzvYI1?)Y=-=OX zhO*c=)%T+zfPSgN+A(jy{y&GZw8&|(L2x=L^k!rpA|TuuejO!=g!Kzc7ssQL7+iQ0 zXS+!(rZTxnl&lLSs|6Bla3ocSQgO$oHAh4d$F_YUhLJ`4DJAs2P$qae>UqPfDA*{igxarT*P3FJ`2%(_Vp4 zJyO0CPgdI+4C?P7_|dLH#&y(;wmNLpl92mpV{~5oCN!2BKW6<#qo`}mdy=(?n1j5= z*6efbdBzzX4H+=)evi4snuxmf+E6!W^v_QvAgf7KIs}mrI9_WR9|y)r&_G*NRcqCt z_jNmb;;ZffunX8jLIJl02m-ne){Z?{Fd(lN-cR4kJhdoGMQ-;vu$peynS`gDGEXo) zFlbkR4cL;5$l=oBQhXxWiA4Vi&laWabQm`=34&F-i<)**BsBADah6XcW>Exne z42d~Sj~ZtHi^OGRC}l}_?4!Qh~%pdbTu)`1&UZ&0v6D(_h2!_#Mu zADk<;5~jDF-20$BU}cDvC`;T?rpzLlGO+SwwumKj>k!CH2(K$-MN2i>drtwDs@7F; z%N)eol=5D=(<#`8V%&A+=*UU;nlb)QSB{>49iHaHTSQUL5$tUljj{-)6paBjMVG4-fQj)4FZ)yTY0SuLut=d`T%PslHgTPF4#dJse&lQ?VN z@PzCl7-Tq~a{aH{B_oTK)HY*I(ex=v`TT8lkEt8MkHcb$Fe)LXTeEI3y8I_s)wSN7 zROx*_J926Q>fEO?LplCkt0o~^SzlB{!q7Q^wA;YY`sn$QcEM9KLxSKWnBAV_?^xMs zPLN?paG0=qZ4GnyrgL(WZp%Avk15QBtYx0%?46fh$0%BMzq8d-->1Vl4)qLATSf34 zfQ$5T^GiGv_P_s|u<;H|v;?PFxI`B73FF_MT&$CMH_A4+g;k=_U*hf(wVK@BlQrXmnp5Y`e>Ppp-Q=&8Zh@Iv8Ls@zsfRt-Gt zp8m$zIjBY^20C-pG12H4XE%HmiCI6_F%e?3)3Fe$rbPSP}_Q^oGxfVj$5Vntdx z>2v$>9u8b$#YsH-l*M`l@A*`P{?@kyPC1ElZQ=rUc8l?nhsew-8FlAS>62I zE0YcM570wOfsqzKfJ}AfOF;dS2Ot*{fdg<^BDxf)YKOW@2cfL-3`<$8iy|RfsnWVY zGRtxv^T}vX(K+56V@GtMcM5Xh^ZGHXjQV!jTgD{KP{p&$z?=!Wa~TKkMow%v~_;ojwe*wHDuCPTNs-gb}ez8Y;)qi^j&?JYUhg!)tDF zH5`_fEgEiF5-odL8WKErZ?71!L}xNqseT6nLueW?^P#_l@}UJf8}7qKmg+K_FQZf9eKYe}uX%$yKy+LLAj~9xXDByP?oNuFN(+q( zWZqV(Jc)Q8bf2l(puU~BK*$Hp zFHnzP$3jtZQ)J6#AnJhNvOb5`A*FN-yC{G}r; zCSb@9U*i}Q)HW;FX?*tNmljqVH+eXCWMO*9)fuUWQB}`rsI?CjL5wEw*SrhyUY`Dg ztIlt6U0=+pgWm5*&Ag#GwYBWj4gQ#+)2)05!Clhj#af&CdBVf4wqn4V1WsIF=x#&U{LlUj?_`AIkVSXFWN)og;`30DjDU<5TO(y-Os#LA!tH?NcBLBk!7)A47eZ9^z=sq4FfY=+JR7QA9~kzPFdNTM3`8bP*?zl~n3d|%Ux|6=7;KNv1NCjC+Q>H!Xk7>E;{{+xSo0N6B@*}&gQ|^R7Cpx?0UP29Ax6*R4~jm+Wsj$|!q_gW=zE=>@h= z2_)C~cVO<}!+#n=g>Hhl*ekA3-yu|M78ngZ(uWcBmnXL*I4V4Qf@MKKJ*_iOl3_9k zf=6<|bLEvCmPjlmW7IA^F*G`e^ z)WYdVxh+5-b>V@?`-2-kc5wKn@Qg)m?~0&P)o+kkn(}B{kFM%CvT7m@Pfc3r?I=$q z)P1{&M;g0M}lF z3ujg6rmX65QaxZAGgZJxn8Ft$uvd$iyOg>3Bf<#p`A(5ZloCEoLQw5B1Wc=bv*F`5 z6p~zsg4Py4Dlj2{HbCy=9INff5Z3Z>v493}ET#`NB2<^?{$bt`VMn_`r>{fqYs@(5 zcfEJ#2#GRZIa5jb=dIvlH(h|&U0y=sN7E(@Xk+;L$Y&Yk)#{jBACE%CJ|MF=!}G8BwY z4PC4is4#jp{e*W@*xGl$g$k(b zjA0P5M;QhYUqnn_hQcR;{fGFq@%|n^8T#Mz{H=7r>dcC_rRM@%v?ErWl9ovhdH#+F zQ52|?(dbb>5K$tws7TH#tYQz4mp! z{fW|hDP54Dmbp;#YY>;|xZ;3B3Yhw&5quH#mhFm>TKoLMrqv2(*4q-;d!vtcEzV?3+dwuwRl4ca9#w(Z+Qa1&OMhYnunu857i+Ms?J+8QWVs~jyh8C^X%*CpAqr2#M=?ft)Ciite>8r zUq9<*pZCEpg1yqU{6;;uWtkXPsKe7m(ie%%F_SCw`(lya99LqcV>Qd#xuL_idXixE zVa$K?ae59PTa$Y}y35i2ezFU&)KbRcPWqHtW0e6?j#=vwJr}ZxdeZwOQY;1}&b`WE z6)s4E7J|gh95mX4{(rd6-;0*cilGOCqjBrzhXT483o&ng7Osky384^*w9 zGFnknBdZH5pN|@9XiCi=DRCK*i&=LU)0~>QK8iU;fGjod@ffwZ^Z{N@tIsWNd_`uA_fS85+EoVQ8b{$0ZoJn z@e-R5lMp3fFQjbLT?#XxEz!hDG?TYu-Cu9I)>hYcYunu|){00Zsa_wp&M5D6p zi4!#{CIMsS|9#FoGf9xPyW7uSKV;5(F3-82^PJ~;ki@?*e-0DIU!TA2Ch)&+{+di6 zdj1|K%!K^^Gk+IXHYgm`(JN}*b>4+Wvp$S{EXks#*fHQ=nql!p z954FvW!3TUv-qwKbs;_1W3o%cw%?FnT2~H;Ez!41!iXSlSWOwpfP3&qKuIOdPL^5j_g~zczXlrZGses(@-B-*!B`Ubv!MoIOS<^)r`eV!@WzMZQ)K1Z()QHzMlsCUQL$RZIr_1g#}=o?=* zH71|VrhmTwBh(Jgj}_! zvfP)P>}&eKJT#sxs<47w?9oV?i6`f}{OS7i)atvN2hRsfZsN}FA)nj^f^2JCm{I55Gs46QJnmyc$NOStSngbtWts{gX}_a1S5<-(o6K&FF3n)Gr|7`d^>;nDOdibrpJ8FW=+iJ#Gu zHM~?bR=oy9e+|k%Yu@MI2>(8krs)YB)>yXP<^Qv8kmx7fyezWX=iOyCCRrLtCBxAM z0)c^>f3Dfcjl(OL!{by8j<)fm6>=!r_!3kX&DF`tJ!bov^_Dg(aKLd_gS>8RqMTsJ zH^0Al!&khQyuQnfcIV#bw4lIax;`Ai?P0Alz=% zjFLogATLKPBtR;J8j>gK0$O!L*w^#PxuKpvg}P9g`u)EM=?1YNAJ!^zLa&>aC`w@3 znU*L@)w8q-s-1h`rbP8C2`^MXkstf^s8ywk-V&Z65mspmj39_JYVA7l5ptri3NK3z zH6XN-JD{awKmG98dI!Q!Tuy`FrdU zQ5*p7vRE!`_7VXws_fG09P5NpKY$K>P)i4s*RAyHlo zHCr2zzOHc5jA{z%Tq3%jO+jr;!lKTTf+i)fXk4@MGRXvgh8&i!}FcVo8yze1ExDR^qhw8}A#zR}P)4kXCnei&z!$jk5aoi;Y!(__%!|}c( zxKZVf91%JY%_Ude$I=40Q^MhNLYVd6ZAZUt53#{(GlGS8VC!Txlwv315Cg_q$4+=c zP1)A1U-7P}&4wf2B>7-`%nUh$MWKQA}b|%Lhcmy7vl&^|b zO^G%3X2m=BWD1Y$)hmBHrsj_>bnh3vpgu-pw5i9nlw%o*4wKM52rBE7s zvM6Oage!S&8U|4Ui_^t+3Pyfv+!kM)@fLdxOXqO;hOs+dSXNf7o@PkJg~18TKC0<) zvi5k@(|o6TubMiY>jFzcm&qR0tSirO(0+d*1`6+{97lpQ&o|ZZ4Cg=Tq$=ppgHNVN z;O)@$Vy3iu2o1bkA7D*~En?UM)zDVB^0XJ(T?Sf=~>v8*SnQd z)C6Y%T<>Bzqzjx#J94nt{IeNNS{gfoWw2{uJ7t|_JG-J;~=Ft=q zZu2+UFyn-;fNY<0#?iqeb345=jRckoGnHh(%+_Z?$q=3GpB`m-ZIkQ&|~$Nz$J0qPMg+Oz1BKK+B9KNs%0 z4Ury|&s;|pmK=nYhuoqQ>q()&d?{caDt|>G7KTiO-yQME;~vDX&mZKD%RbMWggvca zv;E4;MUGFL^SqC7U>x#fHSLlMGUownC4tFfyk3-}yqEoW})p;ZUMKc}deZ zEn(*KiJ7z@cDgb>=b%Xklpl{m5hfc@Dq43*-Ul$6xHDY}F}w{jy!&UEx2rkC|Ct;a zVpf?FJ0#;ot4Wl5^&N_g)jMvMLIUt90a!f_V8vK~-@^4#@_9%cK@GdWt|H6`i%WqZyq^tQ+Px)Do1Iblq?ZVHH!C1`)z=%RRV(Jr%9)x*(V z%LEt)vf^b1SuRFfW;>@DN11z2yZXQo@URzA;uD~prt?1}bwA^l#MGV~70c&t2UeKPCn50s^bM5Na`h!->C#ra34V8mnY{+1PskO9J9aWJ> zfqf3=@7N=Pv<)o-19EJSqx=X9lsXl8!meT&L#d=Gq zDG!Mexug^Fx2r_-$gaoWYN@&ixiHX^?bfxe2p(Rv40w@45pTlbT^l*7vBA%Pgcq-t zV|zAdb$Ia_g6N`~QIm9(AR+;spuR|yJgGWDqE#OejCnxEQI&bba%X+aZ52dd>R{&U z_<0m3k8S$edeeKMk>KwL_q&=Ms6$=-)QjJ=cqfIgQ2z>~^7aJzj@)5ya07FuZ@|G0 z*0b+hZ&8oP4PM?lCT1ddmAGP%`Q%JOAI@GCADV`;qC8+KTG5)bSH*?I=}SDOS1VeP zl=k<;*_vdgij89!Fg*^oXD=~sw+HUP9$jB;Ujt*Jhg&;}E;Tl%2bZUnl@^9KJJb(J zlLupy?|lFIrjbHY_?JSOGq^mR9N>sGh3Z>^MQ%>_@0lru*2-KOL+TOc2rTMCZrpj@ z%hO7ES9h<;Na^~JzmD$ZDOmOZ4o*E_di(cegwo2?bb>4iq0^SCgQdKBm#49aA{_K> z;SsqdjrVRfN5J2gA_BOj#;2TN1Fa74)B#TlPP?%e+eF!N|DOhX#ayq^I@goJ(4=rR z{?bhNymu=JsNtHXn<$6;D6bn!l|$8$h0D8qm*{`ZZT8;0%mRhcd*w2%)OU`%+4nWB zrmhc`(iT**K5(d#D4p{NbGszVjbP_L!a_~kNkG^ zbWcb6y7!N?XP`CCRrjg{JSi!zx@JNwwSm?YuXQCbx~*LwzS;YB&%mA)E<+BcZshWY z3yX>vTy^1Q=?F)gGv0!<1bef)q`&LKW&1x5hpQ8_!f$n~43)ptm33Ik=lbx%=o#2$ zW8XqbM`;dGzX6K7o2xT%GUMqV@bt5+I7zK552*pq3H&MadmVCr)(|>$=LtVD}@gMOzHjS{#i@guH)=Acx(IkjF0(S{Ya8V0}nL3gic{VyBVN+=Khq ztXzk`C*`tSQ35g&Y`D?XF^*`=Ar*P0G zz&LE^N6}s@O5Z3$2CSjUk>LwUd~{%6#b zaVKSdgwS0Mh$5CzklOrCe3qm3ogPd*T_*D}VRgE{I^E*ESODCX{tgOzT`W&W*Xk6V zdK-U@ikbe~ZX?OjW$RjvWURo=nLRZ$)kv7zk}N|TnqUSQZg6~tX{|T0E4Q#~Mku~Jx3GK0x~S&_x~K7L zf71xRThr8~|0vk{9Cig-r*rhjZ2e(g5+zQ5Upk8J&Dp6h%gy3-Jx-BW7!1#CmKuN6Gu%Jy z&45lP&fY9)N;3d?`luCmMoA(+YXB8$3!Nk4<>Z^7K5pWCOTfmgB7omk!A;bY1<2At z7pR)5J|$Q_5dS!sNSt>z?soSc(rNKkiMZQ^Ryqa6pemc%cE9ckp~P#Vv`$gL^)8_K zoJWfv24M(Kv9OrvZCa_?eg`e-H)YHU)rEY~(kNmiz44FqY!xhaT3#qs9r#2`Sf-b% zwFpTH*=|{ z=@mN`j#!JS09y=z5v9u?2~jmWn>!$-b;DALTqJ)a#J!KWlbQ0cL_Q>cBvds;ofl2n zE|E{k9|^G(=&CLg#i~$K4bH4TNW%@A`Kl3;$1A*)p!D`1+0WbjALx>u1^9I|6WzX4 z?>S&}<$z&EeV1x_LMl%x{qo^j0|#QAGA`T1DU=YP&n^W&9toE}U_)nGXM=-nK9pKC z(km$Mfvi&xxW}rYviHk^OY3W-WiB>t5|+n>YB{$#R90-vtlwF;-cq{30v3xV4YkRM zM{T|f%;o7HD)S|mmc~+`cMp&%Zi^m(l8hVRwg(bvY$CQowu{yp3Ynr1tRD|!FhuQJ zNO!|IN<`VLVd-w>!8^sqpU zR~!B+)P18+Z~H4y?+~aObjoI+CaB4yP{mu>mz#TV6mVh$u;UEP)%&YKpl1kR++vBM zCl3r6+9{#{8gYvrn^3AV{iD_B>sT{ee(|X}Adt*XpFFil0|eUNwP4cNnk<+hS=8o& zxhzuW85WFslgnH$(#bSddJttjydDylb?T#kV53Li^nPNt{Y;~?R|aN}{E<-A4E3l6 ze8z=0%6j^71mc;N$1wrcDSsqXHB((T2I9ogbsTBjjV7os@52oz1V*3ykxT^V1OQur>kg+0fkdHqf4tjdSk38VQy9Lx2WKV!QkFZ5WHvJ4dp#P_&T2{05H zo`cLlgb*ND27cU~Mxr*o;LVVLkN{@jj6h`z#GSi2^ZI9V%EKcQ9V$nR6z}iL4|;ae z4#l3Y^jE(RQ$wEpIJOl{F=4<#-&h!2Z4cVB!1{Jt(qT*XZ;LbfOI17^S#5r=9M2@g z@HAzwmhx&euzD8u=3x5F>ux+-o-&JgxA>A!Dl%=4d1vF<>wq5>a1{GdKK2aTQnkqh z2!+?CHQE}kolo3KI6BLz)ji_-59lK%*2o2&C4Rx8rTZ7!7U`n?dobtbI6Tb1T4D6RSm4B*SE=;(CPmiIwoAR30#iSJYfYhljmtu z!-2JFVi8Rs=7cU3lV}+P9ij6iqCGE-p$+RPqXf1IcDCoFNYqMy7?0J04byNTO)FVR z@7lp(q3%JmD$hFFQ1NF>vJ|Tq|C3K}2bcCKpr%vk87qm=*%xkdW2*{LxV5q3&j2_m z09e%+2{G;$Eki1wRH&{2kpJK0o0qmMW_es}>ef^-93tF73vL65Hopiu0lo1}sah;B zYO|nA&Sd+~G_i@#naroj%b=ZLh-mG(>Ste-O&ZnlQBU$|D(#%nSm?#n93k2lq=YY1 zQ&B#Ntl_`H8(G0%#9j+AW1-3Fidbc#8~zVQLhAvGk~c% z?)`*l$s=M8$D?8nt-VKy)+(dJ@FOYjzsqjD=MtkeSfHARwL-DaMua zi3Ti}HK9IQ@dahdu|Rk+J;>@XO&nx3HB=1eHh8{(dNUL(8EWvH0xbOAjgBhYs-j@Q zu)LYV+n=IhtvveVdcl4(-yB*n!1_UlQ* zH?kO>3Fhwh4^7`{^Eam(&7<@nc~F)(11V61xMbo2XGKw1sXwKt$k-zTfcIF1%?7E8 z2gTk>38juMvoGcSX)Ny^UbSQM3KfzgSl*#&C~0zvoCOb9J8Wmd;GheF)P ziWJQ1r83ATqH3d4=nZX6z>GyDK2pOgd+YS{oG2uwQ2qL=k=f5Ns!#auWrbYeUT5Dn zFY5Ikc9a7rzNJ+Y!dt;rw8e?)6U=B5**0BLbC1>Hop0Q04_y{5ktG&kAj+IriIbuU ztPQgiMJB1YD(K$<_VGn}$(|;e)4s0vGKNB9YBDD&=3r{4EMPW~vG(@~quwcs)UdTC zYo4nIFN083(pm4JZ*%tOFGskv7I0WLI7_XkV$=3w(_QFxvFp-;1%2vbw~SRk#*p-) z^;KXeE_D~=2ur2AdCL`yw+r}5Wr!#|o2DmJ%@9ZzVRNki=9F|dJe^J+s56F&Et1rsIAUy z8GLib;kgGnsogD`F^m;ldbuI5(TO$LSRTuDAMg!i?svap`ZhO)Z2L1$i51sbnL{t1 zDC@AD47pzZ%xiu5i#NF2e2HuuN_+q`TU#h00%EU#czI}RuN-6S`)$5R16)`q{GT?! zcZ*p$%1Ry509WP^l}~ofM;FVB{A#rR6zYHf4D~}>EOGGQre!S%Kt;PJZF^-MUiqRM z`Ux2)wvHYu*LPo_$wJM&fP%)Mpgk9@*}7^@=&W#M_EoOBO$4zwk2#(G-b%v8$FL1# zT-&tAqJD}U`q16R$o2~?Uxd$RW$u+x4mz)wVfMwvhPfr(eMp8Gny54A%nvyPni#$(`b6fzL#Jf8-!zBY z_1$OA)Cu%`qMi5;$r$Ox6NIG`dT#zNo$yuC0X<8RPPp&@Ob3{%xJs9AbgEiXXe?9p z7y1yIIXdLtNqV@=9v-BJ4A(lNMYGCq@{}(qNcZQwBsBKX`~kPHHsykZOs?IqgcllC zu#%IYE#>7=^aqNDMSV!2m{`RjDF+_BVS~U6#^8M`22Z0i79&5OU7Ni(?g}L@PkDMXI2!1z&FKwPQiei-MXjpx!wZ?fc8p z0^RpWTXXRJHC~kD6q#d9>X!WGL*}obONyf;c8~p)d>j9V`A+^1^Uai_Eo!8eTUHn| zxmECGFjL@YxAY^QN+8f62oZtu_MCi~3WAk^{5$kdgX~a3{>N`5lMwI0{DqwbA*34c zU*a;`)l{N|>JqJ3(`tFQI}|cUnpl+mKBHDXN^SwZfzxYgk9T5`I)`MU%EKF%s!3)z zym6tjMT3jfP_NDr-nc}45Dm^(??!_ct2d&-9JMbRT%npHLG9XJJ;T?y{)k)XF%fp< zCBnaFQLHDLc6`r`+}zziZBb0YzxjSBDj=ZVMgr^Q4;w~qavI^B+D5B-8$3WhV zYq`yc$(9&7C`CR{>}wePPjpg7-k{DxRm+;x?&+`F@D0Wq%IPE0Uemh#ghFNGt30%% zEWB6>si(-!onb2r{r3iGK$)6Cb3vSrDt+T}l{%ps-X-o?Ali4lA7Rgk9Iff z=-3WF#OBc*E{b;eDM~~;T&yPRdNZRPeva(pJDfqi#VYjYNPm43B7F=+1IF7J^k}^m za`i`Fu_!Mj_$MO+?z3Iq)T-98Q~^mJ6Ihz%p^%6>*#GnpG^^qUd!P%`B1*-Y;i1GR9_R$?rlVoToj4d}+o;h}q35 zb#8MR9KPl5!@g^b5u>%1&bll~?LJ#hXd!NvTg2Oxr6#GF`v{guvinWn1ox0H9z#%} zl)3#$uWR9hPpfPpn7KT9Blk3QQ3?FnSb4AY+Qybhs=sd`lV()U6tVTY{`gk8 zkNR!`hs?lfW0ZxAaZE!>p;wy0l1*$lulH+wSFJBq&vTNPFRUdM>4=Pubkw}lQ`5Y$ z!O^hVW_;dz75U8W8?8yrV&-r`9u;RDC41FEym+>IPKf)D8z5@E*CRR6yKTK7sTtc0 zt9`Sul4@LQHzuNj#)$6q#m_D{5lW^E3J#VK&@Rg}_U8o(6zui*HtZ3*FvwukG%((V zrP0!0rL-;!V{YpN|5X;({V$Uyw+9MzE=v`5_mNI3=&ujoQ_PU8vd{Gl&pm{=mZ(X% zEUw)h>X-c^VQlSJ+L~R@HTj3Kx5U|yq{nuXLt5t-Gf)g{2-sRH1yeG8fSu@4v-6R4F2n=@lk5~qe8Y5KG zkWhbg+ci5C1Ang_+htRsDi#;1U06=CV~FrLgMox)5}D4q7jI49*mO2r$ZwG2$A2Nm zM4e+IIecSsP*dFAtZ;)gftUX={SG-8eTQ&Jj=qh#rI99N|IUmo)!;qWLUv6V-dMpe zKDd>M?%;Ar%PvTfot?rOt3I)S0TGHTrcr)IK;#j{LQ+vyhnd(MNwOWVH5aNxgj$61 z%!{-w(Go(eVm>9rV!h_Ul=6}*Q$l1!7JQ6hA|AK0Ia8P;yMd`=YHpfNK70jeHVH#QpgluWLn3VB3iK&~EDov7s*+sa{)Kg2yPCX3> zv^+8xw&cZOMRClh%~ERjSEt4KQfsmo`dn2uarj%Lo=VbdHKM!X>5tHQP|1MojzzLU z`A^NMim{RVoLNm=PrPcYk-bm-&2N6g3~=y`nd-P(#!fXvjr(*ki!94KZgwWOc`$Wj!@S|M?8i! zX1TW)XtO6Rh zON;C}i8pthnfm=<=^49j?1_*+%EFYXDM%@9tZ=$^v_cPeAKW~p%E=|MTC+HARp02; zj2Uqx?P#+u$i1Gloep+FyXRO6KLO7Ra!(=D(X=xyrG)Q2t{=8y!0v{fPCnZ`$7kwX zfAqf>hqXK8Ksfd}e@b6+Y9M{{`4P@D4aJD$zMvh6;e#Rs;_K%MTSThit$!hyheX)U z$RK3;cDg^A(X^6H+8QQtRgo%z2Licm9T=*sE*DVIJu<>>HPy=KD#Byua}>fl9Oq?Q z_FT|D6~jOa^+Etllnel|hI5aLbE=wi1834yA-7Zm6Qvmu8y3@P&}PuDNyUmhJK3^z zsv5dJnzPu<`KesBzM1}!T<_Wb5s!D0e}KtDu?y%sl2+i@NgW6XM+Q?qC14jnk-_t919)R?Btt4H93J| z$SQ{OW-_jYYU$-tmeW_PoQqf`eypsjhc{w*Roty^JZJ9~A>0sq<5h_y<{x&8EN(a+ z30O<;CZ}QjRTDRZZ`IEGI6L|$SPeuIe3=`>4T1XEF(%J~kn|b?Mxw4MC3sURnqh&P z?14#eY(i7ubQy_(1eD06415~-flC;N%*w6N#UmU+@5O>TM>%K{V4O`aRXe3wJMRVQ zkFd?sH0MlK9ju(E>gSc7J|K%wx3hbkJlFC};>e05L2e%)u0#xkFnwHw7C_kwz&_N+3T~|CN_@ARpR` zsPR4Ei0+4C<6PlMvMVs|0;99t>2LiaIP+(4nnJn8mC&h+jXbAmru~vq^=~t%HCXEW zgC(5?VNE~j)qdC06HyAR7$(yI24a0PO4auzo4?(Tw#^@;#&kJ`_0pjc3qzk&En$Xl zJ{p;r);DEh*zF9!A>Hi6h-{HCJ=N21lYFH%Q5DQ{_D^8p%o6ya-|2S`$9Ptg7VRzL z82?Ss*IyM^UX}iv-x!}`zUv859%04;%kAs9Xg;pYzS?`z^;`mq2SZ==&h`&&@}A`% z+Ulx5%I0skSp~yBD{yxEa?zSY(yrY$fk5B}yY1tKk}od*prK^Ap=9J~Yr~ykpn&PR z>blA3A1c0gqjybayQ>bg&f-@|-fM-2xX7>4ychV@MDG-kWLLcpV2yW%>kj*7`IAyY zi)xc<$o{mox0at`B`$SCo1Ycvmv@9V3pt}$RkNncLltH*HNpKmD=lbzC3Lf2-3-%I zP4Z?*RR|j<(HE6~r*Oa&t8Y^-bbiqD1u&*b_<1wjE0z3bv1*pzgktqC{5F=1lsE3B z3ecqv%uNOtMc+=1bJYFBSODftlO?wRXV_Ij32^tLB`D96 zi_I@zQknW@CYzR3fe?^WeR?M!YYFkfDb~V;!Uq;p@#A_FvVpV3r0Dd5R41>EjL1Pf zA{;mWPr8jxWmrhymu2?nhzzyU$WObDl~zA+&-r}8h_bIzd;eYIPzNtt|heKLGhAg z>>vN5TooBIUqUo2Qzbeg1yS2A^VE41jfu`8zo>3$7s8wOPsm*ErXaziI3kJ3@}4lI zZaZ0DTKr7yeV>Nr--xqE;g+M_(#N-F7(J9xt=OU>xR8+0U_-)%)JMs+7$4AIngH1`TH_P@qZCNV3h?6 zdQ|#((8HEnmq|@qQENDEhz*3*@Kcc(IIblIj+qhzTb8pvrLRZ~9BY7mswDP>W17_4a8ayB8B4Qxz0~Af#=#U2{+FbqU^$=00p2Z*r7$mFy>?NK)d3E)~-npS^ zwEV!4w+8e^Wg9maQhg?@*cgr-QO$UJZxlsjC1+v$>LKc>qEg z@0AOqZ7)+E$yutd=ErCi2eq;qvM`3sf9fGbTFlp`zi*p3Nx-geji}a&(%hM_~P(k-o)OmMMNTUb<5ksHlUmM306_+5G&15IMtB`b0*qVz1%b$0W@&*-3?}2FT?|ABed4 z8W=zBx4m~DJ|{us;&~xp6147jObUgrz{%5;A0Ra*B1hU7{mpzpp^WxAe^ES&ZumwMGPjd_(^ACoHN^hxzGO3MNjedq&NSOUg!7}fH-SbTc$p2`T`Bl3uEh&1E-V|-KBY;(+q z3U(E0TlGFjb3_REi& zH(Ku_WJlC7urTPn9Qg!<6tqG%ZMc>@zY7~1Z}{;dOCvfK+Dx1KjYad(67x-LNKG`Z zOA92065H&F7Jm`~imi6!Dqn??X3#gJ9d2+S2I89s1$o4V_ch#sR@v6M4{(Q654FWv z{H}2BwLAeixI*2gVzO}qED+{#xo9afY_INPQ8czjpN4XwR`hyLF}xD=_gy^ZS`+7A z;0giXAEDo*;`$j;p)|EFJGK>f-E3~f+&Io?H)k~6eA|#Wb(b8_e^goIMefINu>YA4 zp!j5R^N+$CDeS!dKHd` zMtWbM2oiN%hPgNAvriiehU8kr$aG(!`m`MQh!p9^?L`03RNsW&-%>y%IEV|T*&0`B$T_14C?YxT)}$apn)ckB{65VW7QOA6r@(l2LxaZ#zN z8!i54qSUb~WmolteSc(7X{|$L391LzEX5BqsXic?o+A?j>b*_p(Tr&K@zM|yO-=QuI8Z=+c;<%4 zm>pL=-_+g21BF~&FVQAW+fr5b3TuuDDN+T5{OkLK72fHGeKY|-9f*I#@hE7AR%-f| zxT4iWOQO`rnpM%AUeQ}B??jCSiXedxV?H7sxaR>mf=424yn3ULf%QS$5ZbV5~I(Ym_tE%syI~sS81sf)UP8%1-GOj7+$Kr zMJvh+)ww_7w84H8_Xl|j9rcG@b^p!`^O|tgJxPET;E}LGKwT|Ggp5! zfnKW8`8I}1ag?E^5acwxy=h^2xy|&6u`coeY0R0Qao^JWcsY3-n29hSe}rrA(oXq& z8M?;_b*-?vBHee?wZ{DRLBu0E%nRJncvfz};o8v>Ixnk(R{yXWSV8A&Jb@t?@*sEk zzv>V>>@jK|M-ht#5`^PU@X@k2SO|bxsN6DBQCu{i;^X9keB=WOH8IfDlJ#$5ppVEA zq-9bt4Y13~+!Uea%Sh(?o6>MKv3LU)hx!6!M|5m;vLwb&Cn(8xNb*~fj7h6K>2Uuj zY|%yprigb&OYIUZ$0Utk&GV)l=qZxmFs{w#@o3hCG*LvUj&3gaxeZ#vd`MQ9m{Q56 zJUr%lu;B6y5G;OfGk?~YKZ12d=me1C;DoRdo;ZtHo#&--G6(*l5#QwYc=@E+Xhj|e zPY7M?ANpc^v|TWQDR4@7#&}MQ7BF%gf6?%pN&MR&BZpyy&DbMQow$<;e1{eXz9Wk@ z@Q0aP3wmsW-*LiB+btuK`FW%LN;rn{p8PCm$ap?4t!uPrH&}Dw`1wBLZi@7)wl5t- zc+8E&b>s-vt08WcLbgbFN)J8CI=WjRaOBkW%Wi0GsEg+)4(H$t$$oDsRpXaq?#KiO;2g8 zOCAPxCSw_pNxbnY@}GhF9$?uH*$5pc z1Tj}cuqSHB!QAxF+5Q(Le)`r)LHned{ORez+@6NGP+S9EW2C4FOF%y#JCJ|zqIn=k zPz26})bK*Vr-x)!an5X&Q@H@!GWDXxJOPN-Uhs}rsy+LHh2FN`5x2Sfe~Eb1}o1z45)Q#2Qb7DkU?xc1b*XQA|RD>huy6?zw0ol;<=lgO?UlJLk4O)C} zze>A~k&KrUYx^I*X=#s_qwOiWq3myBmxX0r^@WU7@xV)l`2-$q&7=8}qI3fzNU6ION*lK&G1A zg%t8DTLy5*BjPM?2lLL^H3HBY2Wt2nQG@JYbqnY*HdzAq3q&z)Xbaqf#sC^!oND?Z zp1n*CS#MIQdYinxPXj@42DzojH1E0I5qSmP?m50to{u$q84hqIDmM0d7dPf|@OU#_ zJI<1$X`1Qmdh^+h4{Rr!W5v|zIMK|tx({yoZw@JW2JGjNi29WS5dN@z)6QbL4l_+w zyZYtHF-?Xh1jDW>A^6Y>fLd2+#06L3g~%GbF3$gv)%Q`UdXQE#Ve8oP+P&8^yTkWM;w~COO)GbJlm{h}O^O^Xz5Qa@f2*sOpxivi}G)?6ucdPgMn!Bt#Tr*${LNmrG zqAf`j-1%hmUZ66s*Mf}ysD7UrtMb)w znL6+i?ZslF$rfa>@iYvnDmygwrF5nENvTx*id<&>GFJoMJtkb=Je~1uolz=MHDn}9 zq}s>KG8FheNQ7}9vl$Vb_h>OEs&wwId<^BS2rs%{I++D!d>*hr7`oS3 z@t~bRZuZOveVoU8tlF!m^rgcu6u$Du}W-weLB z3(jj?ynBeZ)p;pXQHG~u+Tv7Xjfi+aB2a_Rm)gh+=0r7O2U>uMB zAvK*=m`_FTN)A1t!Kk@#3S^X;d^zI!vMtl&$hGZ7--@=)z|c%XIVLj-p}!o{2NudZ zvoE5=t6@`lr&KMaW#zqJrCO8rg*C|t?W>3l6*VC%96h9A+Ou8W31Xd7o=$_MNL*B5 zb*vT;k#?>3Ut{qW78`G6zHPWp?}e3K469;t!vnJg{umSHduKQfmGndJb#TOrqhOGH7y1%WD9N_IUUoEAv;m5OK@L~;i>Aa3!-Ol zHqAhWW{zC5RbnQ>7(uDql(jia?TF<&OPZTyd`09fASV_Kq56C8gl*H7<&=fPn^LM0 zZ*jkZFlFMh1Lx;{A4RWi(UJh)L;s2~&?W{|AwgnOQIuVb3QjE6QC{lK8oZNnOyWVb z3?=43-ppMRGuXRp9}kqwPRPVFTEq}4d&n2R>tP~|QjXS~>>_)0LQZyS?Y2|-fjsmF zGgE6#V1ZI6+H&D5RRRF35+S@n-YS1&@MM)`X9{Wqfzq@>OaLkf47>Dqo@20=@|{&n zXPhG8015s|$W3|n+nbhVcJd-QZ>$(ik(|jpYqH+43Y*D*kmfEdEmIFu?0Ja|=H~@- zpNG9P_6D9bC=|c@-uAEXI!yHso#Xo6 zY?h9zPGlGSLz7(J`z2HBs*@W9d5+9x?_DC~P~}(g-cmxY`bWvw?&%rEERh`C2SDTz zVI$HaR-c^R700_->BqV&`nnSeyDM-N8!-tj^q_L`so4lgw_9dYqW3z!AqPg_^$O98 zFtlPz=wHov3HSDqmrB5?B^mOurMHW)U%9+Rel@|nT(?Xfq9mUf-!iyXf2(D^Eu-*5 z+afiD{?Mg3E4tHqf2FIM;k{Kx;(EWD;?0&yd8XUE(-!%vl*7Q_CBk_$3QGkZ~osLQD2feGFL`(4u!itC%Um&XL_57 ziVUX`)*<2>t-+i5$p0q8wzu$6aT-#)G~-@;A}Tv^weN_4K3Px&l8~$JClpiDNizMB zGcgkT8L^EwX1HqJsd3e>Vi9zGtbSVw0)Nu#!^WL|*-vC2xazYh7)-W2yx#KsxfJR3 z@*PW@IX+QM0>CZOK8JdWV3&Hk_uKK_Nx7lRx;nc4`_Z?19{s7$(cRhI*`;o2eXIGF z)~t@u)T|DcHo5~VGE#hdblE#7D?K)Fr$A#(LH}hE^d%$#-1jsT=_Y@l*VtDC2}i~V z!;6o0f6JlXmFDe9DewNOquc7=%tXQgXvJ)0pJD*tXpqFP%KSpDUQOQ@jq% z-K$L|R$^iQN_B!2pI;80Gj8i7w2Jf1{7`_uPOToGovc0$`QIo z?PO59ONPjUkB9Dev{A-yPcH55D(>!7HVp(+HFVxUYr3yj0I+Vw5~c=_qHg8!0IS`^ zo_YS~3yt!b7Vet$$7Sn7>ihohIqo%`QX4}x_KQWT#SQdzobLhI0X*7Yq^!^_#X7c_ zTX;-L|4q{6eKPr)bZOcc&6ksDfshT)mXitEVZs>N;ZCU>d(L&{&v(tA8vUbhm)nzT zFl7o&$7$Q^ZuYu(Y-JbPIn;1G(CotoZiE&GcLfrdO;u3+7`wFKce@0d`rQ%|_>hX! zFCrgOxq3MAA$2Q*4^YT>sI)v?TdOYKFkgmo8*73$d&M7TSL{R3ui!n9ohrvV_u##0 z-o@ywNFV3uo?ak-eK&?u{Ub@3vL10EpgWR!kJ~>o_1-H=)t^|4ywyV<^$=AUoqz;8 zbI5D_|FL(%S=dC;J%A$J1Vx%1I9Yx7ycp*9r)*HALo`in)V~MA%D?`g1)4z;U4Qm> zbiJ|QJ^%V+mNw73TDb>C2C1orX&dYnneUV%uaJp%VT#cLvsk1aF{0BFDB0Uk@-B)I z^^HuwyrLhq`#Afuo&V2#q1E(2Ok zHL}yU1M>>?b*R?Jo0P$!iQM8P$I3&QObSzDRQ$2g^DYAFHP!E7v5>~U^R%qp(s8-R zbq3{M2hdc|+S(m0C3vJSoh#^+xqYU9>zx3Z@Y&AZ;e?BH&8 zt~XaUmg_%D9HC3FeIq3Hcngjyl4_T5qGP#$;{>#_)mX3m^K=RSddF_bAL(IeqQ7T% zz~hi8l}knDRx9eR9zOc6Yd0bz(Op$k^k`T0u*k%D9D|1{=N1ejL{pixw-VI3>&~HZ zd4-G7huoaiJCQRH@2f{Eh94bhc6d`b_RJU%p-1@;OQ+=d33((&%$QE-`mjsA^>KG6 zU)Toi3Q59fGajXB<0~sc>UglF<{pOQn{|ipw!vR2+bwkE`Zo|3?QjgXSUATdXea0} zgK-3Tf=H~j^d-w}96l{`+uUtyaU9TL0fh;jLyjDB$TzzrG?DLgzT=V(pwAzbMl>s5 z<|Ls)3pL&fxM+Qo_?C7jP(PhHy~2#3XV=JWokW>g@-9ah}NriM&SI8)xvBD~;Fn(8!h1ZoH zW2u@EkuFO^fiut&7X=~pODqHZg`46KwTC}S#x3Cd_DHP4%6nKdi6KcR#} zTY#xh-4m!j9;jA<>b^jAzu5Y(9_sS-{6V@^tS;C6#ka%Y>vMfQYOd~dKWu=WuJs_O z=3#dMnhA^%rl!1Ovk$BFvFxOmz#<LM<$#pb=jS^Z?-*H!lJ6YszHqXTD2C^&57mYsU)5e1A_4D8RH>A@!}x zg`gBgG@i(TCnLPeiE8Fr*nj3H&Xjfvju@IzWf8GYvHs#Hf-d_Qp3n>GaJh`vujEyIMh8>%Q@p~QFAGIi#e2k?|5GLwg3Bg{?}Jy zzl_g!ImaeVvSSnrmS^ZCho44eMU7-sW*bitdFwWI4Z zoq4Fct1BFO%^a)C%(1%Y%wzQ->WO2ZsX-pOW5-Gc?C)5Azxq4ItAw(V^>;a~96w&& zwDZj4HFDZ`Ii-i^>G3-F5#u$1?=y_o$p37-UZUPH&{R8`&R-fYbJJ9lb$p}eM;k3G z-dhygI6VLn+DwgaR@bT6L>Eg{V1;a!9%*s1v`T-?D$N~X#bTL?B%KBUaAa1vg)FKAAieAPj<%PlZ|$Ci++@X% zcD=YpYAP&3`Qo3$;iZ;a%2z|~e|i;D8C*gZn|h2s-P+O0bN+|lCNIAw_l3H@1Vcd7 z$3VnXdqDB@Ub`lbXCUDskfMT^{1L@r&+?#-Q#{@GAUIsuVMytI%BxDTv|38097&xvA?he?%2ryd{%!gpR} z?W_2n4^&|DQ8b8LKkrNmcuoZ>29Dl25VEniDH~mk{Qe#1{Uh|^|4Lu=$OxE6=e4q` zOwwuu-}s;?dft!X8^0pX#5WduWx^t?a{CU0cgdXxCxy5w|>Cz!_zST?9uBj@4>*9W)Buj+7x+dJ;EK;O7;`0|hF3k{4e?!^q|iUvy1j z_=<*t5lv||MUBN%g7`BCU!lZw9OT!K3!NTt%q!Ht>j-q@u#r(8l2z4a&+5pY0K~uFyU=(8`R|EvZF$&4bxsO~my5ZG zE`N(X2L>5Wy>1*&p$H6EF>yJ(N=Trwx4*{yHun#RCMcs!q5+_ueEv zti&&bOG6)uK_3#W{P2}PMut4I#fEO{Ds^{;+ycS~y+Y_HRF}F0UazfWNJI1OV$^xm zEQIg-*iU(&iC)vfIL5R+s;Ch$o$=@MqrBfDo&sa}&CHj`gXHP~LDwa|%DFmJUR)Yn zXSH>S9Nj(uYo>MBI~ndQUIo>=@G{J1A-g)9`F7BLHLn(!rX8__ndoqqDtU{+w(D2n z$7r3%glV>Plp|dfYgKKZh;)w%D?!lFVvBIC$^y^sUlukyNz zurme48~Wy6_p8458qcaZb(L=#3SI8K-jvd;u(;<;;-HbW@$IZ|&8bTf+B>zzJAr)o z8)(-?_7UI7d^LBlb3+cbi}C+Jy->)5^+L5nFlPJ9S_~%gU50=l5={q%JJ)a2ORM~t zr&yp}f&NUsU?vX{rA18UOSVx_>7*Y;q29m+)f_{SVDniO9k}{jM@w*AAQJ%5OnSg+8-991$ho}zo8ld%c6syY#vb+y;Yw}U*#gf77uMl zW&|d z#59{RY3_In?`+JKi3NdCZJScgH&-F@_nF;f{AkV(vC$mbl~7BQf7JW0tz( zGa@l1W=xJdetsloxf!#<9e;5o<}x!T-yOd&5;Mz;xzQcJC=!z_F;UYHX79a-R=eX> zq*HwecGGdYJH9Ux^QIZ&aL4yYV)mLb3*GT)5wJVVm__dRnUR>EOH8yP&O@W0>iZDl~=pd`R3gSGxYXQNE~YGGE~xH}j=_3C!>gxklAbba0IX|5*ob zli>XX{d?w*j*na>aV$zG=BOGAvu29xxyvh&*GjH*Uk3Z7B@ThT(4Sn-#kroFkQuWO z>+c)mX;aJTuzQqx^IeX$f|>AUP@(NZ4BddEfy_u2wxrUL*z=`gE&-vRp#5c;yusn_n$c9>?7cn`oZC!5yW842U6STDtDB#srW3UDw)TX5`@miz z3Ajx9vA&^5^0X&(cgv0MV7m?yv8Whn_xFWUu?L-!A@;oJXUcUwGis)pCE-is6cz0} zQ6om{LLYGDHPt6X6&FL|5zFK4!S%<4s3$79%KcE}JeT8yV~?|8vR^rBmq-J|j--=T zX{(WDdVe?vE%R-t(AfIJR->VguE#!V#(sQv^rI9>(ERypYwsR<{CPJ11mi4p!zmx< zzgxGhXgK=aoFa;GuZOp5-uq3Ab!<=Y;FTR=+}|L8o4j`{(_3)8k++SnwIZQbZrrci zgO?)tJiAcc^dnhVQbH}|(BzuEzs4*c&2jN)j6pj>O-!F^4Jue1{j#Wc}Belgub$E2n3(Hn&EcRL$V_~;;I7t*0 zpjy*Mj(`U8jF>C1l+7+R&mv@UX&WfZwStP4VfHGiSY3-)APzZ^Dh|7Ti#@nvQwSIN z2hyjwM>e08IT*CN@kCarHvK`LJKFJjMJw)*G@AD0!;A)pVyl0igfOFIHffAo7m+7* zS39--URkLzh?icVPcmMOuy>Cjrsm*~)2_DVk0|s ze3N8<@3hqLozySiG^fg9`trPtR&XDL<`U7}soi@D^}+Sr2(ir{*|F7{h*;A{Vo!7} zvSooKF*$W!Pbu)m1ll|oz`HAkf&t0b{El5Sok#H27efYX(Mdssh&AgIi(6ATCCn(q z>NTnxhg;c7qhQkWLySe`+*c~yulU5InR;FZN50M)^zdj-M1PYGfi#C+i*aATVKq##g(EP8EWe5IIouev33|E*xOmm!hAi3`7V zs{_3w*K-HCFAs{vCZdxhIzdM_VTs6p=P(TON@ga$5)1MzV&)WSTHz5kxt=?mdC)tH z8F2*5!>Hzm5>Sw(E$+`<5B?M91}7Qb5$&%nqWZBXsi=f{&z0B1WpcV8bDpy7IL+QX z!LYxaf*V+D3`Dt1^pne3Q1v_CWU+cqxOQL)NbvIfc{0JLi{r+Izi7;QmOC(w6Xc#$ z!2#5NLY+mkwmi7eD&BXDYHZjF1_N9J6JymG;@x4skQgMpSbU1$FX$kMPlyQq66Br@ zrdop6JKTpf{<10(1b?|cg1?+AN#HL(_!k;~tp2F0PVl&Po5o=xiG?cddz^lvl;f&f zpp!Ko(+VDg>Hv{xM2h6DG^ffMX@#IrtauADw~;3`?^7*ct-g@c6x-0Qy0^$M=t;5I z;h`_V{iGDyN1VIg^}QB;vpR~3Ae>+@HCnbgTDJb@r1uI*Hkf+FXeY1#awn%pI{Dj2 z=;Sa*@i*ENBS@O=eWAMYLAfmCl)kP#QFpFgI)}wt?-ChjMjC8!DB6Z)w1E|WuJj8` z(sxxMa=)}P!_@B3X0IE;G7M{rk$GqQPTxWtvBbGi@eT0E`Q`P4BDfG6j_eTt! zn8ny4Vq<9i*LPt0wOP)y95MVlLA@v?=7jcXy&dmM#lc&w21b4EakRxPB=gk9Ss0?U ztqjFIv#=p8=Q>1~KOjq+T<~{IuDNFMw&akl&9X4RW=XbpaKut`)n&f;aGo6}0GnWD zC;rNOmm<*}yun_G1|$ULfDMIFehWA3BUh2S@KufT8EsjIqpn7yaL*H*k~K{b%Hi#b+}&%OqjFu-u~|s`4oPN?O!+|` zzz^+a1t&}%6u#rZMb8Akk-@@5#vv&IYS5hTA~avp6x=eLbr@?U#!1^j^ivQZ50nh~ z?>x?pgdkEU%3c**HD((}TUQv|Y&YAc+gYk^poL<16`B#oCpz4F16K!@V`Xb-M#o^+ zTFz~=mF~8!D=|WlZ_PXyDAZZzj*wn+1qJ^(e)NOULolCSfBWXJNQ`<3dC z@IDDSqnR6E#r<~o3d6qHdM)cSY3=Bw7}a})TE1wfv0|qfNO8T`hA~p_gk7^3h|ImA z_+9A)cFG^*yEB`SQUj&L-Eogmu;++EcI?Rdo+E!s0+ZY4565kBNsR@2j1?~p9Z?fJ zJy`?oo}CoNzXn5g+|_U~R7qw!==^8yqoDn&;0;te6m-@G3V!eQoY)#~OUC9RN!k5j)ZMPXMcib5XuTZq!x#De$206K6-26rg(oiy!E=m zVzht;lL~ZYJ**7%0}8rd-*n;Dc(-SG3$CA)zm@7=0IaQg9~JvcI_YbZZz2G;><-z; z0dSguQktty=mtgsR*z<{0$OqaeI`nxztJ?fzSCf4U*H$b;vtNz960+E z>?;kpn>WY%+pT90FqbwSIy}}X?7veykN5eSuumz#n`E_ZiqEb-xH*Sf7R#)jG)nrR z1{$5gpJ&K)Ko{QvAuqVfZo6st>?Yf*f$N9;2gUIl3X1Onh;I2y6l;4Z9~BnEw==8B zC^;_n(SI+t)`tAATl{zS+plMv_>D1ySk718>hJ75 z5%@H)-Ov~^+gI2$6FXiav&*pOlY+t7%@~M5V0G{cfVW-TDXe1!cKJK#yWLUr4>~)S!%oK~-n#@QQ&Mu435hJMjn1^J}fpLp2h=A(84cZCN1)8 z4E;8O*xD;EivRCrW#AtsZ+h_EYK%@}!~XT_0HwX22{kPC@%(%+pRI*4>ESPa32`IH zkEa6`sIab&y`lP7|0@I0m-6-j|K`DXf@@?fA@;`;ERmAqP|d#8OCexPW6juJ{1TtQ zm4E#bJf$6W6=Me&PtO%~Ay8UT7gBQ-e+5DL%Hw?JoY;O{OwO=Tw+v>RxlPtzyow*o z%D;|J_pe`zXMb=hezlb^qQhHF={Ux?HbX#b@OZYyU%UjNCw3(2*^YeNT2vmK(r%~_ z@h^J|QLf*V`OeQPDSls`%kk`W@(`x(PlcQ7zd^=}(4T#YFn?}#+U~i|z;1t#$bp^y z;7Wwz^n(^a;AF6vISDKyYyD0JiNU+ z#FG`$W&2i3*+RH+StI=d;|~f}a2keofH%-`@CLNobu={%MygrD=~zlJwn6)gDL9nx zHz?oDl$=q%WkGZROC)n+jB<8u-tjMrIWcXh(DE;13H|$GZZe9wA-b4}jQ*mS#Vy7B zE4`SdAOg$CA&NQSUB47n+LpPGNHGtM6f^oey?~`?^wdth{DHqi@sGQ7BiI zynmC_rZM*z>BEJLS-{HzlCOZs2yG0;bwc1{C~GO@|D!VgCC2KoTFf#oLz81^n$>~@ zoFAuppzai2Y=;+D5q(}*4L{q~@TE?q)wzn#LVhsUin{9!zq{V>kK!wqTYcxz@U7zA z?uid(!mrVwJ#4vK0w>bSgT-7H)5Q^JcKuS?EhOG4aJ66BTw@2{YRcB3x3T!ZR0@Aj zKaUf*GURUz^QUVjo=Es* zneRKBHu~-oZN!d|+KAPV+Ncf}uYJgt|EON_ffK>uFZwsLy8b6(i7hMts`tN>%3lJ~ zSs3a=E>gENM^M)szSV5|Fo~IO-)eq@S#4+yF^A#i`~#^~P=f+By5GgXk@Cj)z$sIZ zDQn=pqs;eZ@ASaO5h30QHAUj0n*7DAd??II6wKj&kb2L6^j)YqowA{iAPo#jN^oYw zarOkX6pItOo81Km$xpDmYQEvg*!&x^a0_Yi&wJ%!Q|#d4=Ml2l*%r&cY&SI+ceBoe z&N*lP7W@H)zKx6o1PpT(#YI31#uXPN<}&A$1g@UYcD>H(!5sK1lZ<}jT+IBZ1Dgqf zNr@}jw{AjGdgjz?=pucsFdF{Cht15e!&US;Ua-puFYu@=y&SCC?Ppi5r-F?w_ZP{7 zZ;#`yz|OSwte@VH_`L8hDJDp(;HvvAnlY~DVKF!Yn;DDyfGnB%O$~0S?xM|7Zs7EL ziR)@;5TL&OMyIG0n)+ZGQ8o)@#cjH zgK_T#isJc27e0*kzG)|2#hiP&u4p|Yf>UC23Tg*gSVr+R7IL8sR;5@2LnSF!5f?;! z=jM5)V*2lD->M+79qF;#^lD(32cp&janGGy&BBb`j-rhz5>Oog@9F4yMMa$t2&V6`!6^W90m*YfjGepEPPmFMph2TM zTo!4432*0>Z(6;bGWq?vF~ZUa@Xqv1=NK#@E^v?Bv2(}Z1bh*NA2TllP$z8|Af`q$ap)kpxGt)-GN z4Mdh2li}@r|4PZQ0RM@SxsnT_hLR!JKUXr3;wb2)O2+lPSS_Zak>;z*nF<>6q^#6j zQ{T{EzHhVWZdcJ`qHp*@eM6ZU`i331=o>zm`iAk46pHp%3r{3fiC1VK!nR5`suHbK zV&*Rlh}jaYeGJ}+0>iQW21EO}il_>tGj~gDgaJ2m7J_sqP?bV43uE)E!JOT6Yk@&>aH%&vZv8 zs@MNecYJEo9h6j*?x4W*UdGTJMhU09CnZeX;VLR81!+V5M78Pd$yK~j^oO)5RI;4O@(_?pEfx5D+6h$NR?i~6R8eu~ z-DB9`dZlfgg;{D-M=>9knlbW_^LNPuT-5%EmDE&91ce>c=n{0j#;^glMZZo*4{R=C z>7CV?*N5nsq?r#b)fy<0rjp<3{hmHeclz& z+xqy?$jc4?CND3om%Icn2F+fcjAI{@;tT;8NZaBn{spAkDz;W|evICcZtHNf!7|E` zZoa`Z{H6zVoqG0IekaO4qF~S8pSH_;RA(5%pJsLX^IQ-<6|!!#G~Qujm@3?op3(Vy zhNIdTuHaA~t{cz|z%h+i#tj5#B^`8@^soB7j33tq1WO=jtVwkeH${u)w~NJ`TF)_Q z<#XW)Jhqs{pwG2n4MneQ(%z}hx7u^Y;@{}l`P(!UiaAV2p^OZiN8XNDc}tH}Ear_^ z|HH!Qpy#bkQQWVwDD+(55OBX;gZ7+VPiwbe%RqPwj4et0(Y=^s^lH9y9bw&e%#J;w z%OPz&Gmc4mFtDw?qwxoM)6j+*ugsgoAR%uYgZR8r2(U;3?=8);o&dpqzhJWms9fXo zbO{#E#&f3j9A<~$J&L8#*a<6` zT;1GetZs&}x*2x87sJm9xtM;nmN(1kR*kEhXSli<_I!Zr2Cz0gqhI+0jkv2&UrggN zr4z}c7RmNiV+Ua(F8n+*b*R_vDmq5a#d+BGw6Bg>?2a~BVc_2hAkZ5n=xHoeH#X@HgUJt z#cgg|!(tu%$GeJN!*|_D6xV~NW1B9fV1+tF+ZBGSuuq}`WSO=LUZ8R!No~YBTjM=g z+3}UG0SRmkngHMZuZtiO-~eh+zwcaskLw*Ae;Sumta}z(1asT8g7=kt$?FetUbd{T*ftpE43Ym%vHh^ za0LN8;_C_+NKqg>hkeiVgi}iR{pq{tB3-9lgNq_#JlkRRW`wXVh1CsNqU26C?ppIY zu~R;jsr@(1W{z=j8A5|`j$Z4Iyh1XuNFlIYI}3WaA1f*FOoQ*4ki*j#Q9S}(VPG}4 z$MMg|+0TNR&eV(8DOvUdXcA+43Kz#GJK>0!{sU9tTlqY_vzPP^#4Y1-(K9$LT7ZSX zGW8MC#A$=Y+UF|7yQ#(GPRj#$8u4^*R;tpTKY=#orSv`>3H8JuOs;E$w0Zp zz||Sv5cI`cJBOzq-VmhVEe?BN@fPRs_S)7VrZK5=xbcGxyqhYptxq{zVRYEmfqqhZ zg9AqghiCYijD&PAcF?;wg0-?fTLK>jPJxUg-P4&tf#>10E#9jjaI84H;Hu=w(eRf4 zWLIBvyl2FqGSiWLyNOtwc53V3lmgYE^A=aphd_oiIDUNAVELXj;#r(`& zG%`3ngR3reIS|?jV-<%Fu;F>nvmJx?w4SZIW=EeBm`TLZ1MEXP-wrobosacS81c>f zA2__YWi+Poew-l1fsl*%L1QaEXf?K{@fdKZDQIFNS}!8@nu)llhpBY3^R%Bb>27cv zjr_w99YJ#}3N=yg{Zpa3Jt8T4Nv1c47y{ z{n*Pd0`MP;+Uc>87kEjs`%<$-!m=W!=<9wBYYO8D)q|i=`QR| z(LRicG!pM$wQe9Ca5Vne=>11YH`Ftju}R-70-vcDL@@-P*%t`sx6eMc8qVy8dPCkG zS|z-m`;wva60liuCtamG)P7W6ct1fNrYHDgahm9A?G+u&KS=vMp0+!Zkc~z-L&hPy zeZE;?tc;D^p3#IYWjIKdg!57viRD@clvg=Y<4S7_ZdE{wa-UkQ{h9+JTr!Xh_XeW$ zXzxKS)dtG@Y=N@7^-M-$jOQlM0S*^0TNfb_?8*SCK#M_Sf{h6A`{AC7OWXwLT}AgS zI3|a`L2SRwRy{xtJCvGnEeXv7{gRVFc#8HiqoasSHJl9?RCwVDv`aCvkJU#&Z+Gx? zo7#?d=w)w*#Tok&(%~JZITlaeb_uwyW)K{&YQ8?aBAHfi=YpLvf%1~ct?1Bne+DI! z_Zg{_Ome11B@ZdIGvc<5a^8qNz1S=K6O?SE1;aB;@PKmzU=$#ay9y5dGAZ}hgi z2L=+v(}EPF`<78x3`mI?h~G0Atz*2s!J8Ak^W{W7&Y7AV@YZfXQe}FVr(Y!~g}Mm4 zsPwC2jM9~*W9(Ew4(z2n53`@_gObth;1X7&1kdb4?Yvx?Vi63|K7*jM_3O$aIk9|3 z_$N7&xXU);_<~#QamJQcuDjo7K<*=z4goL0yArqGm4uc=2a@#fpXT_x)F!X7`F!-6dLmb{?aIwGN`NeTpm+l@3lvc6T+!33Ve+ao8|*v?N)4Ri*6GWJ56=led!7K)Lvy8~T8Lc?t{zVk8jam(f% zc+8KvPkRJe)jh*vd!JLAvlk6TTZ!NN1l+*eILepi2we31uyqiR5Atl_RPDY-bMW<} zK?11zU43OZ!W#;F3T6L* zf4T-)UK1tDEs!M+Xo@VSYg*}QYCFsoJ5i+SEp%H2w~q+y_dl}_4QOXD+bV?*?}*)9 zFl>bPEC1wu2m=SaH{qTd2M*o+tlcngpMsyoj_~&4HYJ|?Y%t4ie1oqdKDMqPZ3N8z z1GugkN7w?N;+(2yAVwik`|L8p*h+becJL(YICDNKFu4Xxn11{Yb9ig8rzf^zTgEqz z*o+W*Bi>LndzMx7*XMWDyt`TStMMyEuVm6JLjz7sYy~dx!+xg2pxX;NY2Os>#pfYS zxqvD#Uh7wdgR{Y&xK0!=fyuRv!&`5`G07WsU*;TP%O;}9wZ_p_TLzI~ArM&`szcvxa8Wd#-Ht)(h}c*7x+- z>7lg4xcE8Nfitw#2#oru{Wt34RP88(2Z5*U=M(mF8P3f=ordg1rVSe7bwjd8lUZRW zOyDWuL1(}ow#2k(k0VX-&yACbEt((Hc%#f{Tr%eOHUlU@ON4e8i0;sn+9QA<{(A5ABNty$w8wKBo;_Vl-036Jwt24Q zC+~4Mj`!R!ve9XL#T701y1nsA(AJ72(d(i3a6X}%5XWci`P(k`W;s-_pdzTzDGSje}3@ z4zK04GfqEV&tM|pAY5!hFt`H42~%9f3U~~!8%S4Ypo4rDW1i(^{)XUq4O+pt3Bj`( zT-*eNp&8oTqjKHB_^&;+izmdO8th)&dsvUT&S3{!KVJt5u~oc0prLUic)Zm>dEG== z9`M%dST8KT*2H=?f~7ntcNP`4jEC}Zdl9xy>m^moiOOpb8?|*k`_f(A$;Phkx}TsK zRzf2ZksgS*!@CD;(`)tkOzr+0%!p<*aCBe9ol)Bzvcp?0Jir?McFagHY9FFny|p}S z7s3QVehkholO@J+2!%7-Py+cKjnC);81pJ(qB#8*`_FG8r_qN5js55EJ!sa#OAiTx zohgzsj1@ylRIxbNkNXE038oS6hRW6Eu{JkD#ZGUSqP4<1VzxX_)K2j^fHQ(sw0~sQ z^Xe>JeHlXr;LC>d-(yP%5`u?reQUbiJj&F*FT;rBwzErAgW|F5d~1q2)i$pa8mP0mphc}npe|5*R{0_F;mXtp*prNZBkHs^>r#vKk@gXM+BbmQ;jbRwYY={p@7wUa8!%@whEKhi zJU)KPkNW`s1z@-188oMz%ylKU!jlUoZusN!U5$x=!ee|M5WXD^e9Oj_>5y#AfH}h* zj?Oi>NknA(S4=kp9i*o1LmGYcG$z%7Wq#X|>zcY}V-7HLU6p%~u)EP<`ZQvhfdlya z8pYRrPL*W+=tmou_{A@IfIcJ$1NX%*E!zuiIMl8%KBS86PRpJkTSEBtK!XG9S z*qWrYyY*Tr%sg9#e1pqLAA*(L$+@m)cNp%jeFsozoy&dA4p-4>R5^++7>_!5_CVnl zHXIF zw3iXBNC?X$Xm}QP5YGlCs#BfRMQ3*2Zlp)*-Fi9TI?Ya9C~b&ojYY|FFLNCDb@5YpX#1 zh3;B(8@6Fj!@lM~4gGp!8})gI_w~S}6nEhNz z-MUcsAcR-Ildc&%H(mn_^$7AM2rTpBRrpl*H7krEys10Ddp(L11+aeyW>)}!l|=ly ziZ|mI+M+rZvM+$F&Y{u-@hwuo-dUieSG|8zxU4#nY7?R0>0?rWs*)pe;M3FLP(15G z#i96SWXY=EHV{`)Z%!lm@hf%8g&6)~V_Es7nXs2EonS1ED>; zN0)PFOx)t1Gz=_*uqJiUbaBQfgB6tfj*UG5p{~-&NDYIip=41BnjKyc)2qZWYR2&G zt|A3+dH%o~Tc@=Z`T;}e*#8bVX)oT%5cif?qz&qlo5B+y^+D&|D0kfh0i}c1xV19Y zP}R5NrmL$(4pHCc#p2tc_%Ou>G3m;AG*~>9GIbO?#~{Xg#z(CE*h1ka+Ad3+D55!&#no!}5ALKgb@NgpDF zmYRA7aSez&hOQ2MkDIxuLVPv&I~)5TzVgc!{8jiaIu_kCgUsUZV|<}`fj)}#wwCFY zZ6hanb>pDOjW)8e2aAYZNjtn_i`H?SRrA$qd4|9%=Laq2B(v~i3-aL2RS*%ro zcEQ}_!X0{5dYqPHc);b@6s@pzU#xC76@JCKixkRZ2W_#mlWbW~+<3Rt@PXLrxHkeg-{(b`^EU0n^5x;z;kFx)T)!1QCWoVilcscqdlW zH8r*)3SRyK81(>?{TN~)Wqj;f_cb;wdD|Nv7Y!PEl8iWx2nFY{pThwooF@ZKn9FL* zLX6jCavDV{PVGk?+h!w{%)MhGRM4B?!2$PxX4hsf{5Tq$<(7-a6H|EA#%cWWN(cS- zcZZ&IYF;cr;X;x_xz0oI7v-6OVOqSZ0fERF)qQS+ zzJL3bx&BvXkj1z8`~E-3$LIcKbaZHBO_#CbcZ-9}O3l%lb2a6Q%TrwYarmq7XdDs` z9KaM=g}b%S|3NZ!JM?sLPl+yBe0WjfypW(;6k55CRcGsTbMH{Ihj@@>>pM}7QXSWD}6 zTn@OS0gSuP#rLJ-aQS74CjZaSV}P#LLEchQu$c}_9g7UwF`af8k*g4?*Iqax#l<0i z$NS+OsH@`F)aKr?n&ab2?2`xuGLq*)68hY%fHfHhYZ7X~w-df7 zC#AHno1N0W;*aoEjui!|+ZFZkHDFqQ4%`7-1jeQq&z{&r?JDra*VGBCU9F4!qf*-A zHPFems;YDO(av~}^CzSn?4RPR>;#gig?GeNz{{i4Mgv|%@S(!+x*J>9KjnV7mWWHq z9f53In@g9Y-A&)438mc5q|xKt{S^YqCYG223K;w7RB>y^CEq+FbbfI!r9t=yB<#J; zB%CCKedl|5I%ol*u3_VsnaH8|76<^6v%Hix;hl=16fMg!Z+m^0gk(iPOa1v5Krnm*>d3N@irQWgDr^l(|a8eSENV2mJ)zKG8zxpoD z?`QL5BW{@KnWFtzK$;IIf)F5{OY0rEv>tZ|SCVn+MN$GCShV3qbw^Q(;ntz!6TNBN zm*n-rL+5TfEQx>Gb*K*2IldW=F%^wferK{HQ5{{y94fL+s@-@PnqlJK8o}>Od;q+C z2`=ZsEYjRzd8l^i_yq5NaaPw={2V^O-%5sCXJn+SXdYTpZJlt1w14(6$ZCz#;CH~A zEfc{L0j!ISH(LpAc6ROVK$Y%!<;qA#cvL?bJxx!8+|w?8=}Kmt@YO*n@e;12Ls3NALKYh2yn{*mqVY-foQ>NyN@NlQEU{b5ge3ujR zT_~zku4m&?WG|j=x~p#uXu%li6_Rl3aXfdg#WSokSY|Tq^(+iB_qh#@WU(VvJG_-+ zhgt`0E*aqXF4i&PeN-%$k9rj5%npuUWCjKn-UN)YChhkfYbpH7@turz5+;`&;k3q- zPcRpevaGCzQ!MVYFwHpUgOtSJJAn|>Fz#LWjwy#3oGcnqqO&?+fv`6X1H^fIZU+!& z1Ww{18)oO6JusrW-C7_ZoZrYkCuY&qV|e6552rkk8YePj5~l&P8d=}sPo^@WhY$mp zF<MfY6nYfFGg2WJ}LaF3>$@FF)GR)zKjCG1LnU{d!_3cfiazp$Z3=lWHSx9 z$)XKu$|8h!Oxkpdr;H%4FY(-+LdbPZ>-mWxWC%0+Oy2?&Q+ddVXYiE03(`TL_y`&p zbbWIM&tNmF5k`3!g9gqJ%{d4$O*3YCrl2(JvpwgJiI}rW z?Y>f;Q~R!!Fk3gLvk{ezX+cWI&2mEFWg*MiloEolHsA?4jHAPy#A)=W#@y&Rn{$W)q1Z7~IOjX^NDPLb;{zwnW)QqfnV$Iph7jUSAt0H<$RXzOvd@Yo z4s419(&N-z>Zf?ea4EYP&++NPd-kV@y8!A6)U!`Yz0O9f$@&OGD>U3W`}v(R3zHAT zaJIKnLm5sxj1MeSR{IvbgZwmPoegeU1!^G5*e=}oix|O<;JDZI9FLb`Mx9$`h8^stAA1n7{hzt#ByhDCFQ{$Vn2?ZZWCCOEL8g)i4AhCB=49RK z#xuTS)j(#!v#5ojA>BwJ3#?>)3yOL8I1QS58raDigGrt2lXw71))D++em;w{38>}W zSy;OM$~p?M&y37JFY1SaGDOQsQz`InT~_LuhET5@7XenkUV+uTyRjl7ljPi0smsc44{gd)a)oJ|e@~Y8A{l6=(kWNI(s|?Tozm(VA zETM8OE_cL*1n*U-74hlFaCBQ@)gP#f56ex{@R!|d$R$v!`FEJd2((TN)K8cI!^c+{ zH#zW=IREUFINYVsR00iS+of}-drDwl!c^CLPJeJAOg{K>!amg-`IF3_tNGKFKizQ? zs&{U_yRmD2x5iHSR~Q>+oexe3-i2#=wNq)BClV*jqXR$2eL-$qPI&GrPiNn`UY_>8 zS!EX+aR+$Wp}X9^&}Y7?*hACT!d(qfgLgSICrk|%GkI(WD#+AIMvzoeKsdsNF1m9X z_e*@c&55mCiQ0~vcyP`GM^jCB!n!dwiTzN^P3ID-aWm?HVX}A{`0Rnm*#3V~zq|Dv z*hh3`uXG7@dvFMz(Mr*7{u6tUn{QA?|7&{?3mMsM?Lo11G%5UU18SvG{7ZW-4e1FNgcpa5-rXyF&n)td!i`25qUK2#yMMI zl!+nqE!djI#YqSpHq(rTB2fOau5P3GdJ1j4|LNU^=n3>2q+7KlWbBu#v;L$ zyalYHu;iHlKVh9c>l6H;*QQByNeQ(?Ouw&02G4SCUzRP;|1V9y4|JJc&h#6GsDEqv zedqhvrr*~6G38&m&cZ->980ZpT9I)q#)>Sv#V?m|66K3FowY@zWjEFc%zB0}egVRN z0%RD8VH$~Jp|q)2&42owimije7B=irPpf-!HYUxcObsT+1WpFdrJb6e+87I)1Jh{O zVx-?5J~E1p0()`yg&f}K_ub-l!TVws<086}QTQ9% zO2^fWG9TycR}1QCb@N|+Q1?&!fVOY2zJf{Fh1Z~!b9WB51Y ztPI>fcvG;iFIh`~7ZT$bNp1x;4(ohs0}M8CpsF6s)NYqso>3pL8s5(JTsH`Mtm~cq z6JvM#mpMT%uw~Gme&uJ+2D4&(-#O=B1>cwJ`F(=+3^>641N9ze^mjM9-Z>ImH*o@7 zM7$D4gdyfnbt${CU1~i!*03#;J-1FHuuK0M4cy&G!NB-?GzNC@$@T9RWu4SS?FAh! zP%KpA{`J`GOXo6u13`)oj!Jck%lM`v=v?njJ3N1c zL2ol7V^5}q=l908JvImZ)?TX6DqN93r zK-lvOk+h3*XZV*Ppq;>`y zOSnnyLAs3&YF*qO-x7S= zVq9;=rOZ3Qo2M(2XY9~tYI&BFCnGiNVB(CvF)ImuDN~<`+Nf1lJAU;8*{k}9u>rQ5 zmKuqB4sng~aD+XVcbD9WJ%BuS`gtK3hR@HZF}dFp$M^0YI^H?Ilk4v>XGXbu;L;Rq z(l7UgV)}*exnvigZ3D4z(p}pKHy(yYNknRLFb$j|2e;Bccx(4E9Evgchc1N=su&Nh zT1xPANG}+UYa&k@ak#Z$F-ijapxbLXc*2PYoL#i0V|ncny|E*gG_}6~MC+4r+Kd1O zjv383y2ED5J6O^(n&I^kj>6#tpP7!uJh=VBR}umSY2k=BuwcD=#7*~&RP~eL;;{vX z=mFxt!nd<`CY+;c3v@6{lm8t@=JXkLQ=|WH?&HF;!T)vS{QyURc~M8f8hpdB>pGNKaO4NMzUChDyX5-H;R_tjUYm0RI0ny$ z#@-uo;?I#ElRI>>a~?KuJGId{D02?kI`SS@92SSa*^DOFdno*Zmp~NW5>>jjZSO`9D zQ5jq3wmVxFD1TtagNDL@W}q)nUK|uN1$)GI?SPzcl}WhIPF%Hx4w>f*6SOWX@!6qx z_ey>{!u?+05Z`Af{jD9QsnidiSl!p)LirX~Ni77j$O+$;Kj+#)eoP(@IcW<9p|OP_ z#4}#Ew&67@03Pd8%kh&(Yj>*lHk1%f^|3WU)(fv#<)kW*nvUibo z6F3Pt8W(6+;=wm09{0cZ6y~rjiCb;(I3+Md8w4`E?`cBXwngg~#-$ye_YMeRb92H} z?Kd`po_D5d88}*$jl~>??DF>h9Jh%vvqJALc*M~;Ie6x8Pk%PJsmWSv6Sw%>0GS&o z&+W4X9uK^OtVO+7SF#FnP9w>h-JlA>kzO49hSN#hn!(e-(<@x>VFR9wA5iVC6=(Xm zVYfYXugAq>*S@1mgN2YdV7X%THCF+-2AH5nhJqtOmCuDoX#xcc*&Hlm5=!h}&yQ{d zWmw~>n!ZJK-Y0`Gl=_HYx-8X4V%=BjVJ}At?RKm&=A4lx(WfY($P1J z6VZTLxiVFtOP31PBn&6H9XT6I4%0Z<$nCEfyQTswYa6DpU1)kLrtsVapzE&P3Ka%P zj#!Mpe{cfKohd)sDYl#!Z99Z#?m-%bp#qe*kX)t7{}o~ zbwG{qoQ+A))IWuE{;`%oZn7}a&U|EVrL0G|^!>)3 zl{%xpH%!gOSky-u-*60LTz25rzL$>H61nU^j4R#Az0q!|)vKYBU@f%vT?KQaweKeU zX3lKA6>K|#=mPuAOu=cuss7Y}W{jFL{jXS?cCf>clgRu)Ar8Q@HK$nGWD4IkPjK7c!mYiQ_8j8XR&uO2FNH`_!$q+^iyv+tSf=gjp9sp;Sh9d z=7A(hi{P+vE}j@bV3r&`nSn_ zb+w*ry<}jVxG^p44&tw0C?bHCL0fSg2PLFI{i9DX@__Ed63a>W<8B!A(MfG?-;1p$ zRec(c)XBf8QzpY9)^U(d>|FLt_t6>LDGld!2Yhf(j*nQwawD=QA`?d=E-4b%6LCqM z%e<+9aVbe80LMco0=484VK`86b|$`8!7D$)*xikz5l2XD=_JhV#@%(hzuH~f`JneS z;Q`eX(4&yV7qPqNc1;7^eCJ$O8epI7cuzk>Tr(-9=b(dla^op+{8Jsy9ynWz4f%nc zfxWoG6G`3cHNQ=t@!%G>qZ+9>gLfnZ#x@M9(!43~R8uk&I~qIQV+g>C4(gi*ws z`+)dcB)-HXjuL=#AhkwNoNA?nVYM7#egdqlOl>`oP)R{qQ-yYl%+Bvg(J>1YhglR! zujJuxTD3%Bt1EvkHi+~Dkrw_pkm8AC#c9kxB^Kloz zzD#X823kr*Y$CFLmI}O6t!)ecNiyI!7xl`dg|8X{q>8Yp3zN|i9Ak|kWJ#(eJ-(y38yd9PPa2@{mV2%G2X`3)nq z^1A|jbSED<%{*sW}pcRGx%rj}mGsOTw_qL}<}tHT05R6;teJ(#sq7G5l72j9wvI)K^bCPBU;u z5@!;5_ylcRQi)2R0$TfGfQy><6EMID%^_CL`k;g)MbWEB%$N+Py@%+DG-cni|} zh~UF1$A{X0BYor_@T_lhj4;oR-vs<1@teu>b#3u2c~C#hB3$?`YN+La6 z_gWsOF8qPID5NI;EZnM<-)S#G3N(cTW|KgvL4f#U{)qlU#~%TFD@nHGlf8hUJqC=Q z3x+nEM73P`&5_^xqmp4w*-WIhKLyeRlTTBGtY3L^D32<&_G!I+WXZczWg^rPgl2pG zQf9*?PE&&ooQ1&Av^(q>t3--FW{OMZBE=(jMHLw3-~3ai=T>2a+FQgW8@&sVBO)i*z-tSo`Wvc8c zq|jeazf9fHfn0^vScz>?cOcZdGFEfSZ#(&I8Obka}QY{oO6S^(|GZ09WBL)QS#&6J)n;UeW* zs;c%-KJ}{LaptgIEil44MwlmIm8y}P*Q+eNYl%_$S%*~SGnJ)GrE??|8WyR7U#XU^ zqFn1$67lz?OS!I7PYcyr)sA2P!LJtYYeDroQXNdH>qi;oS^Jo+9GSlh-vi8YHj`fv z#{Q4`ym>y#ab^@{N^d){G9L%l0}(8#FK_DQzj86R;5ZsF12bcLM!iVC4Gt5lZYEkMA|$~ z;YU+7v-KKTC1JfPlQ5)8B}D&+(4w~w^gh8g3Z*5i?~j`F0vRi9dUhrB>WiQHKiZC>JskQ8>=qW#emqziqoQp|0>#->U`yLj%!dPxhD_}v0MH(> zuvh`M5i5($=Y9+8a`sZ5o^FDA(4H0m7wRF z*>Qp_^^U_%o(O%3(7Tgd!AYQp6w!@|zg-bRdWuO_Ic9@UHE2?;gzsDugXA>(_t@jgMqkh&Y8 zl?=_r$C*qj*=c7cW95qaFv*U_r!6Hn!?u2vC2izY`IO_YVJR1Yl zhsV1EuAcM?O*oS%>)Ud`Q;&t_qEyCVs9vGnCBNzXCB>^&*m@9V>35_!judZ-rpWw^ zv8PWyA0u=X1rQSrO?}q@dlKpH8)mNuth7HO)>@|VA(V%~Fv|z+w+rH=Zoy9-UN0t^ z#nq&CKB5=b76}v7M&tdj#`~X)@C_sUtr7mx2p1dSb4K{I5zaNjd?S1qVSayX70A>U zS;?2F_m9&kTB`o`MmSOnmLNNM04m+Y!fF{|We53hQb|J5soWBx{Ufx>nP%SrqI!s0 zZbKD`u>5Lsnd1aigV4fbxqo{l@G2Jo&u`*UudK1d(dPb$a7zjIkO^nj4~ri4!)n6y zd_LCvCR=#6CqlqG^R|6$}omwv6Yt>SOTKy2#w@>A_ zhQAzPwg;rPg>P2+?ECvlewh9Sw0R@{395D$^WUUuB-B)ugf*&6!bDXnpOKiIHC96O{}R@# zVG_F4EfOZGA0UiM^ujfnf0{rfG%%gs0BAw}tTAH)M$m?~kD zy4TJM8@`7Wr;!z>K~csl`6pZRxI%~-(oF3RlNF9&5>#i>;GA zQU8!f0r*=4Ak_p|s9w<@3(L8-rjG2lsY!CU{e@;B{v>Hi72X(1ptn2;1o5?G@i4gJ6-42u6-7vL8V-fzOg&6Lf)tCewdtrphR z{EGojnuXQ#53^hw)FLCCFJZm#9+$ub3{0sqj1^{&?fECaD^p*TDe#0g4lutb4bC|%(W_;cn&Nn=W?gE~sO<9sw zU00Z&ixaSnhnH%+lol-lVvdPuv_I*em)VMycEc+KA4R#|+y-3wvn*CCGcD%pF~TPi zKBg@^{Nkx0kI=r-XkU%^KIi;L7xlleD)WQx_& zBJ3BMzp(K``{+;?V5}v^6KydpzA4Z3gsXfGaCe(Rw52dZQV2dgB6`RK@@3~oh=y4^KRjRf1l@mXr9go)~A z2`8x=CCpUUN$6H}50Z_UYBxeHc#Cu)>8e7$I@S9KtxVM*Q=tT8Dzy-q^8650z+O&U z8RaNKR5qeShE_c5%xcCL_z*wTjA#4HlB6*IC1HaaBVm&&_?#JNQVS&1RL(+b>?W0J zz$Y8|`DyULy1M?O^21qRIM}!MHrizm9QweldUAKsjp45y$a1@;{yV537)b z(0@jJjq%+n?@h`fA?A-hBfe9G5nAc7JU{7#^pco|N6qx|){+04EdCdQriDZPUnkBA z@^~w8NO#D$XE6T9HnWI^p_Z6W$QnX+HmS4xoGMTF!ThiA+n}=KT~ls(Z&G9A9rNcB zBL4_29>{kuQeN{sD8D=ClKKIAY?_T{w)f*50bg1S_`*x!v3~O_eOMpLrTu@CG@w$o zhi|v>O&cP=x5#gQJ-$KRar%su$}kB_)fhb96nxbj=G)I1ck;hTt4V&pklzr0 zt(>g`r+1Rm)0EkMG-RpoYgFDZ$=^y9et_k^N@)nSRmA0F#P^P|bSqUigchykpmo-1 zPB0wDQ|XGIGyghOsai(;s#nW}Zb;P}C8Y*cC84IuB*glGgkiN-Ld?(1B3y#XAs;=X z@<1zc5mOt^(z&v2YAk=uXGnTYDp|q=l_cRll>@q3^#Hp}sIYD#y)e12xVcSflU}{5 zy`OS%sPtdJo?b$H=HeE-G4}jFsC6*cBw z;*2Hqc|15PSq#peLdz7UDBr44ws}TMaWml({D7Na!kIZ>I%_tyv4?_$Z+H>#*If#a z@#YJtm#2SVFLUb0sl+NJRwLSwkw6r`w-RC?`Q2ecaBc~L?}8X92mSS8T${SUayW~R zrJ2k{z{F;I0sm7eC#-)Xw9+F-TZu7~>1CT39E~mz_*ykb!g`e_VMygj2>mUgrZOdj z{+7_G(j~-twuDt`poG;bRYJE)mJsdVcy~*OMlfN+>H2FCh;x%)^iX@~{jo6!~?kQo(@!l2B7?5L!5FeILaFXYC8Xd5Adnf0Wk( zJ3RZJR|sFklDoMrd>{iJ9j$!}RWiOFMnbB$g!|Oh64ol0gqr%% z9fZ@=PX)d~J@5UtRr_122&74=$rMPnI*L$xgLC{)_*0$dii4TmY@^T)L-$&*7GL`o763U(!RcdxzYG*CBi=L z$4q1#C3ggR!d3xU4VovC^^gin2>VY$jCT>{_k^S6OzncBjRK&0KZB2@4ia5#5#>IY zO3Z&4@GSk8h1@>%3khqLU&4A-C}Bu#sH1var^=@@bgD-UxQ8Uv)DAy0+Mp)Ldy~2w zp%yP0ZS8B%=v(0FVe-^Mp3b1@>iQ^25V3yx9;+ktjS$5AzkCm?A^6S`#YAU!gKuqh z6lIFgNy)}1C+ zq<}8BE>l`!Uw>f7Gn*vVk%XfS33Oq~iS(r_!~D)8MrW9y?l8Y5sz*SOjD9o0RyV1z z6G^w`7ofWadVpLp9}9|3M5-{8KYkHl)0P3O&;YYC!1-jXRcr=?KJL_%AE}T``F_1y zeM;U#>RownP>^4GT|4}MU72Em-ib#;?!5KK10BnfMkTfzqAlu%Q1 zo@cfMLDONh=v5&AhINF^nVgU{*N)AA(bxg^=gQOl`8pD3N)lr z@lLtdW@;HAtjoP#T_Iq#s-uAxBVkCLyI0Tl2?_V9m!Gp0ZyC7jO72!s{%@ewSw$-k z%ulHxV*Xb`^nXUU5}_p@*7U6{Ak;+pWSfNYYB(P39jlLLo78N7As;r z(^|o_UPdc6%JdCE)cD#(}Y%?7zp7LMK_?H+z)QqRR zm+xttf5I(U4!A2!IFsqi)u$}rNAwM)J)8svlR(Y&(HRb8tg+>H4eZNRDk%z|HcLx0 zRt{uu!AU%o=8)3Qg_7`_YEvMa0R9nyN(uB(o8+p4!FBNMtd?DgA*eA`xOgqT0P8nQ zWN|{eOu{ZEi7}MywNWIvJ#EO3ZNrjbCys~`|gjuyb>^1ooAU0>1G=}G*a#9!M6pZsbwU_@MIpKNl0j6<5# zAMU22NKmgKv@*tiuJR1%=8$fdLHBa})GiV_VfCOvXKGtI3rQ#Z3h1~m;m@h^K1MMH z8*s8!jsIDsDlQJ;3z)c_$fYZQytj9>a72H&RVwkpelkLf{VHI_6LZ0Df%&qDDfaU& z!q=;{W0>ubS|eeTTI>5Zg3ora^;@&qypN~SQKWRQNl9XPxMljOIb8J+UG*bF&-$v@k`W&rx+%vcx3r< zq~9KGtBQ*k=mOt$8r1t!;19Q2)lKj`>4!v$i$C4PV6 z|5qD)sn^~GHhg{o$|FQsLX_`%T6Mr^2N{452APl=W=E~jlkQK{9HN#*P=#NU$+2Sp z5Uhv=`LYRixk|7m!&V98phopcAUa4t$3!&hDBI5hz+351eZ4~Pbu6cw+ki{|J_hid znNF9mMh%g$S`C!2L8VIgmP(dzjY>jj(qBw}!AN2llUTt9v+Ej5SkhiD-3OQSVOxFP zast?!-T?N}C~Vpv`;@km`k-2c5Sr)KqUtD5S17 z5_BQ7GDL-TIt+qK$zX{=Fo>-=d7V!p|JXmc!v@Z|v#kVAdJW*&X8OVLFR4<%J;@78mL5=ld41UL>}Oe7+k+jP#)AtL|X^)6~GHIDW+bPrPd$EP+Rq7KO9_ z8&FwDmVOeULME!Js65}Y>Akna&RUD_ko#Ko2LhN2rz=5f2}tSre2zpzBzlz)Wq-T? z;K5)$_1AQdO)u2ydg)%GjAL#-OR|ebghc!y5&T|u{E&|CB7On!-@Fw6a&|z{wPH_& z)sgMCd`SQQHAoe)f@T?{SWimrU^Gu(A=o%ptDD=Vc)9cz0AI#SKg9zx^qXEMTD8xx znJH2rO#LpB&1C8aumw`DBkatE*wb$YU@rnD5b#|KPzOi(C#VHKX8-I~W$6*UGM3%w z=f{CJ^UuJ0%EYsZQS5)l7ySwG*_Vx9&G>>h5kJ(5=VpaCwd@XCQ)gbDCg{rF1GK9N zDjdq@hB!5=E&N!*C$0kgVQgwNGJ`V25V%*R5ov~4M}uhj5&6uHf@Jjzaxk@?)kHR&&ykQvWFY zeZYT__)FFRzt83HQ`CY=w*SFUiRySfNu{b;{4_pUO_%T`^@)5RuEyhC+u^olW--sj zBb6JOO7d!?vN_S7pA`hwer-pQzU(h|c+=)`A z1|qcJSs%Xr0`RL?PJRKnwl0cyZPW7qNzqScet`%JV5zd)eAmU+TS zYWy6o&0}lAG<8r58{x91SPYb!d6EW>J#K-H)Nh_$3d zX@2t=(mT!4@?9=HobUOq4TIU+3=G|z{~K{vvEq)_aao_n0G{Q%a)=F&DHRjCKU3;q zrgXXa>E*MHdAQzS*(tfG}d@xwe z$%NyN*v1=G`eee9W5CWKm-E_U>+P%LRvTNaXKxc@Inx{27K8m>7SqFcf9*>QabA2G zL+l^=5$uYV4))s3+V~);WigYd&_*oI^#}HgPJ8-PNCSvb&H7v37K8Gs9c<&5df>uQ zz%O8_{h}>={v3=@p#K0N`mfEgI+8n=kK)lrMe$83{DD;6?}BPtgsNyfr`ie}c}!3{ z>rh(MgKqVX`L!qZ+8SSz6>bjD0S2mj_;?8mPSqYcs*s3wrVEUw3l#P7L5QG?8t}jm z3CU=?%iBZ7+AsNQRVT{fTg<4IR{s?o`_Y6&z{IJ|)b-j*(6HdCrneGaV-B+;@R%<> z04_~+PD#8%xZ#Am*@QETkpdiJ@Rn|;PrO;gTSI=%q177vgwz;2eKvy;g!2$?w+Uyb zpCtUl|G_Ob{+Zu+;;kcJFPnJeN4wXi4^IQ`&=J6mA^j&zxCnixDgj;A%cAZuXcSOZkJ)K3 z{Ste6tQT(+HjC+vw8K(nsOhSz3ny=!YUz76JBo7l5^vx-;B_?dsGm~p^l5L62b`{N z?J*jtsO3hKezc=q+S)xsDEd0rMAjFxpXv4gsu$sXSqT znZ+NyAA3FFLWH~9grj`((3V*)EC0^^3G06dE!k3D&k%3Udf;7Q;+Y9Z{skZYLj)iD zEfZi*?rX<#+Qnas7WCp9tp zbyW20t>!Bz!%V%wc-3?LGP(gX*Oe`L8PpHf$50r9o;#@XtOL)s0slsTL+YIfaCH>$ z?Ka?i1NgZJ@M}@P-E6=k4B*KIFl05?0OrsJT>WVT= zecv&^A=Na<0`3?EywC>x2Lt$n2yp!YyKwHc0Y7a3|1tvnP89I^%b5X$T za?A`S8^A*di~@x;CPx8R*?>=-*E85T0-PEJ{5u=)HUs$ZEjnfF4EwImp25d$z%LuX z?*iDW{!{~>0;M#a4JAL;Y$&4t0LXS;_E&wpSc=d>l>U#1vrB<^vxR6hGw#Pj#eK}+ zhU&57HCT={yAhf*Gl;&D=qJ(KquVFbZ+;khyYk`%nWafkkzC;8M zSxPk!EPkj5y^J2U5z!qjdL}yi>&X_ED#j3mSWa;&<3)7YG@_hpnE9BXjtuASI5DmE znUBe;?g!`v_%%iCG9Ob_h50yGHNRl%|5*Ts_JgmU72xX$GhMS3j6}B*g)|dXK2tKe zCiZK@uKEYC2erl4`@@p9={-h_)DM6W(-s4Xs4O$FI5oa4>McZVVPe}H6p=86`DQcw zPIbTen5bMPp=4#rCq^+|*pqYQx z!`D6qOJ&T>AYsWAorDH|-sD5fDl&l7uoTR91^J}Vl!Gs;7Vk7(wF#+<_ zcoV>*j-}f8qP5Y1e2pVtziYiq(n>nZ=}?7 z6DW<=DN&1yhMQ;NV}RZPg0j%47ZwsNp&V%LHVjz!gDm`dH5CqeIPibRPKOF)FzF<3 z0iCJ~x}dbT&e=}n?qnS4A;RMoZW)?qhK^9r> zoc(Pb71J9)m~~qLQ%)HBKZ_RO;t5x>8E`L~a8^7^^YcB3cQXDdEB-S3l}h^B1}(C` z>MbJHQ<0~ehz1js=kh<>`Vp4MGXU57p?O41uLNQT9TEE-I4|+ZRNK5nNS~J&P1ssW z^&r}uML(p5fIj=Jf%Jo8%5DwP=}wHnRE~c%F{J(2;mFVN-GF%a2jZJ+W5o;*0F$Q9A{BWG*XFb}a%6`PKNR>*6y;uk>{tAHZCHh+CzN49LUV)tZ zhlwy2kun8g=7=r*PGZy(WB+-PL2&#KwR{-UfiFTyXOkLZq?c}lL+t66g31MqNlP89 zFTc>Kn7O5X+oYU!_)UQSi13pL|InrInE$*H{t9%yotfG%0UX6QYjJ=SG*ajtO~H}} z>*p*&HBc>_Ln{`hEc>F*)Hd>G!3`G1h)`u91Tt#SzN#~|Q&Y_LRjsam-c~WHfYWtCOr4$>&w4jP}HrA(|yj%@ofQmony5($p-GWTLUya-(Y zMjfemR{0;Z=l^hPNmBGD3ybBgX71jBzaHAUP;o0evxp9a!3gKwKu>2 zf9$<`cvZz2KDt!Uh(V*GMn&CNkYKq41q~E52!ViH!cBt)C6Em}G$b(>2sN}QXd@Vn zEoyABCW;a*w9%r5Hq=;9gN-$|!NxY$SW(xsQDci55#+q@w`SI!y?1Q;d(L^zALluN z*|TQN`+oDyH{V>=thLw9RNWFME4(@x>EWtV;=vl9q*^6CP~!ut329%yyP@Cv*nnzC zrG9Jiq@)-jG?@0g8WV^0eh6A^H?f7Z!7PI%f%d9<+_D!(tx94Oi5+BPJ$#l5ox;Y? zQ_0lN+m~KAms>_l)CHn)p*lF0-8`aLfg?{7f1bQxY&^ilJV{#&m4k&|k2%uGNZ97kyt`yuT$ z^lVdnOITh%!}8>v0C|36Q$WwF5HOPh_;jWbp!w*+uOdI93v)=?OHv|9*Lx(ro`3%c zq_d!a`pZACI^p32^}0FCQVTACukq{>HQhVZ?}WKF(|X93&a#9>bhC&<|Hd*Q>N#cJ z&rAdbyWe=xufLn>VmGy29lPFS^fBAw?pIuae83DY5ndZ;x%@7a_OJaYt%arCiPGr5 z2k|~Xw0BIo9jXfCUdruMYb3+84kxCcLhNSq?E5_|W5DlG#>G;Gu{C4a6!yOl+KKlc z<9%N!AKG@Ro2iH`b_ykBP*VH9yf(vVYdweNy{|asE4=sB=h3F|`fN-$?kaJ{n<>Q*<>7YrOrWB&2<_w}Lf`tZK5}?e;C>8A$lUt>q0%xq$dA;-8Mj zhxj5UnWF#ka+H3w!FxE_u#e0&9#i-4mzs2^PFJsucy0SYY$q|KiQ#%Zg}fO5evE`}`p=afVI`zv3R`Eu zFhcGHQPs#NDeHBRj*nI^yuM?POCwO$cW;->#EBLuKzj>=QEK{$Y#JMbIlEE4KQom{&zYq9z z#5WRudNdyXta@fz^`NiLB0iIPyxXPgZRG140~Y`h(HNwiP1;7%p7LoL|IzQF@IAnP zfRhdQ)fq>9FO0|YVYnZ@N8?FHbN(Wl&ZYTw(sz*l9iJ}i!A$f>->w`R))ARVAUTkBI+=3HV^h}~(hB(Oc2&$INQ zp+0&M*mml3n~nAGajF`4ZMSEEq@5||Hd_pbg(oPci}oJxi=lsI+CX-zbp+NEc)Aai z+O)J>{#V$0_dpENU%Y!-)!r}udP@7{O&j+1IqgSHU$mdH7rhDhGLHLwRO_`sXcC3y zu)>Z12s??p^#gnK;>FvsCIG7l{ILbp<@5OmH1KP{h(Dp8(;u+hkwN zSkrsn8RKOoFzi42bv)nKNxya+FV|2`6>E1&SPtKxp7N6ASG$0mMPy1lknf^5hYQ1z z+xU0-({udvrPCDWl2i94I6G~Qd$-{4jKH&_sYc+-{tW!O2z*uqlCAOrkz?Kha=wl9 z)MD?K5u|vs*?+@3nBvre)2z9bQr1#R0?X@fOWB+@U_(;^L?mRm$wq`}A@U}X*GL|p z&P4s+mHPA3uRrT^E^$-XN;`=&e?EpS@Y!#GIdTA)y9~z9XTLeX{Bq{!`uTV|Sw^@Y zUt{WrfhbOuoNCpN_J4@nDb#a>;ZlcCGv}*MFjn&}IQOGo{hig?WZq0>EA9Jl^ckbL zjzf*)|I*{{BLAsq{zc@+k^ie+_-*7Dc>EUfH%0T``8D``*e{EF;n$Nt%H!`Kf2GZ5 z|9FJ_HhSyjv3$;l?Yl4@^y#!)jMK^r@FDmL8I!K`IZifAA!U;QAyH`tv<|RWDjC zR|EXx#5Z%c85hRKDfd?#|K73d%kgpz(OX&HQw$pYx$AE>j&_+t+#yPR4}H9u*r5OeO4JR9t$tj8{aAmr9 z|ITP06@7xdD)Pqrya;>VL4eG+=NiDu6d5fR8+lRN8NB?N{>;CuzRh--NI5Mm=#6)y zEP|g^Q%N+!tb^P|>klrQ>_9)bON{I;HDVGT6_X5qE2$e>NpWg`WKhTe6^CPY!P{sT zcQ!voc0fHn3_Dju3|42G!z6XBIUKI4hQdDxNLF{4!!c^c`QBFd(u=TVg5Q4f-t%&m z=iU19Dlx;o_Ia;mXn|>Dn?aC{HUXIp!{3GhTG5ScmymT)A9dE#+9lG}dH9xT%=LOZ zRs`YkvI!#9a}XIvk?U-cG+s0IKiF@pPUboW-w&$yuWzv!eH28qB>tI3E(bC~;mwrZ zL+KaU(z%|%`$2(r5B-(){g|Jj*UxbmhBu?+d$s)u zZ6mbSf(nJ}lZH6&I$SMkV7#y_+tE8atwN$fYx^a7-siKV?0)MqEb;9L?9P~*wwVWygM zmH+LFHUn6q-nzyT&w72l3*rkY{`P3`a{ZQm2HXFjN;uQ=g9^x^-PTK-pvoxQREz!d zVG11ncL*FEEzn<&&Hql6JveFSkT~!I5PQ(kSV6jfN~*Q)mHtmy9Ob{EVZKfHoOvAZ z^w-W4Jw4kI`}*xeF-Ly|eoH6#_r>zFRGsk3RE@-~s#@ZKs!HNSRUz>JwO(S>Ut;|J zmBcA3B=H!vMB-$XDe-WXAu;y9B<`b9C3aMb#CRT8V!Z!GV!Z!GV!Tg6;!c%-cyrnU zYukGP#;Qiu(^vMTk>PK9FTl2Un|jC3z|T;7zm&M(3tox5>}MqS8K2P9JN=A+pYaaA zJG8~mNcA&b;A>@X)fq$9{*}$+#P-_L;FYtKY{N4S7pi*`>!FJ%)F)_SXcJZ1dR97n0Y(da1Xx8T9w$$Bqr}6Kp!@eb0R;(F52@zcFaE zulK$BzBZoUw1@OBehGXk@tZ9??A!bu%f6kgKao|mQ+62XSwR0r=E4c#F?CakzW)K1 z_moQ|`5COopcp=$+eoy?GdL|QCUX-z6cQOEmy>+3o$n$~P;tjw?MVL|LC9cfe?Uyr zNX&MRz;oq!^cTP<%lH?I$NLe+vpwQf&2d&a?clvcUJiMS43GMh**Fg44-?lz+-QR{ zO3@!PQC|)=OHhvQj}71j$*X6JeEDZx56*`bKl#ku3LOiC>`R&HhSeEKS_Ws0-x-=I zu7$rqgZ-$ZJEM41^K+bRC?{`|&y$%mPCf2eRVVgUVi$Y}>`gwFg~)#WDc-!;EpdVh zfy{a)Ann(W{pbz~>0*KB8X@Gn{XBlX@bUYBcUt?)?5DHHOJd>gz8TfNx_%b`5o4FL zNvmUVPx-XywH3#oo;z^A(N~lf?brckI}0rInVw0b?~9UOcIcApFHBxU^5j$+T~RYW><<7nC9G^Vz>Y`Z@U@ zgMV9Z{B+H)0^jGcn$MEgN#1nBW4kBX@_9vHNnHI$zzs4uLZN zk(CFD-Yi#4XI>Vyeqy@~Ce`f%wLw#WAV7(ay#$$N4_VJ^I9j)hx-K^eBYB0wCf)bl&J-| z6Jl!c2tflr0qFAR(y%`mFXPcFU?Tb})m%n_;gd=(K@d@77zZ%IvHW54{@^LAo;gi{6r~#Pj7_hNJwQxXZQpbfPIC^Xgt01 zPT~vMUCs;RAs_b}7Hj-UBtf4YP3I^$jr1v`|Md-H9`uJe^aohzgi*Rbm=pgR*-HmG zfie;(<3UdbxuU_|XgE7c+jhW{IgW*Nk@T;Wz8p{R{>>A;ai#3AU#;0D3|e1%xP|8{H(*znfGdsP4WNyXQ25G?b)9diig{Bwk;)UuKDC z4?X$>kXtDJzA(}&h2v{8@VtCzvUyG5y+qy^@)j8$uO`aAB)&rxO5B9+M>6fIs)xRm zxI)M4CC2mfKd|Pv9gw>Ua=n$(GM13e4)z856;zVzKU;3pE5#b$ZKLxnBG*Dv)9 zhkdsF-nLIYSSOJ+nEw6KFpKsHoe(uXzWq3m8ARR^MjHFXspjwVISss@qsOvqD@u5r zyejH7&hU8c6rw%@sE>PUgjTfaE#wSljr)?r>$w!-558*a&-R^0WCN}L*FX49!Rvv< z(X=<-fBS`{5AAdo8T+WulZHWD+41ySSJfw5cy`eDw*l``m$e43$E!Wak?{&{e{Nos zxqd-f3C96Gof&Qm9=QV}>Ot@O0pTr#pBV#3{qg>e8?8-D>NSgu8ZzE}Evf+Gdp>9V z@xI^zmSW_cMV`|Q-jjwW>&aDCz1ht_dJMQJ{|4?hgEO_j_+VYHdCyn%OfzetHz#tH0EzRaK!JpVtCj8hK6s0`D#Keo>L~Q_AU& z?W!BUv%@$^(y)ibEh_T>pAX-M-z#Q5_ER92{k%!z8zgR4O+V#kX`8B(bgQb77|-uZ zjQ*@~6<>ufzGl!fcRmWeQa*)VlZ;-*exbV0aeaIY!*0~|@mg{cY4iRzr#E}Y4d*7U znb6s=6G-l&AzIO)Oj(Rszoe5q|L&Au-ogC_iLoBPm3C@T>20(}n<}*Zfc1F47Ggux zX{{0K7t3~giTMLq&qXGm{#SO`vWJZS#Py+iqYcjJ$o`iu`r!Q)67NtcI!=}tzjuIN z>SjHbAoj~&kMh$fcQF0tE%Yi8DgOVZRX+Xs0^*Wc{?i5*F5gutE4}`bEHS?CcPV$I z+m!P)_PO(3<~X&SpMKdK+xFK$<^sxGY|CVSN;-z}z5DS;SD*{>a0-5J0p82QbhZ7c z-iMs2wwl8X^i@)IH7$L<4m zBC$18;SC#0Bk=btasRo$(H!)JpTxV_(xoaaK5sT5856{BBVvNNtUa+Y<1eG>kT@$h5X4DWA{xJy+_d{9+MjQv6UI=3&Q z9x`@PM)Fa}m_!-&pF8kHjz?$9XM%k8lg~c#`E?U>d*t(9^4TSyAMn#JgL+P98HHb> zjJNk$W%w9Qi$jQ6au}H12IJ>*Uh2#IPU`tkuleu)1o>^`uQmB@mgsYxd}he!j0oMh zf3lOjZM5Me!!tJU%jZCI2XP5UfIHXV{Cvs@GJosW$o~>uLqtU6r!l|kE9Adr@@0LM ziSYv$#<*}i3y27(W3M`uw05fZsG%A4T0-$(aQv^4@u3fn)vuqlJmd)IuRlbsXtiZA z^zid!wD03Yma%^046?E^^d7q59eAZGmtd7e>~8gH;q`Q}ZE6-`Q^id=KtjsRkg|DG z9B!B(F^?jLQ+Ga{={;YBdXB*9hA z_u(?Xxp>{HuMhorF_GJ7$4}8q{I>GygZ=DJX-r&y|C9B>`u`tReaOFn{7&+pj^*R| z0K5M5%a0xeK9PQZTPz;^-q4p|E)Hv90gB{P7C}K z`3Q8?ivJVeb3Eie9gXkp`pW&#zMf^pI<`PS3k4KL3DEwq z6M%^EfW3t~I{UpN{?*_+7O7eX)4-uR**&6|d@bT&Lq2iShmgTi!m%+evxJ4&+UW zm51+h2@k&qr{hc=XXrTefj2HEOAP-@TT$LbmY2@@zJaG4qx=Ey zmk4LZkzO6y*3q=r?bT{A@={2sKe4+n%GnGGB#zx<7^7yDt7;IW@!4{xBZzzdh*n-%g2f{g2q!kmL8!`@pN`z;mDB84X!p!$q_oeh*T|bvmw**i{u; zZWYqLT#llTQ*Hg`WBr)E9FEQR{Co#r5iMv#d#CU(Pj;j#+ z^{q!eo~=SX+Gxk=zxLY;?^nOj)4Nc|A&K!mWW+w7?N>_vR{Gz`VLs+(DG$%TNZh3o zCC2`ZU4AwAW6AHKr|sWul~2514(;8axWVi%wFVcqcZYKCqMzgYKYzD)>>mg21#ctA zsa(U8-#ZX|yjl-D7jbox-l%FMMtf5ZpY!maDdfu;n^XqQ<2n%;{^ej7E(iCiEBy@r zIh`&%r_-!1^fUbDbh_}IPOIwcXZX+QbiKp1Ue~*(4F5Tut`~T%_$Qqa@tjVV_nc0r zde-FH&*^k|&*|XzKbcEK@4*3Ua;L=2>iZJ!Q>!I*RX$?h^6O#2AKwED)|>F*a1*G9Qd8(dg_+`q8# z^z)DI27V0X-WH2*Rn2#@e{`!V@Yqi(Bu4#hIkfNNl+(=qGS0}6`U}2ORej3!8SdxW zJlbIudF8bCafWB>o2bi6uz9riSn?XF_x@*ndtm(k8};l|of6}EN8%3Es?*I9;27;H?SY%tqse=czK7ezwi=Nh0UY=c9PdaJti4mSbu!~OLzxWhQzK)*XdLp zr$~(P9T5f4iyzkL!U79j{01>&tb};}o+g%hRKp zlB#IT;YN8FMf$(+yH%>h2UUv1sK3N`|G$m{h<*7~GmRoUDe|pf`S!r|Ux%kx@-lDV zJV|1-znsVOlaj{sZ<6j*aY*}eTOs$OyC8ShDUf@cksEG5e1B8RuR`qe=zq_G=hwH6 zLaJ!F36>BU?)~rgcggQ#r9;kM{F)PA44Zdqcx|_dXCU?_kwkU=^^C5jQ3v~hc!{hp zuT$jp{8fhMgX$9;R92>Q-){iqR#rCPNjG(}UBoW$*|)DMpllY4xHqzhSoygBW8~k9 z1K$92{9O>Uc~edwalGx6nMebCCoD5oUb{;7WhKpN{PGFoNhYWK{Zs;`28ZC ze-2{5TsGJQDOWrED3-gG4!`&5Xmi2eu>SiCi*Z$}#Q6TF#JK+@G1mKteevvfZ~qVy zTiEYziI&KIP|+D~Gx;5doxpqduOB0GCUv>eW3v2A8_#vmI-<&mIz3iC)(=bIpS?UM zngBh+n}QTHhJpfAw7K4^dMppWm+}^QF$7;9q2Xan@BV)p!Ahm zI{PpBKWM(aWc(wrk^OR#57ZvZ=50QW`{#IHro{# z|E2x!0Mw->w^&fA5!=7vGjE?^y)Lj!eJuV}h**9P&tLa-VBLrNufU1MbA-^Prb*nO z3Pcdrf0AxeqY%6Qdq^7$4&eS>dBT_#Y$c-E!$7rv=PzuvCz+y5NxH%B&t zzx7P;tD^XPe-p01Ujsm{?_u93&%m;M7QV&TN8JNS`j@CTn8SD#I+gqF01Q@d<2_E? z((n6}_537_Acai~FYKpX?_6DWH(mt&JAI{Y~s|y}co7KcfetH(!3+jcr=m-{q-{FeC-JUVWw#Mtlpkp6@3_evVShj%*bf%z8YxE*zLhd24@ zy8!3HaV+KTGf>KF=t-7*tbY!89ij8D-abOQ=!^A_oX7J$h~14b5qJg*04m@ zw_14k{Thj}{zWX$%lUqO5Pt5eLY#-6$Ey_tm|=x2csE6Fr6mJl(Yin3_sc|XoJy8> zhf0#TO$BT*?80dj6QX6`LiZMaXe0OUAHfuW`+MuTe}CzA%k_?cbsAX%Sg*$n%Qu(w z|AxPKcB*gl?B?RtjK2B}knq}VkPt`z$&Qx5?+=uL=i}*b4--Fz_|dU=jDJ#2w`w|( z<>LJlhuN)3~ z<0nS&*?>pB4}JpqRWbZlYkk=&*9+Be*z?Ce@EgJR7Cg^TQX?fz6-m+e$N7ACHD28q zsed_H1I`93A*TG;=dBVW%4fq)Am5exZ;z}$evkScta;BmfnBRxz1_+#eNY`hY%IU2 z9ta5eVjYBJP>Ic9A>8M$v%vEG!Pkf^Co(&X^sFBJ+%W6gzC-*0?T>d*(lH;D810YP zXd%C=T0+5z=Rk0r7TlY>Owc0jH-Wr1D%6TD7TNxh&oNV<#0WkIm?P!j7qZ-{7=ACm z=liL|!e=I;xa=r6`dh5Nbqj2LdA)Ks1q3J{ z5G4TL4~?-`QiQ&Z;Ljxg5cTcc7F}Pw2G1XlT+iN5iT`z}i=YU5!8wS1zhnP7@;%6_ zpgvVG@_Mn~e7imze;Uc}BtIjD-)8C4=IQgAZGVm*<>c=oKOu%6`~8rLC#62!Y7P|f z>%r+{4CSPr3pve?d3Nb-{7H<^U;KY9c-7=pX`bmrvDd2@zglel>A#KS=aHWg!;kHM znGt;YZ#nt#tpz_{$25V+aC1q9ppRYr$+I)UdaTWZkQo4);|(s{VOq^kL~1TKknboW%XPYk{I{P z5c}1n+0s}{28(&CR#%hzkv*?^^1BiHc=p?~h)+Bp_$R}7JijA&T>ndq^_S+?+kCqD zfi>VCWO=!U@5`@1{ zYa*Ld-hY&CKmYhsp1$lpdL@X2Pp}vn`K3KFj)Tal>KbB*^o@DhWYv2W7)p{&T-vn}Q z_V@#NJU^EIS}FJ$9-BDt@dj`c@GosQp?fNcwTQ}{kaMVbA3Io8E(tV=Q#DV zud#!`XJ-4TGk;>4osFDMp@T1k(2k#lox*MW3D?`t@zbv}eg9m-4-vl8g15MLM<8jP zPfCCcTm<9>8|m4I*P+e%-uut+9Lcl5ir!J%Q*`57Ua^OTI!L~sk~?X)VMcOq>(dkx zDPa^2{7TS47f?VZE8#xu)w#FzQRwK$O$$Q@8@k%PC+Pab=>Sz&A zaf5)mFH$<5FY~_d^%@YOoDtpw+RLQ1Q}_)&O~$X6EHiW5e3-x;1djHB+Gbo|rvuM% zJ2jdYBriPx-j_eswI(jn#&P+`uLce^Pt_H>?f~~)j`&cVHWi(lk(zJp!BHt$?P<0;2S=r6NZIl&P^Jn+e_yB)rz7e| z?487RQ~Y^GyzFPVcq2Razv@M=1l2BSy#EpP;>BB{#I8z^7|)|fjQUHQpn861)xVYX zXF&rlX8qACjcZ8E>wk2fj|zIx?*p7{XkuNy=hO7d1@~yYPW~dA&hD|D^h2b7$ESy% z59Nq(2N6q%IM*P2`_n){=J!zVFROk3$Nhjq-eqLrE0*zFfFDbI74iEGzPJ6~#B_VT z$A&(V58}+hAXXWowo-5W>KE;So%}}f1LS8!@%eppJfB(#Kt%g<*twIel1sok&u58W z#i_9*be8%PF>rViSy_+JF?3 zWW$>QpG9~X+vVN+!%Zm+Uo4jkLx>wQl=U|_*0*B6HxFdI>WzD4Nc%k6`J?ZGS5G_N zW_aQD#PbT#_&vmT5I;8>@5`k=_Y=33`V2ETe#=GP_%;7upG5W$+9ijCgCz89@hU3q z)l9uzRVDR6`~Q|^#`q^OzVCJuzh~Q_0*L+cIscqRaf63J+>=@y##@Z%d&uupO%mhx zFD1tJK_$lX5{o@~trEAXW{GkC4zVwv1X)QO?At2Q%AFmDF3;s z?ssU5T|UEqZmRnQ8vUn|VfqAX{X#Bklg!%8|8bNzdi(QAhnz;Nz1Fm^C#{U)~{W4 zBKGUG55)%w-^Y4=d7rLV^!Ua7%(_)lpBD9q26{qnf#50by0{4c9?{iXj49`E1N{07ahxB0C05c2ntzuWM+erw;2X7;Ws zUo(gC>auR$b?j9CSYqvV?tqkcmb2EwA*I+zF}>Bh|KIZo?{i1)bJ1@LAzbEx6*%BL zaI?f+>Ux%Hx=@zI8`xV+@YYqU5eoko@GmzCAJifkeADN$e_o;|}RARc{HC?fC;i@Z(2g||;tOB(xElE!+?mQxQsDk&$Kat0YW#-id+!o&P8ae_+H>3}V#8*kjGuUUB**pc=flR3`xa*re~6ZSGK|OlUmGX$UyfOyyoaNPI$CUv$Ed7aLi@j@ z!b8}mEYHr*6B|Do*lUe+`Um#UCw3nTE#Y#*f~>JeBuZc-%_cK0i#kzsN33YV!!H7=tgQ=(fW>w#t9wMzRN9_v>jcs&1T$#K<+x=y!Bu) z8RfM1NghM4k3XS*#j6Y{2kQ@AUItzv$@6iP7xQD{SPy(E<6^h^0tVn?x;KAf8KMyd z_hE5mbcpJ^J)80O;~Jht{k?wn_J=GYNj=U}_+6!kB_6KsM{G>9i5>xA&o70r1lIOi zEsXZB?BHW#IAaF7aobY<%hWB zXYO{SsKDzrM0Kf?fO6+E*SA5cXM#74 zKpD++d_637(8>JQof5E{NOGtSaW_CH7)df!k} z#1YjwdNWA%B;9AqF?FJT4Z`nKHNwaBUo?LY`4h;W8_UP@62imx9VEu{wm-Gj6`ZHn zk)KHZ>Cyb?`&aDmiI9W!FK+bt%UoBMxyPQi9g8FRx1?q%ko2Wj6fT>ia(6ZC2y1NK^vP5(oEG{5yq3(xj_miU8oi|JuJo(BWom+JyoNnAZ~ zgA6Wg?=ga}oHbA_k#ZKOOo{RP3KH*Ai4u3I1c~84)C0d4=SUjYLtSj|B-LHddSd@i z;w056aiU5Dp1+6JDrvmWS<(YklcY27K4bFwX#8N+F6ksyBXOc?zk+G1$w%g(Q?jQJR%9v3Dv7@DcavTk10p;vHzq!*dfc>ETm#kl+O3?LamNeEs z5)V`j665_rV_DAu8Xu=>^!aLyuaX$w7m~O|RsDl{RN)O&DK?M&W3lk)#h>2c*Tl1!FQ0xjmbk=m!0k6Uwv+n{))(J*mKg7Y zg?*#1BbeWWe2n*<>Ujait53#Q4$cdbwi{7EGCM>_7r=g0A#m&;*>LW^JWlu)!pDX6 ziBp-t`+9S{UPoL!ai<$x*dK5`FY*)A63CbSuglA@%iG2JQ_euzcmGChC)Phv@aXTF z7l+s{pZ)ge4d9j2zV{iPDL;1pic{4)?O}!sszwT!Lc?c72{8M=07UHnart^DS%qYs z=d&X83KB4LJOE#A(Dm{2Ic=sfzkveYGWndYL+^RhboUOg-FxP7pS)8gV86%R`UCcx z2l(mBV$*)P2(qeKR;7_e8_+N6AjikjUat}BP6IaE#(MZJRc7Pqmk$$PMf~XA@aZ<5 z^;$)IBk{*Y<9Yp-NW6FbHqjg=sArP#>>ke!P(w%S!$dXE91c{co5R6sdB9o-9zuy< zWunCNi74@2j3}n@5wpCWD-ItE)%^TgXJsG#3vZze_X#X3@aFq&{f>=|KeueeIy^~< z-Kmf`(UwSgnZ$bf&$4M$q)2Gr0qsPg`F7`y`a)*P?**vaqWyv7v3~x3KOgO$5~+XZ zh9>C$0Tv3-zfoVv?xzTvM(w zp*wt??P=8VUZUgEfc{oAn*N6SN6FT(Lt8E;V=!Ci)AbRp`b<8wvF}tANm7NUZKrn zJ?#JPXLU1_jh$ATY8S%kRx3VoNq5!)@w_+LEPJ-&hFh`l+A>Nwx7+z2R$# zAHcpm*2nALvsuy`{ubi9*lK-=XElxg|G`&1=)O;>|A$nZ=X$n(=Sp8mF&_>IJWir!?P5_5iwLp^=@#E&4pi})9N z#mjzKhf3J(?V~q8K|6J;)|ss5LDeAX4pkF<7yiI}$St9va*f>Rb%g9ke*3UBxzK60 zl9)kavLWhPu)gUi&)1(L#45tu#s8z=Xb;TiqTdcYD@ncURh&*I&!YagAB^`!(*DU3 z?@;dJ9)dP3V_TM=T|B7sr*84KgBsA@l3lH`J}Z ze$6UH+70_1qEDMjl605qeu~3DgNhUV8kB?Bm$wV$^`*SKIkrC(mWTD>wX|cLst4c4 zvl$P}1-^&)T!ZgzedPW{#-naku+3^%3fMvc0ah?c3!vXM0Ppr$1G}+x|8gBy(QRtp z+n*hCKVHqz+U2LO347kP6qI}w1ikaUh#oQf11ha>n4Zd$rdcs$8P=jjv=)G$r?AcrURzE6w+SRJV&i#jA^K0W5C{1;o=0 z+R^Q3^XPqejz?~-*7u?$&s=}T37YA39lxUE7j*o*j(@4+?K*x$#}7)}tzI8WdHd8! z-|;r+et`47J=pcP&4zv(sb7lLkM>9!%GSaA5k(C4_q5n1IloP%NZM6}A|CHcLF^tZ zmj2PCem$RUxli5xXY`ss@T}YHfPYM{miRAU0yHcz9M8P}AUUJ(cR zKAzq5qglWYNC*D5SUmh6rLbRBA&%fZOI|v8(+y9rbAyC($s4C`Fo*GKjyX(FeI7-h zB4D7(P386h4hO4|b_u*>n$HrdS;B`H6Ho)*KkM1)*|YvBdNE97G?QK z(8Di-*GmtRP(s4!XaeyK2RKgQ`d{lCYGgfd|3lLF{bPN8$q>4ms}lA3_29WJx1dJU z`gncz@Xt`&=Xf?khjXbzIqSKz)bfGK%64u_f7TjyflVFWru2u`f{`!-j9bGDG>mF! zvc4t7>ykZ0ZXt4R80i^BE|~EA3lI_OF81C#Nt;00c|I-FeHiyi-ofx5^?uw%1cwOz zsKnBr`Xs)5_?UiA(hyw^lX&dr?C4_Y-KSAfDV2tNykah>J(&N;tNX5Q|BThYo z^LyQ+d34J!_~~ojjFN6(NjbAn(#M5%i?h5kDG%?DmhxN`VtKnLg5H0Flo$K0jccU5 zN-6J$5#_Nf{bMT1b6DQ@Bg*T|KYQ@5SQHhnUbx6|3_8*_N@=CNQ?!)c)>920AMGE_ z&mn&+`90`9Y=7y`fVpkowM|54xsu>Ic8cF?u;3e&TTOS^syY!Hqi!nmZrB}9QU^&7 z2#N9=1dsQ9NsRXiTD%!7>9sVF;@Rxk;gYBw^+S8ucn%2<6W>Z>j*i8TBdWp1`t4_O+4vP0};Doy& zLL{sC!4!zxNRi+3MMmF`;`*}UL3=-#itiwE7Zp$SnbgMHPYV5!D>%IW5IpHGxz_XO z>{hEtZzuh@C_3zm=fA=8>(23KBJsoL0{;ejnOBhhab{ zT>U(CoZ55R5pV4mua^GGT18RS>nSCE9;Eye-Bk5xNtsS@M;KZt!hlf9VicCtT3uQ#TXcyn5__1J1N^y_^Juqv^hcKUSo>Fq z-a+MVG-!@*cz!m~YF{EBCbFH#(P5<5Y{XXp&wh}K66jB5HlG9WV)6%E2mYs_nD)l= zK*GoVm+@@qw>ywM>M%>PCsX)sN4yj6~sO6rO%PgvT4Dz9GUezSW=4bubo}A$4FkUAJ4!5=rfkMGZ(h2_H(GFjTMkz(T%Np6c;DRHZMl&A|ModM_I3@4H$%buo ztxRy)qdES#`@DVE!h2|E>|aTY_xBF)EK`lx9T1^NGlZ?7uyi)@DO#Aw!~O^Oez9FZ z&LZ*%i+wl8b_T&?{Zi?*Z#QC}$1ZjjdBd~7d(!aepUu&@kH!O+NR!-VaI72udRxC& zfFE`mD!79JTB%@alz`r@AIjEpfnnN&{5WAkUqV*n2S~6+-mub7u z6WzPLcIcEC{4?1OajI3)c;C`qwilk?kTk|`#J)Q0S8tDl+$P%N79-cQ2JB(frhT6! zZVT-@-Qd_?LL#?IEz#v=N{ruA`<+*Ax}@7xs>B_t>x<|8HnG0={cONi;k;wT!EP1<2;z*K7OTFDT=uTr~P6% z(ma67hJ&o!rGBwouU2gJ_HEZod9Esx7|)L*_66{IV<80$zX<}=65qdF6(@RN{+Ag0 zE&o1(>;EjVt`MJK8*b2w1l_O&&q(veQ2=x$c$CloDz++Ru*`LbX2(W%r|_NyKh zNjMy!9yEuE>TYv5Pz{27y31~IjKi`DKO2j3wy>Pb{Bn%j`as&Rl)#O&-^m6Tecw#3 zw{ztBy-WQ72YlXP=utHI-Wz0~IH+>vY?C^jXLs_fyInqO`RNzPuG)tM4qk!+tI_SL zQ*3$oy%4XwZuQ6yJx6&^VpqN1->NA))~+$ubIjY3Xjrlg!oQ=1L%x2$-#X+)bbhwS zY7(m1)ct&duP&E$3kgVF3V_0>ASUE}#5hr>LpfTlo;xkSrRQG&-sVjQG4ddhKp}@H zWE+IIcQ2xW?&N1gS?Y4YTByuAQx*&4I8Y7wEVoMHHdP@pzW*U{t16Qi{TH#3X?`o| zM-*E_i(evQO}>0Tqm-GgRPAI_CLJmi&t`Vj62v~9_DCb%p|H2m+r=Ky?Z@?pdxt$g zlNb-8_q_e_6w%E_dO$?5yawP|UcJOvZ!cx}n6D1Qp|Ub*uj}M9gP%sDO(E}9vh|nI z*bSbsA48&HBgJ3oX-NBJYPlJRqu2Kw56e!0e@lkH;o#!JzEfQUf~+ym774DpO5#p+ z#iJZSJJd)@G+mEF?zdR}jvSQ#{EcEE)~|h|g`zo*j;6}`^|9SZG$aN=*$7JItUA^H zZQfOGR5jr7&SSNXQ}1P|&8oQ{?bD>1B;KdWB)>`3>vSDrU#n`ASIP2b@Pc>)3rnSb z=Y;ih@3D4%xCUQL)Ig#>MHlu(aiw$(v)Y#<>rG^}wCqlQ9mi)s^e@jHS{82ZT6rw= z+<>`GPA!_m$*AplZiRFCOBt1EhjJd{na%zCRIP9}Pl~IY8}~}u5uUoEspQ-ZJ;zEe z+|Yci`?MF2KkfdejZLKq9x_z3Vv6JD@Ez&14&~g{pM*u5-(S2}{I9kG45#n@BQ8rE7)7zm#A8Kb23^Tz4zp3Ci*_qsnKxxAJ#4 zA;Z1obJ(Xbio*2X-JSSUFPE71@$@af^_%@~cQ+W?T<+0ExK;liobep;<+LNdtHgLC zVV*a>i8qqhx=7mX$#hH=b|?J_`aduN`p4tQ#xuQlcMd+)RJ@2++_j~){V7O^yJLSz z;)XAel>|2IXOD>U-1Q8}0CZyf#E-P4E5 zTB8F4#}}MyH(GF_nbzae184gE z?Yh_je{3U=oBy!#m{$FjzWkxnp6*4Cd%-22AKTbea?<8MxR(w5{FwX#s@uE)qvfus z(wMgDcaxq0HurB~hTmyp#&>4ZZH72Oyw%c3Yu@7-O6Pj$ttFU{S4 zIttJ9-r8n-qQ72v-SX2enu66wa)#UdQ!(`BmmibN&rAPt)Bi#JP5*oJxX+J4aD0ew zsoUJ_{{7U?kJYwE>A-Yv)$|5S_AkEk%e`(j^dF2PyIq*xyL$}tKbYBbtTrhspXt4| zQ=-l??binLK^D^AJfAQZz2mqHw-_&}j9L9azZxLa2hL$_@Bd+btpLLqY3CWZ6z^X} z9c01xALm!Xy!mzYI?S(SNZR&bI>wg&i@&b-i`QzQ*?M1Z66tAhs2my;Mrpuwlm`F3 zd}E4>E4V8Wy@K7{44LldKRJA?wkfJKrZHdO8K7S08!TIxwZG&<8L1L#43rq0V&(D-phja1X*Zgy#@mM(9B3LiieC zK*><&5`@bTrXpk_tVCFkum#}>gl7<%5!w+t5e_4qS~}DTAS5G9LAU`SAK`X{EeP8X z>Jfg6(1P$L!UqUnBP6aK>Wo2{ijaknhp-;u9)w2`oTI<@C$_BA-sw34}`-A z@oT|BNJf~7uoR&X;ZB4t2sH>#A^aAh1>r9UhY*hc9?C-qApCJXP;(2=xd*LRgKEg)kH0DulrZ{SdluL3<)}!&Z%m;~?kr?+Qqs0aUgZXN3U9f5zVVUIfzsu7kW{1%}Vp%Y;q z!c_=QAv6QO1L0=~6$q;lmLSYT7>|&IFc2XD;a|Y>FX%Yy8Bc-#CnGFCxDbJVOBPL% zc=?}ZJ5EBX6F^8tNJXeZSb~s&P>4{2VE%sn$Jx$J9;Ieg0;r*Tb&Gi*qP zf%x&oEpwa)Dl?p4pF77tXCL%iS+FWFBxj`j4~z%|R}~hl2^Iy`7L*nRmK78Qi~IE> zeqnL;is1MF(W%P{R;|j;&smvkbBhY{R|WG+0;{u&a_AS@+CWihKF}*mi%SB9MY*VjwmT%wo-=dKv^jyCfD45+AXuDD7OUdQj!D11WF2|+>!l8En=fcdoIl`Sr!s?S zPnokIkW;#<5KbJ4L8)kkl7Q!e{YK3QOvv{fs0$jGc03qzRc^l2Vd+|W zb5S6vFgIu7ki5K{Vd%XxoH@=cXR0&PndD4!=1cdVh2v|Tw1~4e&zLi7#++*=&sjKo z!OeP*fc)`+IbNS)Tju7Y!O$oDSB(q>N2=(%2Jt7A)4$)Z7eJ6gF$p z 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 z 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⁣zF8MC|uKI5HZu(q4w=dV1 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%0D8qC{ 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

      lRTHaki3*sOI}G{ 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

      UPYL%Pg0%Ky zj`*_&Ob|dPGtmKU1ut0xlm)TCH*^aDGv;G0+48~cs(lza;DxWGLbNm=8gqbI0W_dM zPB9E5YOO$7W^%d!FZHz!JqYDsQfRe=@JE^G#EgY;osIT}I|{%c3q%<}#0q2&9fCRl z;^VJ5Kvl-vglWE7Cqidq_T+O+#Iio$FC;>*jZZ?OMIi$D#shS%UW@9(m@QVIrsI#p z*dzn^inL&VCUL7wuSKSqI*Klf$#N>zCwdGMOmi0+^X)but)ahXBFEqgqA*5ar?nnv zXS=N!R9mrfj+VfvFupPJKneqgG0t{tF*s)7#v)@w26VSN1%T_pPRVCAigXJty(%4y z5yPt=G|5LLKcZHE+5|jH2gu|=?<@qSDC$|OnhV@{4_L{}0LBHV<6pTk6u~Y9Q1pN@ z9i&krgC*!6F(FpNZ4bsWKA0Y`2h3QB`N!q}%L8yc!Q9U?I5Fn5nwiW2NKU5JU^c2} z12_3V)9%uNT;SXBnQnoOuou;;jwS+BP>Y?8R<(3C0ls#r7h--JBpm57&2CgDCUUX?;2@n0;XY90FntIN zWpe@f7^LA6V?Z+G7IR%pmj3#39*ID z`0~w)@hBjl$uR-RB8x6`=8RQ}*5D}!raT{=IQoNvmN)=Ug;(!nr=5uvZQbY$no#GA zR(H^d+n4Cuf<`iP#yIK>PyqLPTWSLtlml3l3`52;t;UBd3d~mA{nf{lr?L5Xx~d}r zIRafsB9WM)P6QrVOC=z^XmE0a7KMac)lnb<;wB=~v7p@q$m`3ZdQp~E2S5*|gVMrC z*1dt+C>g3z_$i`eYP;VVr zet^TI4h!-N0I-ZXck9+Y7lV0V`ZF6-K-`pOiU3LmP&|F1m!RlaE--~j)C18h=+_T- zsP^F1oLM2_`25`L<;w#lVTDFMjgR#{LPzs1_hqA3Xsm2l-Q|^o)Cw4e+>t ze-6}+03vUo?vS$)2H`fq4glr?Bh{bI9Lz&K*{vHpN{trA#2rAdW6D8@f&m;enP4F& z1`8R$XALAgmkgy$G`y^q!8Z|8aw40IP%wat%FquZE;(3Yj6lHy5Nj}gASq>QNmXg7 zJ`AibQ@N5!3v9KHK^IT3Itj>VU;t#`G#MUEV6wOfk>gMUjn0=b^kXhSbq5!ZWZG!= z6u6Ao)nZah)LGHXiv15tBC;t6xeJSgDTFJB}tXcm$? z)h)dmuqRCbobjN$1hf{D+3~F#V6ty3iYZqR*EP`pqgy0>J*elOl_h2&;Z}t61y&Pr zJ1q?hCf@>zi2~4>>8%zWXetIsMG5TKEQXK&}J*1&k8($b29z}i^Ipk}yjEfj2V zB5YZJts|f{J}M+8s;$-yEy2jDYBBa@g1mgtDG7bSBb>w@JjQusAPKfVwAh1YYQP+9 z9b<^lx3WPW3w+R^kHy&6Y#C&ev2Os(+}8907%jL;F)?C~i7Wzw;TL7#YJIDYlC)l& zM>&EXxDb?uHE__3bt_~;LBtv^`3EDl;2OLUpgUSjjQn+JHu4P^Bws@jLRgytg4qHS zdT}OjoO}*|K+SJiGtDD$V44;j`!R|FfSF=a3H0G)tG9)!0ZU9;(F)A1%H^BOYU5Kd z3I=9tez5PB*%In1LKoj^ z_lHcJM`=By{JRc}C$3fNB(tf&aFf8;1GyeJxQHvz*I+=-*Jc2xp6M*+V7Wn-{iLVE z%Ptqd?=e0He9r+Ec&kc?g=9L~54tsUCJdV)@rM8;&l8Eq&qJr?XHoP%}$&C zz!n4cumXVjOmaTt_h9Ovgb&WR#R79SE7@9P(nh5x8@43x%qfGv|q zb+`yxb%3H^K_(u*wamXk6-)#JxtQydF=NNRNlwdjot$R}ePEL6!<1%1i11L7tYffx z!HhZ(4RYTKWtJ}zPvW=g^L<2A6R=-@_Icz2h%fJn8QEm*NXmpyH`%&j$OC~{C_RTU zGi_pt%iU518B2%{bUZjSN2fuM=Z!6MVBdkK8ly8NB=NJ2M1ox~@(0|=QBkXtj|bey zoDBUYnMnuonM`^!^gk`NPHce~DW-CgW3Axq2UH4xHZwf+L30Ocksos0$2mfe*5_q-=KrWRtvbG9X32kEo&7cGnNOvFw=0RXyim8=!o$C zjl!Ufe>=~gpH@5Zev81)wBLX&ab~I&uwXVUnWX$H+g6$Lv(oRoRs9Gi9%v7~(Zuho z6@Qsn{X6x3XB-gwwyOQ6K)1r2!;Ts=ZVFBN4`&mCUt@z`V}f5a^F>b%eoYE~O$>fb z2!4$ZevO-w;7@}NrbZ_O?Skpj!F1_hx-^q+T&pj}H7*z;4)OWRLB9N{#RXF%UyL1- zt2lamE4y*y2@T?CCimov3Bi;tj%Lam7o-9C3iuln%;}h5{>CsRiW?KmpP%Bm%(rl{ ziRxlYqBx!;>I_r~6n|+Fl@3(``}EQzYF4>l(LERW-hI-!Nz^tdpPA@TB-|PJKjTWG zH0S11+Ys)1#I1py25uY@2KvQ7+}i?i^AY!%zY%XBZa(ox;v{CGLuueglbJ--WhGJX zLvhNI2%%!f#EzX3oABUUvtx=l&w{UJ~ooMeccdxOYn?>+akvJ|;mz zA5Ov)PDZvGXAV9uF7ZM?HV^Or@l@aU)bUZ_rrhS|VTye)ch5z-B_#y8s$Pd?S$rW%a9E!2W)!LvPQ-5dp%<=g`+m3%?4u8^i9cWt7=1XJ#6QUs`Avl)=Jq}lxz`W+iE!h? zn9cQ9RlqfnXZqNNLUqjYxlnj=I?sh|G-CBIok*GgCpr-tF$!1jgES#!Cib}E@3SNM zA~Yaz5*m_k;!e!LA00x6(jB~=y!YsS-u~V}-VpCbdK3LBHOsq$n&G|do$0+#|4VPC zx6my5Yi<}FPPe1~p?h+=a5{UH)Bw5{N9i5HiRJX+^yLiT4CF+3BfUN7p7d1jbg#mj z=8d2u>GpIK-GS~%ccMGfUFfcKl((bz6}*}KlN#vN#0>C0<~7BbV;+kc7c+avtRXK` zV>t;NR`eAw+xryWkcD|!-f(YwFUR{F6+R?v$cfmGVo%2&jXe_kWbC%sy|H^@--+EH zJC)OoZiudnu8&?D-JK4W?}3kqn5dZLF)L!qV#;Gi#0-ylz!8R_F~eeZQRkvRj;3N* z54rk%b7Ho~bbCBBrd^CSMi^s@vB&g_nI1DRW_(Os%*Zxj;-YDedx&$0Z3u@G&B68X z!0%=(^Yv)Gi?^${o432ShqtG-qGH8FYO)U9qUc-j`NQ9PVi3jPV!FnPI(}PMDJ|x9PeE3Jnww(0`EfaBJX1F z5^s_>*~|6vynL^~EA)!IVz0!T;+1-3Ub#0l7(S7nP0yj{((~x~^a6Szy@*~+FQJp@ zWSUF!Xg)2Vg|vtk(-Jy`meMj>PN&ieT1ltTDq2lzXf3Uy^|XOD(k9wWTWBk7qwTbV zcG51|O{dctbS9leXVV@!ht8$*=zO|>E~J;zMf5Vdm@c79=`y;UuAnRF<@5@=ie5=q z)2rwjdNsXMeN$;Xxq<7OV(J#}l z(0k~;^sDr1^y~B+^qcfP`YrlxdO!UR{Vx3;{XTtw{(wG6AEFP_N9d#Uhx9S}IDLXX zNuQ!m(;v}i=(F@W`aJzH{R#ak{Tcl^{RRCceS!Xp{+j-V{+7N-U!uRGFVo-CSLmzs zHTnnoNBSrFXZjcVI(>t_N#CM>rGKMu)4$Vy(03jxK|QO1wU+e+YaOeR)x>IMt!Hgu zZDeg?ZDws@ZDnm^J;{2S^$cq}>si)wtR1Z9Nt1uz_X=wdYcK0n)@!WSS#Pl3WbI?U z#d@2ypY;ywUDkW7_gM#62U&+$hgnBhM_C`Tjy)9qfyn+34PDq>+1=RP**(}j*&*y+ z?B47??7r-N?EdTl?1AjZ*n`*{b~HPN{WyCtJC;3!J(N9+J)Av)9mgKY9>pHbjwhYl z|Kdlp$FRq;6WHU}4%4E9X+EOsJ$HhT_xE_)t(K6?Rs zA$t*fF?$I+iJi>mvU&fj_+vw3JH&R0?GxK0c0laN*uk;mVyDH1#Ij;L$99kHAKN?j z@z{jexY((&OJX^(@v*~VC&tc<9T-c;#>P&Ho&7(w_5Veo{;$*jrNIBC!2b~iG=sH+ zb%XVT4TFt?O@qyYErYFtZG-KD9fO^NU4z|&(+6h^&K#UISQD*{)97=c+ zE2;;7g$V=cL3FR^Qwh=0&y3wZ_Svz|jomSJ%-FGGCy!m0P?WGVL5Mj+T+Ha0u9!1y zkKx1&ig^$7hT)itJQ&meHT{1{flb_A5?1QW#`nejwZrsxg8ruISyOH5+^Bwl006YNg^eRiwVjw9s;N-RdTu z`3ko^FPXQQw}}5+%0&6c@{rU><+qy7*n;kE3bVeI&hw;u?&ZH&bhGGSNv8^ZRp=^7 zT|wPc(K_yS?zhrCB?szm=26^VWly;#)r~C}R=%n%ep8|#UG$FllK5iEJ$X;{Z_PhD zzb_e8scTGc+}3!nDN1}>v_kPw`a8uR)c(-u7AZHsRnV2YHt(O(A+A0tY{@`-zsjkb zuE?JknVer`*RGqLQqNsd_gf>cyuhvA!r;F6f5o-CX&riaV-dn&)&(qaIZ=4 zks;6cBx7b)$g-TWvt><{nmR>8|IJp}eq*X5*7LVuwA?5!QGcc0ue)m;VH;|H)xIk0 zKyk{-k()bhKD6aYWuv38oGn?m;JqB)w(r}n`?d* zyesS_-z(m$=#^&CmRVnNuFgAAA+5@+es1lX8ywCZ>%Un3wA5=py}VOHxo|}aTYO%1 zNw?21%`(aIwmmcJtvq|dhLz`5+E=q`uh%`j?ukZglS#2xS!7La<~DECa|+{Z#kSWi z9XF}nnZnJIbj>fism^w;vo1wNmz8sCdvGUjx+CguonotK8evfi4i@aG_^Q5Uts-UE z<`_#@`Iw6BOCyAb%dTcGUMDz8yAD=sK9Rr#u?HG^<4 z`mXkZUS~XO7Fq6EX4pk`sUybSVqa!`AmHo5YP1zo|T#_Iy@S&a~X;l|L6ptv=A$wOQOO zYYyRc;$?_7Nh~RMr3>VdibIMzWe3$V)k*aY{S@^F+e3K$xSEBpHFvY$tv);2H z|M}v3EB05XuiB+QUcRj7UGxbwJ2xm|h3 zMU%w472Vab8i8@TdA1|daoLfV&dSay*j*4&*sti{rKX~5Mn&e^qIt?6($48F>iX(A zuGHmYs=r?SS3`*V+5FUvJGeW!ySN*9+jwXB3j}uxG6Z)7Vo|iHSoE`Km!w>FNjXuy zSRJq7Yn+-vdbx3l?SSKh%hD} zo5^EcnZ>u1EuCFUf-B#spoU-1rD)0yMSLb ztLpLU2=g88Wd0Dok-t%l{q@AN1i(` zzo&rLF3}>ZzK4YL3@=>N6T<=Ka&~%(~>pu;%saKi@EQ zvqHF2_@^jB{E6&O-9@*pMqRsa%M!s<;bQUqlvxG2^_tD+w#?0nbf=eg_1sr~soAmN zLgxNjgPqlUoO>(9AbnSsnrhJ;)pj<8nEVmU;3OXPX8Kz7k{;YG9MGGWN*t~R#?@^x+nG1Em`&mS5f-W z`jX6^c|-D?`D=`H(O2aMsv>JQHX4M(q$- z$M}PBvsq^^w0CyQ%UYCwApftWeT(9Xo+=3~y5!X^Ht5s#($dK z_Ep?zywyCuK&rT_Sf~xr&o)KdPq^N8%*cEv`(w|6yeat|N)k$bDt)42OD*3~yrr{R zwkmG(-GaZ?tXBNo$m0Gg`cpbaek}DF#Y#=FE8P9A=ck&j3aavAVJ81~^X4+Ga&hHj z%Q}^<7qFEUy=nC(qbp-Ze($2Nl7Xv^uW{8KUH(GdApTw96s5?#G<|$#QvHYZaci%X zeV`bl{#!GZ`>Ci(u|zk$?d)6WPRGMU{TCZC4T1^kvFv zkwx637^D0q?FKJI`>$@S^Zoo2`Lm0Xmz^uVUOK3(u3~;w=E}NN*=yo!$J8yUchnzg z+*JQQm&cnYNEEGAchY@qPIN@M^jSleovJTy_*m3e{+{BjGcAAgvW-iZ$+l+P6^N>C z)gI^FQ^uNhl6 zVe034U3IP~v-mI5OO=0C{#E_F@C#9vyjE4GmT10jFf_iwA0+r%$Pq0N{UZ87JYOe^)*&^)*Gfva_>-_Ds&fgHTqnAJ5vYKC{vDUnfWQpAlrD` zen*uv(j{|E%NUYj&N%7`$xX`($v5WT%D-69weY#6lZzTlJ}qBWv8Xbw>UPzj>S@*D z>a1#Q%{MjA)SDWXt?l!~rpD%`_S^{WV_Ye>Nsul)EgdI2DT`4|QXSU(3t`+T=DE(- zGl3Xc@McBksyFL7YsaMgF8#Opx~`+O(SAKcyezjQv+U~1Z<{46Ua6g`oW#4tdyUsl z!b$yF@uT9PnyZc1zieD$x?$O9&2#?hOz`aU49ZpIU(HV_x?K8F*$b5~tejH4bIr!u zv2|b9w`+Qfdw|OldSt)IqLlqS)0N!P_SJ`L^^MM^*usyhBbs&fw^MeAde==Bmq}w) zJM`lm)#=*YRZA}xr&rCc6W4cH+h=WUqbmE*hIVPzv~=TB<{hgqG`jSQ%zdqg%X>G! z-}rA;g}cD;m!cPUWO|w>-gHPXLHM2Uyu4IBRMSN_6L&EOnX*m4S$bLY_Apmw<{;07 zoOhR|l-!ctuPR=-t$J8={X>PxHDYo5<*C;URUT|e8yig z%v#SHPpABp{BQG{mU4>b7PVVGu6k;twvMy)8s8&4Df&(n$$vp|L&lR&&s?Q2C$^FsuSI*jkZ0XI%i$e+5t`7HhjcylC9C6FCAYQv6@qNkeAJ0Aj}fEHH-9W^GMg;)r0Cj z^rL7#Ph9tMtxZ0r^nTh;1@F~ut46N< zl2hS&G5vb(&4L#S-!7V7a-`(M@^#gUwU<+l%4VovG&Y(_Y_HiTdX82P=3mLBrTx`L zO@T?{_}$a5z*YQvX`dDI>h`WbR;cv+T_7ktRMDmG$NYwZ3FVhkXXTFK{>ELexTtggakwLa<8mhoYA%K~<{ip&qZc zt6x?BrtPYK$~4gIatkx3c&6lLmrO3rE6rK)UiDYim8);B-q4V{F0}c|ro%$1{`Z`o z<|@ajtb;YX*Jd@wIycEWSx;K;*KSyQ!PBoURTgS_Re#Sqhd0vwx%utdA(gKdiPz4= zyJws9PuWPt$f6OM?ZubtU)}s7m&;S~J^VSsEj0_pgJl~O16Au(FRK1j4N})=Ueis{ zpV7Z$ndMlKw1mowiJ2t#xPD zzUBH&yifg%A-VQ??c9bufn7FSE>SkA?m26h4e;!*`EHG(d0+ZK-h1{}+_dLjBUjKx zJYFW1?UHMh4eBPN(j4t7%=xzbdQFeI`*q1{WAmouy&!y6HAtE*@22U-PZjJEoDxvN zE)ua!CX>q7Defp&rR~?O(~UA@nCDpbTfVh?mh(C8(rk3P(?84*sXzDR<}WG~7YYkM zU7Aru3-uM&%I_;XRkK&kuj#yoRoA($?-MzVqnharpRYT`|3uh994hOid``Q?@R)ON z?v;YyOV|~ny2^%&%66M)ikj4W)tj98nfl!K^1m-UXa6Ph#cGyCYx_%3S}@MKSb1mD z&t-=di|QXs&r5MDk7`WD8b@kPVqN!Uf%vGYW5YuE({+`CWbRLb^_87g$gr4Gm-BV`*Ay8QaapfqWUKyA7wR_{4rVkjox}Y{wS@bX^r@8RH3!`ti|&^sl)hKG zr?zS3Gs}NZtJb|}Sg|tK{GDTlb3*pGy!ok~;up(yt-sAXsQOyhpqCom=7Tv&nI}u$ zDj8mzT;GxZx3nR((voF0WZchuqvki+#Tr{<-@4)z-{)V;9bOU7GYV5hr*t2gk2{KT zo+wg<9%>K)EmLFLE?3Vk2R|+%p-Yi^Evas+6n^sj*BJgNDc7d*; z##NBhRR7b4F1+;OO*&rT_H{pQDoBybzF)q-aU5^3aIxr==z=I*HPTRTEH=+@a2*RX zU&_3mCH5pP8(H>a)R81F}qimCwuIJBC?pCib ze{LV29htkPcU=H3O9MXNm5H<;9$OMfkIE}5o2tk!wv7f!1)TYi>rOzl#%ENA4Z zKX^8EU)w}SsQbHYOTMK_Qk`G(t?DEFVb8hz&&r0a{jFhB#r5T*HXRT<)HOz>vuFBq zHRo%lHuH>kvO97==U$Y?$xW#z6*~kh)h1OhO%6oTKWB8AT+RuZLkjt&8%o!gDOYW) zxmuIGdO+jc#@)P~29y1S(Ub&o6Daa{0ujp4$n;_Q^YvS)BhyEp zYOg+I9>SeoxpJMNF>7f^^F96nSxU}xd9lLnxm_!l7xMU#@&%bk3x6njtM=pCwE50N+0(6@n z^28h8-f}{^Pd?PN!F<~OqxcJ}M761Oo%w~0|C)uH(k#z%FY`VW?bF4XcRCK$zQ}Vf zdv8lSu1;IxigS0b%o2|<&)axAZC&9mp*nZC{Wv$nb6_f0>^(=rdck_E>s?-l)0q-%O>OP(Rx z7Fu2*S1T^q`)B=@v!|$c$@+@1f??(_w%o|knZ3fW^@EjDb<38%T*H&Ru8ArtSr;Nw zb6*z>kWa~+P;$CHR{dRWg(zRmF4|R@P`!FhO4Dug?n==Uk=h9DK8G;pdiA8*c!_{F zLU2@gLbP2`q}rw_(|)RtG=FI}yK0;hvLu)hl|+tGIGr zC+^DXnYCS-U*s=UHOluX-c)_5zpFoB_{y}{`nfgA`MT?gjA5Ra3aX2#l0_BADoR&I zuWG->SXb28e*H3Sy>6_%+>z}(S^Q7&`_9VZw^saBWi-E1KCSuB#{N!i(ew&ieFoPf z;-|6gKf6y=j#~cQ%HhJ!Vxy94-eC#PF3GH;}3RZ7@o#)aXHY%4d=kDfy$&coq6x>j(HeA&2$HyZCWwr^_MqTBkcDcjy#__XlD^be|zsg`K! zw2!+NWz1Omdy%{3M#bZGBiGIryEmSfYw1)+eksXJ@xA z^PkM?g&`%&N|vlRUFQ_6-BOXis$}fiPpe1qYs4AVHv6HPcBN-E+swahUe9gjcG+aF zK2T|?q^!$aO?i^i|95ufJE*&GdvZr`$8aZbr*UU;XLD1yGA=f~xb~WAZnv_I>NVUg z+^yVg+^4uNbN6yz=bq-C;vV82;eNpVjQb7uI`>=dpWH}ZDv#zVcxgN-ZviidSH-L4 zHS-F2R$e-nI(Kae<44WpTc+W^Y|tF4g5;}tNcCuWBlX%z5EaO zpYp%qU*TWpU*_N7|IPn{A1MeCgbI2IdJ1|7`U#>1Qv?$Q(*#omGX=8*LP3&1EYJ!5 zDzFM{0+*mfP$u|1rADw)P%EextQD*iGzy*(JS%ug@Vwv!!A`+m!7GA2f|mua3EmML z790~?5L^^Umj5WYF1RK5L-4PFEsPTO5Oxv{6^;;&7A6QM3wgr1!X?5ap-Lzg+JxCc zt1wGgEG!bP7Cs?t5M~Igg!RH5wa?Y=622(hFMLgSKzK^{neZFoW#Luf_2!Gh+rmGD ze+mB!%cS>lo6QQ~Rh z(c%f>;o^Z}uDDk05w8)e#TnvUak{ucTqrIP=ZGuBb>ijXqvEH;Z;H2zcZm;)KNRl} z?-YL^en$MRc)$2_@fGn^ac4;n$$jw+@pbWC@pt0Ml35bHBuO$_qLj>&q)4QaNs7Vkqgqy-o`8H!*%7m1$DU(v{DTb8z6i13JWqC?TN_EP%lqXVZQ?{qHTmPSe=q*2n2((cke(q7V|k^#~o z(uvYZQm%BWbe5DSwMyTYR!OzeV(CihTIn|FUgSc31Yd?4Il&*?n24yuG}OyubWeORRjPe3X2we3E>I{9J)V&X;rL zsdAZIC)dc$a);b1&y$zRH_KJLoxG>zd*nytKghq5uaVVY9)PAY6 zQXQ#_QpcxGNY$mW`_Prru4xm)b!QrRb#?t2mQ7 zLNP%xLor7&Pccg&P)HQ13WdU`uqx6OSqhILPf=woP?RXj70)W(R2)zCFytxsA~nlO!rRt~ZtLm!iubQBmsG6&qqnf4Ss-!BhO0CkV z45|exk19u1pxVEsShY=cK=py@L)978N2*U%msMY@zEoXMeW$vl`a$)h>KE0os@tkt zs^3+Ass2^5)RF2mwNf3W?yByk9!q zW$I#ewYo}OuU?_vqF%3VR&P`9P`{|&ul`hhPyN06FZHkLuhn}sUUjraqv@;Zq8YB~ zq#2{>uj#3Y(+tsc)=bf)Y7#XzO|C|*S*)3_N!I8!b2J9cY>h)>*T^-cn$?}N{Hp1w?WA3xouM739jaZdovEFs9jP6sovxj&or|Z)xmuZ4u1&@Jq-?EQYt&|F z)!HKY^(s;-4yWuy(T?1vjZ|Gwj zU<@-3Ha>2QGmbNkH%>H8FitWq@hmi^7$wGJqs*u>rs27Fp0UhWZmeFl(YV#P)A)w* zpz(G{Jr@b^VjC@%s0&Y%%{yq%-77DY>!#yTZUU^S&}Vd zEnLf9OPob+(OYsY#g?s>TFZ-;CoG#S8!hFQ-L`#}Y|CqwZI-tzovo`a%Pb+*% zY0b0RtzzpkybPWUoUQ3rxs|qRttxApwG>aj_E>jY&sg8H9g{Xucu`nC0K z>p|;t*3q_l>o)5q>pJVJ)^DsoSVL|7ZC-18``^~ztkn`Dcz)!A0tw%ICdPuZTfHQ9PEf7^D@_JQq9 z+g{r)+c&newr_1O*uJ#=WV>ezv-etl*VfJ6%RXk~Ap0cyMEh4clkGQ}7ue_67uorC zxm|2m*wuEeJt zIevAVcf8~H%yHQ9wPUyA700`dw;UH7HyvL%esToa>z5yDOc4JA1m?yIyl1bzXJ8={(~6#rci%r1J;oIp<;LUFR3h z@137Ge{$Y%j&iwNqg{PnnJ%?!hU;-ikBoEWxRPCiTytDgTwK>+m)AAWHOW=xdcoD~ z`hVDa54gs%>wbLV-Zt)zOI!phG=Y#%?*a*RB!LP7gg~eO0)bEgwV@0{nHi=J0}L~6 zN!-^xUbnbq;}VxRYsY2X?KqAdJ1%jz^FQzC>hZ*|8#_+&OFsX-pO5Z6<$KQU=iVn~ zo<1`Bm$QFA`<~f*XFoLi=Gg~kKQnuA_RnTNFnecKpL%-AKKH%ZpU?hwR-5|KY-j2R zv%=Kh&T3N6O#N*3Y^so2Os%ArQ>oNY>c{XBvDH*56-e!*E~h>KuMK=l>J_P%rCyo3 zFLi(FHL0(pK9l-h>VeefQa?<6KlR1b6X%{h_si7N=l*E!sdK+gy-k^I|NHzs>8GV%kZwxz(`{)%T9{U*RcUQnmo}ws=|DP@uB2DfE9s5&mGq7D%hP|6 zzAyde^as=Tr$3bbMEcX|ucyD7{#yDM>7S*a>iUy~CoTNx!gCg0xX`uGvCzE0SNlFESs^d@}Pu=7$Sk&3q&C?aX&F-_QIg z^RJm7W`3UeS>`d>M`s_KeM|DOGI_K$M^n*C+=N7)}|pPaiV_r%_C<`enp{7^ocKb^1Sm-0LLbNS2pm*#Kh-ruPySu`zsY|*{}1^u zYK>Hx}Mr`0K)l3V&5t zyYx4Oj}|^&_+;TTg}*O+zVL;@mkM7ie7*3Gg?}mhYvEDFrxu@7d|Xjfd~Wf1#TOOD z#ipX9=qeV9k10BePcGVv#$vV@EoO@G;#_gQm@Li~4~sX8cZwH^w~G74bHyvgi^Y-R zUh!ka_ZR=R_{rj1i}x45RQyiy>7{3t{;~M2Vz_jw^!U;6N9|mtJ0aZRusDSC!sU zdUNSbr8kuBE4`=mzS3WpK2Z8x>C>eLOJ6T34}MVkQRye8pO$`EdR+NY_nm&j>9?PL$LaZVe|`G?(;q$knbQxP z{@Uq(JpG;1KR*47(+}Q!-11|VpS=8x<>xLxZ~0G`S<6k!+GXXkb=kD+Sq>}*mq(Y! zmlMki%jxC0<=pbpa(Vgm@|oqc%j?Sr%U758mtVhp$^E+JFD`#;`SZ(PTK>@T7nVP} z{KSm|{uTGiub1anW>=ysv6alq+REn2_R8|g>dH%3 zuCKguUS$W^e2Ugy>@{yH~ul(K0=T|wRXTm8oBS5`m0`jgckul{oN>e{2% zezp3G)i19;ZtcOdRlL@<_MA20TIZT>O}^$@Gp=>4wXXfi+H=>|*Y?+5vvz0g zxAB?Nw_(S$pQ0@2-7f?Kf+WKJ&S?C!cx$+RxS= zf99)eKU%xzOv9O%oO#ch?9AiVf3-Gqrsa(4OmO|onf#gQGp|20duH{_dc)ppFi{QGw(X{g)^Tz^ZqmUpZV;Wmz`m)|NEJrocWXW=dQP{ zzj*!G>(5&M^%>oIWIeEMUe~Wb>a1$leP z>y`CO>mONv=lUnt?_2-W`e)X^wEnI22iJeG{-m?dJp1Iczg_?3`s2oQetLW3(Hp-y`}B<`Zrro+i?dJK=-SY3NH>%loQ>v<=Wm2J zMmH8W>>JLF%!Yp>u`#fi?rf}X+`I9yjrVN4Z{t%NpS|(gjSp?S zW#ex)?%#OV#t$}rwDHxAr*7V}`P+@3Zv1THk2gQP@$}8-Y(9IlVUxAlxhdI{Z}K*k zn?0L`P0!}wW@vMKb9!@Sv$A=6GrL*deA{Mvb9Hlf^UCHMHupAPzIkEum78ze{Hx73 zZGLd`Lz@q5es1&gn_t@e#pa{7e!cmV&41eb(dJ{ep0f3%t!Hj^Z@p-Xv(>WIx~1Rh z*-~yvwq#rOtru>Ew?bR7t%t$Q7-um;c*KOUq z_2#X2ZoOygueRQ|^@Xhmx4yLX?X90|{e0`u+t1m4+V)enU$FhcZO*o2TfaTD?b$YM zo3~5bGuz4S@$L2P)$KFeuiAdu_T}wA+y3+I{q0w5e`x#T+aK8e!uEH!f4u$e?Qd@X zaQj*3zPkPO?VoLbdHajoPdWGabI(8bwe9Ded)m1_IroxtqI0j^<(_Ljr#aVjPJhmR zuJ4@loaLPF+|aq;x#@GG=aT1A=Q8KY=a$c%Keu!4%DJoOZk*dYw|`D?UVmPD-hAGE z-g(}2-g|!heDeI_`NH|t^IPZF&u^crU^EWyikb+A;48?o8~2cUpELJKmk#PI{-bv$C_X zv%Yg?=iJWr&efgEJJ)vhc3!jdvYprMym9CLoj2{gcjvEnKD_g>oiFZuW9Qd9zuNik z&Tn^~bn&qlpMCKe7oT_WnHT@`;)^f7;Nnv*axaQ5Dlf_}8ZR0yYA)I@S}vL{IxqS! z4qqI<7`Zrc@z%vV7hiGl^%w8G_?H*IaPeCgzkczbFaF@-#-*QJeC(xPT>Rz5r(b&Z zCDx^TF1_f|b1psk67Q1alK7JR($6pUU2B@@Fr9 zq zSKoN`byr`1_1e|@u739FKV1E%tKYi%xvL+%`lYL%y87X(-@N+#YtOp&%xjOn_V{a0 zyC%8TdQE(dbxm)Y3_UB7Yt=JmbnFTMV%>wj_m_1E8h{ax4ZyZ+wmAHDw5)CaGB{QBQs|IGCVu7CFW zgV(=y{ae?+ew}rr=|=mFjvIy>_8WaSY&Y^ZhHr#!jNBN#5xbGTk-Tx?#?2eoZ|vT9 z&5ggf@unMZzVXHzZ@uyM8}GPr-;Gb)_}Gn)-1ztn$JT>4?%Dm!jbGe&%T+GVAbbn%ha({Y%YX9~7Z`^Ynx&L?j zf4~30{+IW^vj6q{Z|wi${tx!QyZ`@Zy7pgT@2S0q>yc zp!uNXp#7lZKzPt|(0$N%;5cv|xDNscnS-kbYX_GPZXE0$+&OsZ!K)75dhou3j~?82 zaR0$45B~1p(+A%;`1-*&4<0!9+JWNMj}Cr#@UI8YzV)nIPrUWaTTi+5xLZ%S^^99j zy7ib_?YCZVi*t*8i*-wItM``hmg$z}R`6E%R{U1(*5a*i-}>IIf4%j@!zUbm7yet} z;|^O6xrg^2HXgqCu;=jEhtD|FA8HRZho(dG;mBd=aN^K?=sFxcOdoC?ZXCY$Fm+fs z+&_Hf;j0hdeE6Zm_aDCN@EwQmJiPz#lZPKT{QTkHAO8IC9}oZK@CS##Ieh-@7uNK}yM6xlmD|^EU%q{K`_FE_`u00+zvlMqZ;$Q%?d?z8{^adX-G1Qq zgSWqY`%AaKdiz_q|LOJ*ZvW)=PjCP1_AhS#>h`a1|K|4N?>ynoU*?{Dhjpjzj^>W_ zj_1z6oyZ;dr?z*-?!@lI?*=XP)f+)ggM z0f{T(c5%gA30KOM0nbc&u7TUl?co}^CT=g+%(ZZ>TpQQUb#R^BKCX-F2E2z0|LB(M z<@&gOZs3?b)7O6o&Eq|sR~D~<*T`e@I6N+|iPy|);kEMGczj+vuY)Jxb@GHf5wD9U z=1F)`o{T5wDR@eril^pjcv_y0r{}qO9$r6hfam4;cmduZFUT9>4f95L@ZSh|Vcr-I z{!svLf*0k*cyV5WH_3zl7R^iYW_Yu_6mO0<4{h^5Z2KOr?T_gG@Db3^5kt)~0BvIR zqQuOyV3}`NBvH-C>Y=em^)7%m$(lK)Y5IdB;ZY5bP=ELc%pRMclRb{}Pm)iZAWi>| z&99g*;Y;~4zMQY%EBPwEny)#bJtwvMcau@?Hfw3%|Bvu@~QZj1G@JEiVjwov54RO{Yf0%)UU$AemHRv034U_PGIC$|NV&@-o&6Yp zQqQZh@rOZ{5C$H-_Gyg3;3OUAz#Gr`aiMH z{$I=^tEsK2p^4vgyzWMnv^TM_>}cX*+1bRwQqaU}QXwV9T-emyq(MrKc~?^tma--_ zmZGK>EEP>!EX7T&SSm5sVa{xU>jp}ZDRMb&1?(X%C@oXYzN!P?qj>yZnlTr&mLfV**>by;q-F`I9`sA z7(dQW@F)LI_Re%dtF3i1J>h!lq}4Gu@a-tI@r^|5I01F)R4*;VOld5PR5`F;HTuGplY z(0%HZR8_^7Y%z^M8P%xZmHq=3t>e_G23JQXrJEHsy4X5{$0t@$Kc9dpuAvHzv&x-1 zWgr?h^@9SZV&Iob99Kb7rMMs;=@NiEuHqr43G-%`xEH?X6<1MIE(Jbf>XwOYM>5M~ ziz}gNb&08;8-Ns*%*iJ42MxHss^sK+4th~GouuP*ojN6kTHCM{e3ue>qIM+o9j=^m z0W5?l*L04`PMr$LVgkyCtXb;q0#4-Wa*17CHVNR;vbZ1(tu0|M%HoQ6yhjE8 zr07G2xg7ITrySa&)+p3Ytp?;O_^4e0v~E<)K_8Vag{zq!Ym?Hb)EKlbuO+UlTFY2E zmw|YU8pfPf!I4*r(z`U^r3c17PG%w{?Iw6OjBhPX!zeIQkIROh!m?yn!6GydGUla< zn+Lyfm)^*wh}bO*#(gvrMgSO zhWT?EPMy*M-U51!!wCN~eO6(1vAq=Tcycj(^t;^18NgO)wb7bB*8eTrcmm;==DG)Fwn!@HH7f+MZVnxX4jaODY|gK`2_%n=fH zV4dGZ+V0dTBearhi1y^5{v}#2!F64r`4UZ4y^2ZfiPib-ROZdaV@PHzYP3<&4ePd= zDy~L%+0~@`Lox&PWg|cFW+c5R^_1?}x|;APUQrQkA;c&6Xr|d01t$a+TX`H^I7F zf?cQtteR0v2;^DDTgWx2t6+@p((BxMcbj=prtCAIoJ+<}WtAA_C1Mh_7RcCl1EvRY zYV zcTJ#e408pJR21n2M*Ao0*0S1chcy)k)S@GSScnWzR?zQMMgU9wkT8bT2HEF ztY-!hJZL{e6UD4Mg_jfXWeM4;iDdwB+WKJ}wen**Y9-XIAGbZcyXwbfg*bJMy46}wNTjfn_a;ai#Xsb(uYF zoms&Qj7gKhEuM$5wRxmM3T-8r7W8TdZk~=&HE(y94#0U}HcL2zlwKlp5>Ka2x!~U2|h)JxH#pT^GC-Km7i0a}x>i4{RH&*9Q*&1FWU>4i~BsInl*0i`1& z><7EfU}5A zWCz6MX7Okbr?b4}^YE@BGn_jQow(?csm}{KP{!+T zqWozl$&B#(+X%Mf*h$ik@>Zg)`s#ue0>3NCcru~n&HdxVwgu1)WY;ole>l3UzY+Ev z56(;lU6;IHK-1k2?K=sVGD!Nl_&izlC_?!J*_A5X*;07_QmsC5zmlfmcEX@*h=(in z@D?X{UWJbuEqnVrF`8L`YmjUE%jAjaZXezKs($zl^;5H5QBe=P4XPfIlUn=D{r!5Y zxD9rr5wscHl~q&^i465NRnFOO2Q+WsBpoGlGitH{-G{t`NbO1&L;p}dPMzupRDd9T z{oZ3XLhQ9sc#^#bumk-~8WHxvf6S6;5n|Yn1FobAK|Tzh5%`S4=Xg?|FfMYKk3ql& zPr#o#RS+HbF-CAHn41ZB4{_v}T{}5dy%0@gBzjUlVhmig--v$Wv}}r|CTXg^<^;&) zc=MRP3z1|SpCH88*MWaGNzLe4=7 zPE;&|b&;icKr9%gqn8?O`|4WOGSG^4eBuS3UV)mRZQQt9q$Gm14Rj3X6^+O4iuL0U zHx~580Usi)OE3_;>)G(QO^xqD+i}L|2nWO<(_-6eD2R-RJK~QhDQMVook-3=C>XR7 zX&FOuWJ^(fR7PKNI2lKJ z=epo*BV#@YH3{*AU6l6W?Hg`l1Mr*accmVpH4>ePlx8d^8DrkwRWoK~#yS^p=Or~} zdacB;ZYSEQts{)PbJZ>*v=ZMGuh2Vyi=ef|IAN5V9i%P`>4SxVhEp7(iG;4p2D)C< zyT~l}(P$_A1jC1Q=c47c)*qD#5`m zTx`FE=mtS%#1)){eLX{;g+m|@!Y2XyV0a)jFoL#W$h`yONK@?`gZBp>wbuzRT!eV7 zj|`}EGlB{7WCXV_Xmxa8VjwmUA4t&nNt&WOxUEw(ZxT+^w8|k6!A;R)R%;E(foaBl zxeMu8K*nK>NR2v!-;#ni85S|FD^&Be50@ZK)9|eogC0lhd{@|%p~ose;ML~_bhsCX zY*|1@jZ2U(GVF>#7mzQ3htfc^rZT{RQ7nT@bmU1rL{yq$FHY$v!NJ?aqI8P5(XcsLiQ{{>XZ1R3RV z_Siah0B)GXXd~=O8?kd9v+o1mgEAN7?qk|&TRqBtlyl_+P!^Oj*kxXLvuRMtgZ=9v z^VcM{$o$>_#3#7l0!~iOD!4;>8)2^oK{kYbh9M6jRrNoLbQtnEu;F!1stm9f{CYu` z80MjgarcP9j%KMlyAs_~Ju-n@oP~96z$Z$^7lvb@^kHQ=YwbNb}>|cv; z3Umo?(mUyG?R5-`U`Ng%S_dcVEK+ljSGrS>H|kEEDw62pGUTECSxXXR4%NJuuSt6s zy!`@&!2>=rUXiICX0`)9S@bdkI4TJk^PK}t9zJ0*6N`wXP$s;~!CjI*Whv>Bx8NOC zwP`b^0qvr>q1PfQ5{s0$1XKmA`b+{CseWbI+u&pQ${?wLM#hM!lqYBh%$Ut+#yJS+ z3yg7vI~mM6$LE8ajfjq=JdnX?Vop&HmzoJG)764h>qA<#L0gZKQa=H6!}m4Ok;Mb8 z9K@B`;p_B`f);MQJ^}a>)%g?x*HtGu^2(&dbr`j&UBc8xg%Y0<5pu}$)*K@m$H@rF zd;>5i(mFp?A88WJRj8Z7wQE4S+o$%4L>gbO&*U@u^u$(&We?%1J{B1@GF$fh&^DhL zd|Kg?hFP`L`LFuXo*=7g7O)R?)Jw@p;Xuy$5H@a*yHM9h5DBA#P<~S0-THo7Ewu^K%fkHEdOSuRtw$mhhA zmoOsb*n6vN%*VBN_l|?CmBh0)ScSZ9kEB}TfN}_Pz(hDs5#b|~5ld(NtZJ#1*e_B0?i;hXfO=-460n^F?JPy42PWoW|!T~`pa zGc*T(6Yx!gWR@YJ>X`$+$vp4VSkuQel(v>cU0Q2LZ^oAeOq;x`E9aBRdK}G;T-PE< z8li1`c_+4O6h}Zvw{ejXyOKRiRyppVb{NHB5}%hC^$r>hWWCwo-ZOJ-e7Xg*>JE8t zU6i6)2tUH+bJI7Bk}vP%(>J1uuZ;eCF@CW8)gH0^9H1KEqqB%KJa~_G1JS@}_?wY# zArij76{t3UJLD6cvppS97Nj|$1Zoucix3}&V83?y+vz%mew|h9XSq6EfKX*k60jH% zvwI2xsh?{V;0ki#a|+A~qmL=OTxN%U%K%R$Ih0!XL@_=?GzM&kL_xHzFn%WVq9l^4 zl?ph41iqJpQiB>DZiwAEkkY|~l%X1_r?0CC#sw*$iF=Q*R~=DMVI`0YjwSqD0k+wUU2;G6== zya1$@)XE6FlYI;j!`R}O ze*{|?21(Q(hu5}KIIkf@e1yaaKVKK^9QQ8@<3!d8GdV%%npgNHzD|<#=lmIz%oF*X ze-R>N8aW|&=)^TwAak(fpQi0o{!yR{!UccU@5Yg6Qpkie{zZS@F9OSELkxEgRd=@( z;s6joj{v79uv6RKA4oTek-$8Tb4l4{utJF}I>b^=v|@v!MA?SP;q z&;*ho`Cg*r@1k!zRcn($4f-Ly403Tm0(nd&52&E5CTV~Je7bU?5yCLrT?TKE|5@mViEBM5z^W8&bMJ3EJNi@EPEz!vkXa zL+l_LWvp?Vyc!9PDJb}SLkJN#3()Cj# zBo?>QF?ksEVS=i_s4h9jkPAURgj6svO7t~9R4KsLb;10ZV4aNzMgS8bxFSfX)Jb;b zG?B~bGj788ladJL~*c9=59Mc4`X90Bcfq0+%HBjI1%0ZA#rl+rxRTQ_qe=)SQAn=ukA%nqIKx;Rw&8 zpElIAK+Z?1l}5JH6pS}oNa-~k!uS=zsN4ZK;hD4a>IJZHg|Pv z291Nd!QR1c;0=Q*XoYI9EL056ix&(M#K;G`6CWJt0|y#4EEr7nQ2)weR5SX3(Rv1Vk|S+26<@R zP3}PwdIvL6Y4kW?b`OR~++u25a8z5B9%#V;{1Qh^HwNRVrrR=nf+a*ot5X#Qi&3;% zB(+z_{u>;W<18mko%9U*5jjG8TT~6BLa z9dbHyzz&5Gk1}k=X?l@?io-1^K{OUR-qpsoS|({ridVusED*^ImQ#cCG@_rTj(p65 zEKTGF^EBQXYT9X#r-;r>=3}0$k`Y}ERbS=_o+;(ld1Y!SIs+DAydPCH**Xt7;G7V7 z8gy0dQ9e#u1iPWmqKXhJ3m{#hHA1o;#EjFr(^w?>5|k;3G{)XWILqdtE*GOk@H7i+ zhZC&O-mDHD#)?MB*+^Au4by9~0i;@j=K{@Qpjv}%L7uT4C2VCgtx@6n>j1tfD1uxF zpH8Cf!cr2PhczxHGPtkP)X})yO-Tt#7M!Dd0Ba?vU|280um1{=AEa+1>YxUG9Y-6~ z2P<%zNaU2~lC?v3RD%;whHl!A2`CSY<0#ol#$Zoyptm+T81rEv zGn#=IU$++n+of<;=pL{lx~RGNpC zQBB?0;%Rd7Q!+J)0S!Y%w5vc~Myh~03q}IInT8cyLZ0G|r$)pi)odtjjzx?@9F$d& zJfxc#5_sMK&MGl?%H=IUwGPdz$8miGJQ}@PA29SPDBHBFR@bbQ52r%~T3&&*+(!Fa zP-uJjLmlK>0uA)0wWock#5iH#>3&Es6omN7w&!faHjYw=*3-CC++fi)B!yqQf=G&1 zVc6Fq;KXztGNhL19aD5z1Yv~=_P_}GSit#HBFYInQ9jgaPz z$2fbeCJViftBCqMt)uuZT?>6qQv4v+q?DJ)ZHSUV%p1yx#!yq`VO0aSpsR8=Q5)86 z74=~`JQS7Mq%$y^5ZM4{B2f$Gd}tJSholYaRCU?NDFDw_=zB>q53?XuR=q}022q}j zTvf`p$-*zK!A%?HGzsM>y*8@a49MaH-zAttN`>bZeD?|56ntVs^N?#v zT$ve2$V&7oOn@fS(^EKv-PkX;k* zRSnx9&UXz$oyu1>&9*LT?9YFKVnr5BtF}1*?HdeZzyav?_t; z>fs>D;*dvaZJ4Gg+$eA^822cQ;s|PnFdwH;iQ%kymgeA_m*M1a4EYSKJQ?hSWM; z4B9o~CY%S#fsy_Z?+8a|h2Hp3&Q;n)exwXW`#`ORMsa{x!O03#(wZPUz1I{RiIJO1 z5zBt^{n-$0QS(wQN8oomDQcAHLl1$gx1zYQI^-CPLnqWVJ`zDWo1DTEbtpIoN213h z$2~{!jwH8OF{W0vM(9hnN3R~E&-QvN6SbCMbyZUWYS7_|SwtUcQ+z}t?}t&HWYj$m z^b~{F!>KVYPBSF%JqX@nIN~{!&W=ovgy|KkBPY_JDT&$)Xu-$TtyIj6q!|AE zwhTF$YAuB*hcj0~R2lL4Xp5onhyVs$o^Y6Gl5kNoB|qQXIQ|QaFhYc9O`g z=+US{2Ea3uow|dgH@M@3X4DEe8OMMh3T4E7;L8WU;@cq*Vn5}u)&rq7Ltn@p(v$o0 zk*{&E8X=y%q=fqfO;N~JjBdeDs7?w|9BMUcD1;pQ46*eXqJxa4ALXu48vEH#P=m+N z?mmsG0=p`5OitC%j{7eaQquQaI5l8Yq6FLFG(g|d$j#!-d5-onK~qymB?;f>h$GdG zt(v4!^FU39dPz)=0oS0a(Ap_jLy6E#XqJ{x?SnmN2;LQUsv0WKA-aTl0rF<7vvD-f z@Uj>R1GgkrkbR=XSes|enFw}L1~3hylbtdA-r%T)DzyZASl?A3tGT9S**)~lz8ESq z>J&1(utt|avp}@n7~5+ej+c`dfgu)+Qks_0MIBW}aDP$M7|e|bbreUXw$Zkp=F!1g zR3bVqlpOf96TWGb2frB&(NzbLmB`Q>G6C|P45{ISHcCJ*9+fgs3I+{-CxemiVn}2R z8hRjIG6+YN7zyQdnp!KWrDjxxS}o=Vf>e%9$(yRSj4_5ebEpBKAI-uF(E-(p_{mh& zmyuXouorHRl^TqRE6Y@=4l9is!LKBBAIX1izT70J<6WiCK?>QJ?M z;Hl>!x*ft)D$^2 zeRbZwb=-058b3Iy=pKgO9et9A19Y0#@;tQB({hnFa`dX zbWA_7(P^wRNw=h?odo$cUHpwhHuJMPaTn+&bV(v*nCWQ}=Rx&)LLMk5F1;^++Ydx6$f z{SEaOXh~czQP}(m2z#u(ID3MypV1aReU`w} zNH`9Adj@u~3D%tiK3&2t`gzX-Yr6$jXMK|D;F&jElXa5_(kK&wY(OCnchNctP1Vp; zDJ4=FDJfYkX`m(YaE(*Y6dUgiX6%iMNVB-+l{BViC6lPbT99gvX>`E5!H=GnPr|c; z4t7zQKBK$CJz)c_KLu$9SH0OJC(q=Rtd>mSwr*pX;>3O9j1jKstEDAe&(}Cx*i1A7 zc5B!UbPwa)cM)A*IM>Zb-yE5f$l$a9s?#B)Z@Z@;xx=&cUe3wK;aRgjdBXkSdWrWK zU(rU}r`(lKtFMr$yBSv*BTEZ6?g7qjEZ&B}j?PG$m4wNiGtPuj$iJTGo)31f6LAce5#$>vx2L-Iy zrOqxuxN#&SRxzR>LKsDkZn+vPsATKz^1$7@Cn1y&eN_%I7I+oP6l3x+Ly#+y0T+au zQVYgVE9Mls)2SX)jtzHnbrjbMaz30Z+OamLL#hKC&6v-uhth!FhQI@ypqgIbdd6l< z-6*AGRN}(AhbL?zGme>nvW%I>ICxSS^m;vbMvRSNXGhw>kn{oVWbi&ZuEGB$8cUen zpzBAycT9t0;Tszm(~%Y68uNh80CigMgcw9*0CTE+L7=#*4qU@|;}CE*JP}6-g5?~h zv9QDSlua#-gJxnZIyOL_m??P#WMTM(#zr9@gAX$$fRDi^eoW59)ac2v>9OS43?OF_ zJ$0AO9Fe5zH1l!Fy1q6M5!M0;}%uEciarx4roh+%x{#jE@AyYjO~#}>$rn~i^G2E zfjgaZydTETh8jCVe`Hss+_cU$-bd5*sD6}tFdujb4BRt71rNoWt3sB#>i6BRLdAc9|xK%^PYf$XhY-RzlABB7%S^N!HGo83px8Kou8~?xQWsC zSZFux>A3yLybagw$vUCah@N@4iW^}?&m8lfqWNihrO%G%$S#5BxN)f{iI^#{7Ql{7 zLjOJZq%lX^)@n}^i4E4kpe{q}vorNt>ei~0dif7+t(?}$C#yE27P~8|ScoA-$w5g7xeAiNfv~g;@ zCDQzmD0nu69#6vV@IcubkrI+@{uP+aqm2 zx8T}xU_VrNa#Pm+6V~e@t~?>yQy5Xi5((fQQTK_lx0JLC^&VlqhgG+yDcw;L(_U(_ zf>?qw8PUk0Y{s@J7+7UQh1{T|UuZNnsVD0C3$dB9!pL0pYZZ25pEPJS4Xg1e8KKR3 zkQ*YCP>)`#1$wNT((4cnQGqeLM|Q*Xx@bPOW4qCA5%xh(q*r%j!N)k?XfZ}i5iiux zi_y&-=_U0XA&;mOu54>$j;_r?(6-2c&?&V?O!74B)0owX@&R1CE`o9E`Z^WDHrkf* z+jl~3?uaLnXY{fkFn##MM_G7@#T2Zv81~f{$>NOrK~vJf(;>v>ur5nhOW=eW#=ECs zoP&|!$Y5lsPT#;-yHssd8i{a;G%ofyMj7}pq1)-(VT4F>qVdQW(9uW;@>rx9MmG*r z0`-}JDJUnAhBz5X0ws3NK%ScG)67Ov5kIUKnQ4w7n!2fW%mb(DP7@g=;XuE&?vZX0 zi8%0YWbhPT08GOK+^wKYz!+sCY~ZMr0f~z-w(w*WSpr!r?xO-wA$p{P+6h>vC6G}m zVW^hXJP*=hq>Q@a3Hy>laVOfro@-tL-$4myq7m94Hdi8{?jlGE@X6I#%19e)^)vzB zLd*C-wZo@%q77xu6FgeSqN$o~wd}Kc$&L# z>UzjrnoP!t9+c>bjfDPI44!aM=A5t*-I1r>I*FOVIS6f-@Oms0-N@M)ddi0fcq{b3 zkH}qEx+eyX;cE5uPvq$SdnZcH8EX)c{=4wL36BoW(upCW2|zgtpW!;>$b^aTp^0#v zW~`1g!MKjsNvIZ$V@z{Onxzqjt_!dUxKj#HI{_LI#<~ndSd+f1de)Hmtb^z@IS~g; zbb`Q27#S3Xm7!Q-V(vPMh*XA4aGt*y}CuVMU=0cC);KXjr4s z81!9*Jr$AjG@@<FZG=#t6A0s)0SOjj9D!Tw}GG;VBI4damwJ%{l0bbzj0w=(PmP1T&j(&B?8YOs2Po-dV93)fGNt73`4XupzQ$-~}n~Y9JQ&7$$ zQl*^1lG3N63rJ@mFGQ8b9F*B;KDr3y5^5+^Fv|MR`+cq91472fIuJt7{Hdk^|Q4jJYE=6JXXu z(Sn!|yhI(Hv96d1sD60n5JOp^&noy!6QdqE(z2M8mMLOFvd$XxdWb^Rq=_jJp&~df zl)9LjaLwcv$Rl?SL#&%u|Ya9=ZH?%~djxPG_^x4?Orj7jbwlJy#bziBj9H(25~6T|KJ(yKgVB>}Z7q!oGJw{>h}2R5Fhg~BXt@7k zE7GxSY!0Y}7#Aa)7tgb@U>>zK`)auevL%$uO;w4Kd?Un-tLauuV*6DRv(D7lZqLUC zboE}2bN%ANvARkOzQ~}2TsWD!os$~PsSI~zSW-DspfRr6~$@>}i z*_xf0wt#2mcni(V;d*NVeo@XtX)DnQdm5~b9?uLZr|$H|~-9;&#{# z6X=(c2Y|8|vb|cFKhB{?pVAD{7>X;TArrv^|W@1rYL=!+=zQ&bdn5Bvq*@yEebOo zpN%_v;g$w9`(R#pxKk<3h;$fs;0)MJk+@Gusnkf~NtHXw=R4E!Ddz~TfF7v30=9l( z3GzaG9`Y1?=HL@iB_(+>%Wl(=y&Gma6JG#CH7&)n@kN@WWG;I?9uSsAMU<9l-N3QC zQ)8kn!B14Zw9voVx;G<4RiB3#oayTX;!gr9;)zz6$ z0WG9)u$O@rBuc$UekaLED`%i6Z6D!#Nm(ST6wZ3ML5#pEG0+x6*zN&1e~d&H#Ph^$ zw9=SbjkECls;{AhK3TKH2AmcpW+L}M*-dE5t|y_u6=NYXQ=-XcPlV|?)-kZPda9)p zG>$s$bngK0qqM9-z9AY%iHpd+iCM-Cr|K(&Ixj76se5LjFpFe;Pt)Hz!HwNAkzir# zJF&eZ;AJq8*7qld5@Dd*$Xv95HURusVv+3NYOQbzfYcA4qvWN(^XecGt_@=yzYC+5O2n*#FbL^s_p`1ax$rs~%T>#4!Mlvo69CXt0)LT;|`%>!`r zw3U|;y>p2Qy?UyC8t5~u%6EfbhzAMQB+Qq&Dud{j@M$cnMv%c?B6pRljt#OUOBrhO z(KXhrO0=Y}ufeo{bJL1GYKUstStk<$$03p&u9A*P9`MZ!lxVUExi-wx(DNv)HU6Z4 zfuVeJf#<@UwoLMrMy)`afmvI!r%yN^rIX@1TPI_dC{JBPn}vNKnUv93IZaV0)uf`1 zZ!{?h?=ZL5X()6pEkJwJlZMF*u0B1%HITA<(t>i$r0$ppE%Kcs4I`8%<1uZ|F}_+` z4%)98H=U@fwWs%CwB|`a+-wKP)0A~`#9gz>f=mIiVL@U$W^X6_EQu48h2t2e0Q09f zwl-^?t7Sy!ne4B#assD5_IDblP2Z$}j`*%g_v8?<_D%*Eeg+sc)0(1vpz}`#U^fl| zrHA(Wqy|RZ7^ZEtARR+)WHL-k74!}Yp=@;03@^wSr}ee^%7!G!5-6XBQzZsei!F}) z1mw}lsmYnD7ITP0lMzBuJ_69P4Dc;(m zXqIR#YYJ+F^RWn$3N3{vqRA|B4WNfO4*e+s--sN1*T6s)fEGb~$}?mz4mfK(fU6JmJ8Ix7y|i z$Mjp8O4msjXf89ArD>+c5=aZES!C#QK+jL*84}8-I3=B9+ER2AxxLrqm8nrlnbq!I&JScGOY4U^)-JI;Kr9uAL|qVlJ9?*FD>Hp;QdHWLk>!k++j5cU^t3Gr>ka ztzcNDab%jbN`|c7lZt56#}GQ`X|YE`OZ~9^eb9bANZ4>v>QK{(yFxpiH}G*p3?S`> z&mg%c&w#!MkyNd1HYy+0Q8~nDu*ll2u)2)|(W{;74$?Pl6K!V!%1U!pYmLGHuM&e@ zqS4^au1b3mm4p+yA0mNsI)Lq)#S?l4az~$I+CI&LIvwKfK80wQuB~bhQG`*C3uyOr zALIcT4IS>Yl#)kI^Z}6TbPzK!c1S?$C$>pIYjypU-SmviJM9C?Lv-Uh3qF%{fYnId zx}C$=(2e8Rg*WCQuo*-FMbSD8uk6 z^^8JJr4cAujyW8UF`z?49-Yp>UeJ@(U4STOv;{lIAu4gOwUYz~CnHcXkj)UuIF!lh zS;*UDQ`0_pBKP8xLuxvJ<3-h)25lDc3)5o8Y{4@UN+}Gql)lwxP?}@tD18C>JmgE$ zi*>ppaGg+VdAc;6K>w^HWl>9mxC$t)GTnfh#$=CJA6tUiXCpsLdQM?DDB)tR!I7e* zRB{I48yk=}!AA(=)tqcWR4e9fNj{cU>?8T_GXkx+zT4^X69Cmgb6i+&oxt&JFz!%_ z;L}BG#WWSfwOXrpL?fX!RoS$>-6cIHtD$8{twjzxJwvZRT16zvq#7ubO_S6zFgijT zXc=D=hdnrH8CUq}@2C1Kqe7?InC$QJ>Uxrvy(~m(po}9+9>AVN1T%6$eoI* zg&D#bt;yoVLyVNsyFAV$r%{%u(@YU=GMNM_4}F<~(yxR26O9{$2sfKd5x$w67*gn4 zbKU(ijfgC5S8LlsGLsynBRbEtco(9E%q8>5r4zNyGc^pHNd!?&7Ei=d$O34}IQpy^ z&P>Bh1^7ndgH8KtB@~yIz#7#xA=fg)V@Qu`uTp%_i6D-*F)-~k-GP*FrV~m5(p@tm zD0B9zwFGGKj1)DLL`G9pz2X=Tce5F@R*BLXiE2i3m%eHTcZWKSZbl8f9zH&mVMZVp z(WhBE)`K1 zGtQZ))kY)^DBUxCGo7&hTnrT4#gGg32Iwb}E*Nzx4bZp-hYx5k@`E#a2c-=FHzV@T z45M@i^WcooID!;~sHG4s8AU1yk(VP4&y3BC)0!Igzq7PxBTye-H9=~Pl9J`A(BD$U zX6B;t8FqK8R!4s~lt7%6`CP{5I$u#m) zGhw`E=1j?%Jk%(H_&+n_Av2IdjKN-+nV(4`ZNVKEHsm2LH2r_m)Wof0HA~oP^iwPwfsX@vCbrhDZhCG)q)l26tpS4^oP0LJ*^)n_Y^6h$YpFo`D>Pd7NL}LvlC@WGK6fFY*8tq zh?kiP?9*fjP1LIp#6|*HowXX&KLcDL^fgf&C7Tnw?-`a+3g$p1WI$p3<<3H zV7$8uodrYvM99E%y%PW*wPgf|Hvv0R90h&7j1rfy zD+mj@1ymr@WV6sEg|gMF(R5j5{FpI-1_8Bdh0Kt%3bY6lAS^%}=!zt*vczp~*Z7Z| zBjW_z&%EE*Ty!LcC4`=_W4 z1)Sk?;$B5XsWCn+j@^zln5Tn#Cu*23bJ)3u1Ul|r&zC`e;~l+cCa_S+4=qTPxlmlrkfUPPaY1w(3Py(HTqe-409DA@!_F5Dkf^z&oQnK; z;4V}t=f<_XILD0l#L+et0K7`h2dOY_A&zln&{$9eq#C&-u8n%h|I=Gde4MEnR<0IERZy=Fo*?9UNVoD&_pep4_MVlw3iJmCU?q*mi`LvM zH_F-I4rP)rAJ%K%-m8*wt2|LrD^F5Hk;E+O5=$X17XeA2g~8L$>=>T}+J2Uz7##OC zXjG|1o{R=PFcgz<$GF}&FBj-i!F{80d7=>9uM~4~LrUoE`#{GGP_G6!9>@ehL1>?ooap%VHGU%C^4@o?bRzjRo0>LB2+T0M|iulPMN~Bc)U*;y$xtXT&lvb|@=fSeyi| zSWdnWj3Jq^R#QW^D#h|OqFnq6X6*d3EJ1^FgAs4bXmlN9sg1{uV&HhLniD@KqcRpM zQLoTIcDR+|HHJGp!0$bA#HO87-A0@TZxGr?64Xy~R{l)0)lKK@My_H5|t0zHXX<<)FNk4-o_D7C%7rogA}BA6Nd+KZqFf%6 z7Au!3mqC0HNS8xn-8&=wt7LUSv9d(Ty~~qRv<9V6Ef>c|4w$ks<%-xofZnD^GVE#q zcYwIg3SFhEms7K3VDIF2?4h~{tyDmm9O`Y?Kz^%0x*AY9BvGOC&Q`!Eu@H_^;)m#o z5Ko99G;qa}VmxJt)nKfgJTiotm*vE+t0+$Ulikpg*FbMg=y99$Vf)R9<53?DkSYMN zlx&bPhv`61dWXyfG9SW<=J8^>Dkv9#RHPKfuxh15DUR_&Yxb|Zm`&CS6X23pnw3V7TOrf} zrL|BBMog-qrQGI|?uy>l4(148Gb?U48{(2xDIiY;l%_(eP^vjGeY$Ec;PO}*G5L>3 z27Ye5&q~b6UYMoIRLzd{Kew%NRJp3`s6XUg85={+1ClxJd)xN!<+I}>kNJP9!%(06 zyJ{Cheda&-Z_zq+VkY%gVL9c0Am=PQ0MoU^6w=0TsQGD4DsTksw z3zo;R62O(J%0Rjb5HkLLh7Vn3QGd`6s8*_0sLEqL>|yt2aNkv7RA@+-bH^QE(ED~u z2R39t6cs^5135`m37x5{K?_nvl`9!4btVU(mBTdh zoHeTXSy2oAFdU3qRa{ki{7qHVVsKN$pC9PZ9lvUbpI`_No~VXNxBYMDBA~7Q4=rw6 z{=b+n0?#;Nuy^ypJzuVp#P+iW%ClA#gR2WWtS=tAj|#|2sajkrQ%Pf<;C#y-v@t@6 zA&!H8`9Q}HjQwJm7RuEiHG{K8rOGZy%N`p4PM!z#ViuJdc$gqxJxHy9Y9Z+l``PMQ z>OZ6?mki12S&8Z-z-jXHp?(8#hgCLo&Y&PPeM4#u4yLlzFvX)%PXjQ4_I9H^Eomkz#_9cDc|(tj*1RWE~lm;WC}_>bfN&uELF+U71Oj@7yZ zzh@u5o3pEyv$YFrcohB@W=Y>PnFE0P)pTYC&B0N6A99Xb3th{+56R#(&}=nm;_&ER)<7uemFF z+bN^M)MTsGVh)uT@Qi>R3Ar{g2}PyXugMD-$(|ibQpyHc^^bp13Mem&i<|fC&(-5X@}S*? zRN#aB=Y0MOD2DB8=azMp^N&&3^R1Ro0AT%H> zAUq%pb9`7K$U>_fCPXR7DI2jdXf2>80X+?99ia7qo(Hr6&?Z1z0Br-b z9ni~wUIDZd&~8Al19}6{TY%mH^d6wSfc67A0O;Vq?s)xo9P|HeF)n=czqkEA9r6B% zS70YboF1_m_SuM&BWhtyBkd#aJc3Wa*1`7N3I3Plov`O&&%rjqk`kYWO-cMOh5F0+ zuNL^XY5~Vc*U09P?vc-f>!=lwXXFbYZI5478%Ay%xoPC)k^4t_M;;jY*2oV>elT*& z$b)hHe{E+*B#cZ*NVq5A-h@#JqZ95+7?W^+!q|lI2@fRv*W%vx#wQRGhzXb!{wWL(asm9zKdj7Gu!-g}n{C z7d{$37XChL417F%A8aq|1K57pqwp#4N$^L&9!-PKfG5Fc!e_xhgdKn#f*ph%f@i{! z@VW3*crJV%JRe>NUj#3Lm%&TmhhZPXj=+w?j=~PZvGCRKV=y9|3Ma$qa3-7suYmL6 zmGG0W6R=aT&tNt1kKqcq7_NfL;3D`Z@Xz2U;K$$^_-U8{u7exlR=63IK6LvWb`JI> z>US>~FA9@cZE7;9tY;hd%)S26h4V9qe1!WAKOJli^e0*WlCPkAoPA z@Y(S1VHaUP!hV2#1Y{IE1D*!YgU^RAgfE5{z>DE4;HB`(u%BR8VAo++VMpLN_!{^% z7zs{;Q{W6Z3(keJ;Z<-Rd;oR>_8aV1m=t~#u7peAYPcL;4gVB=3VsrP9Il1mgx!Ma z;U;)3+;T_VhwjH;{9i5bzr6)UpcBydpvR&op&v&h(6i8~XcT%bIs=`F&Oz??%*AA3IG7wv9%eo!AF~Lv7_$_! z9J2zm60-`k8iU6WF=PxC!^ZG1VoVK2hEZbl7z4(LF=4EjT8s_TfN8?mG0hk^rWNDC zcrkuV0Mmg9VtO#Wn0`zIvkkKY^D1T+W;f1*rnKI*yY#~Y$>)JyBdqe;;?uu0ZYNsuxu;`TZ!di1y~_gjFn;)SS5B5 z)`o4wHenrDH`aq~$9l1TYyjJV?ZSqzeb|0%1iKdd1olbn^VrSUE!bDFJF%}}-@v|& zeFytK_5k)E_9N`a*rV7_v8S-7v1hSgV86tEg}s3N2KyuSGWI%l0Q)<3B<^0^DBNh= z{kXBXak%lgE7%FRhjCMJkKv}_rsHPd5V#avDsB!g9hZU2!sXy{ae24}xP07lTsaPd zBj89l3XY0n){3Z9CmeyWyCc^46%Y(N#qj+L?N-7C?QITGNOi9N3;B&NTcmr)qse2)UK6w$jfLuskLS9N3lS|1f$*ag~$QUw_TtViLx#UVR zk1QZplci)iSxHurwd5wUo$MmFkXy-}*Sxw zaLNeED9RYhSjt4oLzG7;k5Q&mW>S(U2+AzVY)TphNtr{LOUa<*P;x1Sl*N=KloCoQ zWi@3D1y8A@R8fQ!5k*3gQe+f4ML|(g)D#UxOVLw|6cfcvu~2F$HcBIgXQ@){mPq{?7 zM!8P;g>sYfJLMK-BsGCLntC7gbIMriIO=268PvzAGpWhc6lyv(o0?BuLS0E+OQ?GD>O0ik)VHX6sUK1gQa_>|p&q3kr=FyqrhZQSg8B{hC+a=4dujL6#?mIyCet3I zEptq#CDIVIS+rDI1}&48L(8Mhqb;Eo(MoA}8i7WmF=#AW1&vMP(s(opO-hr~R5UG3 zM>EpQGz+bT)=Klx{IpJ5kQSjmO?#HMk+zApnYM-YB5en4Cv7+FP1@VEcW8TQ`)ME2 zj?hli&d|=%{zm(f_BHJX+K;r$v@5i$w4Z4(dIEhceH?u}eG+{#eFhytpG8lhr_z!1 zbb2Pem|j9JqpzT^reopcm|nK!4NTI3^~KXurg{HbqpJ$iQ!^&iaguS4@gw6h z<0|7OV=VJw<_zZJOawETnZ`sh=P>6oGnv`UJmx$mjY(%RnUzc)Q^*uCtC>=!f~jF@ znI@*0X<=HKPNs|LX0|i^%rG;;T+4it`4n><^Lger=62>w%$>}A%nz7Hn5UVaFn?fP zW?o@lWx`qavc|C{u}~}oYZfb+mBPwm<+Acwg{&p4<*XuBDQg9b#KN&?ta28c#bI$- zl`K9>%#yMcEF;Urs%6!&Y^+9>i{)ndSpilDtCQ8k3b7)rwXA1ZFR-?-wzFPgy~=u< z^*-wZ)<>*^tWQ}dSm#(@vc6&c!n(nNRg9__S23yL!HS0}9;tY|VrIqMiqwkiioA-& z6{{++U=?^=1-XJ+!Kh$@mDWWS;tEMc4Yba^bbY>`ZnpdmeicyO6zvy_8+dE@79k*RZi{BAd!)usLiVo6i=q@V0C*x#_fWnW}}&;Eh^Bl`;bC-!yr0Q)!gD9#wpIL>6wgPeys zk8mF4JkFWLN$2En@;FO5Wt{9EZpub0{1ZhszOil$=^l9jAfg;J7$$j)&vp z1UQ|XZcdof&v}ybH0K%4dd?QkR?ZI2F3#(mw>a-`_Hy=d_H#bq9ONA09OWG2oZx)M zIn6o4`GRwvbA@w_^9$!U&P~n;?kMgU?pW>w?nLe+?qu$R+$r3Lxl_5*xHGs(TqIbL zF_W9c&EwAF&IcdPX_Yf8lPVFFDV1rJsLK4x!ph~9MPQY;(#qA9*h*X_ zzLHo;uB3x?%=nekN_nNa(o|`!Y^(HCwpV&9*Hx~se6jN7${m$ED_^hNQ~6Hi!OCNm z$16`(ep`8^@@nO8l{YI#@)CGsc=z+h@h0#l^QQ0~0jowKdFi}7-aKADSS4v0Z#l1s zR}5AhD(9`@p}{&o1Rjw`1#9qB@dRKM94Sx9)9|!B1J451mZ{@4@S1o|o}1_8b?`cQ zJ-l9CKksSYI^IU!Cf;V=YrHpk@ACHY4)PB3KIR?e9pjzio#UP7eapMZyTbd4ca8T8 z?*{Ka{uurQ{v`f`{73jR_%r!Q{8{|j{4_oitoM@1&*K;Jmw;7NFnk;z&nJL&PUv8T z5+d^6w5xAUF+cD|SI<9G9W_#u9nAK^d2e~Q13zn;H=|04f2 z{_Ffb{CD{K`1|=E@DK10@;~Aq<{#sK!vB(gp8pO1TmJX_OZ;p6pZUM?Z}H((300%3 z?yDM8^+46+st2p4R86gVtZGKp<5fvj$yI4pbE~qd7J_vs3ZXS8R)RGg@KwYrHduQ> z2-Z3S)#R zs!yxVR$Z#PQgyZJTGfrJ->Ys_!2}6{(SrK~;{+20lLQY5rU<4BW(X1mgY)z!3(^G9 zx%lS@<_a3yGOM+d3J%Tp` zZwcNO>=hgk926W992I;fI4igy_)c(9@PlALaF1}5aJ+D`aH?>caHcQ`%+9@7SR#zh zmc3d?6q3LU(gI-(n4?)E)CtW(o3Kgf5w;6`!ho<#*e&c4hJ;&$TZP+%F9~-EcMD$= z-VnYad`tMY@Ll0v;XdIJ;U~fq!c)S}gRBf)VtFEtZtM*rSRd-iEQTR6JcgQ#?zYD$W#Vi*v!8f{Vn9!CZnR;!^QSak&@`=HbJM@nRB~hmRrVi-lsb zSSePEYsEHkqu3#KikrnPVxKr94vYK65%DwP7sQ*zTf|$%+r_VmUl;EYzbD=&-YY&J z{z!aOd`x^?d`f&;{H6G7@kQ|^@n!K9@o(ar;t`UOl6xhiB=<=kkW7$FlsqhXOfo|< zOOh%zWQ_z5=JKLSSP~AHX-fiTy;4ZD604+E(jc)*f|8IV zB3UbWQu35!z2rH`2FXUrCdn4bE0R|wuSs5)ye)Z0vQKhAa$Is!^10-1lCLCROMZ}C zmi#QaA-N?PQIk+}PtAQb<7&p&OsJVuGqvXNn&g_4n$(&(HFIlnYVvC4)hw)81m+$p zuUQ3V^}&F-dWc{a9!3ol%n2g}GrMSNbTtMr^NP8~UgM~7)->02)O6MaYr1RtY9cjT zYPQvEuX(HHy_yee4%K{AbGYV6&C#0UH79FM)tsyOy5^gj?`kgA{7`eH=4wrXbd+?A zbiDKd=|t&d>7&wQFpEm6R9G`tngM1*$(I&Lmq;nn3Mm`RuTdoxO65|8)FN$=I;B3T zU)mw+R(ekQh4j4i8|jbI zOVX>->(bw(Fj<0Z2AJ6)1WEdGvh6i8E6Tz49Oc_g7 zA*+<}WFqkOwOMABwaEgq9@$#iv$Bn{O|q@B7iGI-dt`6O-juy9dtbI!wqN$4?4azB z>^s@_vL9qOWWUO8$`a(GTa2Bh&QVbDYOb5_?pG0 zuqzyj4n?P;OA%CbD?*B=6)z~ZD7GrLD|RUMD-J6@Rvc9vQyf=(syLtnvZn4CPEEN|~bst@26bX5|*;Hsy=ToytARHfBc!2iNCz(2YdsPa|IRLfOGsuJ+OWQ+<6{%=fD zkyUgRQ&pkjsCX(7`0uJrC08j`dX)kEL)4b&YF)m7Di>Q~k8suAi0^*!oQ>igB>)RWYc)sLvBs%L=z zjLuT0s8iK*)LH6mb)I^mdXc(NU8G*4#;Wn)|8`V0OI@L6t2yBRaYA*qTB5E|%hYnU zQmqI79W%7`)H~F# zs&}hjQ}0o~tA0UpdO-cF z`lkAp8m5735;UVUV>A;rk7^#%%+e%lQZ;EBqz0v#qe<7y)nsTgHCdW`%~DN~rdU&| zDbuXdtkK{!cnw9v(o|{$8lgs{k!YkEnMSEmY3emLja}o=I5o|hc8yo#)A%*rnjTHB zrcV>mtkpcBc}lZRvtIL@=6THvnoXL`nys2`nwK=MYIbS%X!dIMX%1*U(tND>RC7}E zndXeZx)~vN?t=d|xO>5VBwSH|t+o|o* z_GzEgKCRuZ-KpK9eM9@E_8ske+5_5y+C$n;w5POZwdb^-YroWft-YxILHncjvi61+ zrW>IfsY}p}(v8-Q(T&wTpqr$dtb0f|MK@LVm~NVGx^9LJp_{Es)}`svb=kTcU7l`% zE?>7$SD-7`E!8d473qp~CAyWmRXUQ6reo{)x+cx;9;>E~M+z zg>@0#THTYnr*u#2p3$w-J*!)*bO&`ubtiP^bYJN%=q~Cm z=`QQ8>u%_N)4}xj>c{BE>nG_S)IX$uSU*+&sD7G0NuR1u*U!~w=yUaX`g!_%eW8A_ ze!0FxU#c(HuhFCR7(HH3)>HIMeTAN_=jbc-e7#UF*4OA2dX-+S*XT`ptG-^}q;J)? z={xkD`YwI1KB9k8|E&Ib{U-fp{Z{=;`q%Yu>-Xso>yPM<=}+j-=+ElU>A%!}rT|hAoDzhHZuy z4Z94l8TJ_7H|#a+GaN7+G#oK}Y&d2(Zurvhnc=MAoZ)lBSB7s5R}4QHV8-i)pA7?s zUk$em_Zr6bkp>^X_Wav^W$cOImMi2Mw(IPbn{$u zhB?!mWzIDhnwOZDnwOc&%xE*o%rW!L0&}%lY?hkkW|diO)|;Em&1R3;YxbGD%pr5X zd9C>w^9J)~^A__q^GoKJ%{$Gz%)8C6ncp(MYu;<#Z$4^1ZvMo4!hF*FnfZeGTk{q3 zRr59TFXkKO0rPL>-_3B#2+K%Ig5_SzeU|$zV=dz?4_KyJ9<$7}%(f(3QY~{VS(Y42 zu4SGj-?GqBYALsnEI13^La@**bPL16w6H7{7OsV75n8G(Qj5%@u&69Xi^XEKI4n*} zyQRa@Z&_qP4$>tyQ`>vZc3E5e#=MOxFXS=It;p>?r!sdbsP%(}w5 z#)`8NtQ0HFO1CntENhijXcb!(R)f`KHCyYfHfw{m(Q3CktS)Pdwbj~Y^;x^DL2KCB zZ(V17*805lMeEDf9oAQ^Z&}~AzGHpY`kwWG^+W4H>nGL|R#@#9*7Me{tlwI{vwm;A zY`tc^ZoOe0u#T>sP&={qq1uOQr`1lcomrbwn_4@kHoZ2ZHm7!8?ULH!+LGF`T68V8 z7GF!PW!G|RD{HH2CAG3zd9AwEP+MDTt98^mYu&YNwZ7WU+V0xk+Hh@uZ9(0ly284} zbxZ1s>Wb^i>M(WqIzkYk{3vTj}7^K~2Rw%6^h+f(;O-P?70>kif(s{5?&Y~A1L&evV2yIA)_-H&xw z>IUj=*8N_0t8P^N==w4BR}S7t~AZmG#jiU#Wk!esBGU z^@r+@)E})sR{u%;r}gLRzpwwH{!;yw`k(5r*WaigsQ^6t3#pbbf z*}82ZTfgl|+a}vK+jiS7+XuF{ZSUIl+YZ_e*^b#hv3+JcZ98N8-1epIJKIIuCEI1& z727r2b=xnt8@8LaTQ*q3$c6_RCO16TFty>)hUpE74M`2D4cQI34GSBJ8j2fA8cG{h zHJ}?X4Y&q!1G9nCz-tgTNE4s+;);B!Y@O;CjhAj=-8n!p=XxQ1XyW#bQJq_%%__^U`!|x5SMtI|>#?g&q8t-o;Ha^xky>Uk4E5O>O%F6pYbDUrm7}klekIIq;AqQ>6#2pmL_YHt;ycxZwfSZHuX2HYg*s*T+{PSo13;aZExDy z^jg#FO>Z>4)%1ST-lhXhhnhZaI@R=b)3;4OHeG7E+;pYs=ca7?K+~^HH=9P-N7_f( z$J)o+C)lUiXV{bM2>UGiY^b&a`#k#+d#N2`$J%jryq#bt+i7;Don^1E zv+W!^*IsGo+a-3n-Do%2&33E3&Tg~Y?GAghy~W;YZ?^~R-S)6OVqa^2(*BJ7S^IYT z%k~}iSM0m(ui0O>@3FsSf8V~}{(=3VeWU$T`$_v*`#Jkp_6zp!?LXPC+kdm)vcnt+ zj(Z&A9OE4m91|Ur9FI7rIv#V(a3nfX9BGbujs=c|jsi!aW2s}gqttJG2g+L+>y-+8jPdm!sR!>*#Yl;aKN**0J8P(XrL>qGP+` zCC3iOD~?wkdmL{#-gLa}c-L{*al~=V@rmQ4D=qw=iKi+=se~;?mXc<={)5;>-@s`H|LkmZ=K&czjt1C{^b0{ zIpDnIgu6z%?seVg8soa(HNiF2HOV#E^`Pq!*Q2h-T+>`LT#vg_UFoj5u1r_9E6=si zRp46YDsq*$R=8HW%3Z5mXcx{!a*UD)&eXfXW zt!usOdDl+YYp&N_Z@BimK5!jyeds#qI_x^)`q=fE>x}Db*N?7CuFI}#uAg1-=6jpR zHIHw8p!uQZDb0^GPi=m*d0O+#=H%v-=G5lQ=B(!I=Dg`ZFbkX>)iG3Mz_P=;%;|)-F|nMJLv9lN8Hc4pL1_= zZ+5@ve%Zalz03W&`)&7o?!E4P?)~n=?vLF^-N)RYxKF#!x-Ysfxv#pfxv#r_bKi2` z({gXi{Vfw)rnSsydAwyzOL|LY%lwvtmgOx)EyXP*Eu}3hTJSA|7GevnWlc*(3$I1m zqH8g<7+WkYwJo-mrWSikOG{fzdrL=4XG>p8e@mogL2G_%Ve8`7lGd`;m948+#lOttVPfw|?Gwq4i?xkFA$lue4rk{kip**56xiwZhv* zw%yk@sqNvm$J(mes@rPXWNmeA4Q)+ruC}%|Z=0{Jv#q}^(zdp3UE2$78`?IvZEJg} zZAaUyZM)juXnVKqy|(w;_O|VBJJ@!(?P%Mvwolqlw0+rjzU}L_i*1+McDG$_yV7>G z?PeR?li<0>bFb%q&qU9Io++N0ob5&)c4NJnwrBc@BGydQN#Rcz*C)@?7@(?786?@ObNwSU=uq5X&U%k9_Nuebl&{(JifZ-RHUcdYjj?_=In zZ<;s5i}cR%rh9X|x!(ESCEg-$v3IqX;bnO%y#lY$TjN!DHD06F?sa)vysci3*X!-{ z2EEE#7V37rooPFMD6}9`L^IecStv_g(M%-o4&q-cP)rdQW&y zc~5)Kde3{0c&~fE^Zw|)A~x7D}J_oDA* z-!9*7-)p`-zPEgD``-0^>^tiF#CO7X(s#!9rSH7&8{fCSi@xuDKlpz1UGiP_{p`Ep z`_*^T2lK=I3I2Qh_xeZq@AHrGkM&RRPx4RpPw_wEpXQ(LNBC#?XZw@=ss6eC41cCS z$Dik)=U?E@_b>Dp_!s+^`j`8Q{H6Xff4P5+AMMBZaek_w=4bj@evY5(uks81B7e1C z=9l{weyv~U*ZU2Aqu=be_^tjrzsuk3cl+D?9>3oo^!NB9{VIbKpc<; zazQ11*8JKzqO+=nQlRLV^Ck6M?4!PY2co)(2h) zY!AE?csZ~$@Lb@{z&n9=1Mdai59|x<4}1_f5cn|gao|MYRNzeDY~YK)SAnksHv&Hg zehCZ&ehu6Vz&l2CBy^1KxUXYe$M}v1Iv(nn((!P|;~jH5GCHz4vO97*ayu4vEa@oh zDC#KbSkY15vAToQLF-_4usgUNybe)^q(j;v>yURSJ5(J_9gQ7^PGe_nXH%!Ev$eCW z)6*I5?C*?pKGC_Z^SRC!IyZD~?|iv)XXk63dph6i+}pXY^MlThIuCaq>HN6!MCZxQ z)17BJ&vu^c{Ic__&goqB(8*SfCfx;Axf?s~Cn zXV?C&BVF5ApLU(>I^A`q>ulFIT|ahR?i%PC5gZx3CwO1*(cojj>A}QcQVE$hpfD&7%7W^kE~pP0g65z#SQo4hHU~R{UBO_mC)gY8 z4@QDd1~&vZ1-Ayb1z!rj9DF7CYH(+8ckuP#p5U9ocY^N*-w*B!?hhUaei%F${3v)h zcr^G)@YCRl;OXF*;JM&u!Ow$V27e4*4qgrZ9Q-9X5FFJ#rh97lxbE@Y4|Y%Kp4L61 zduBJHJGmRxJ-0ifJF`2xJEuFZdv^EY?&9vU?(%M2H@=(DP41?2)4J*1mEFAVs%}BI zxVxtNh3<{ro4U7jZ|~mG{Yv-F?p@t`y5H)4w|j5*f$q<{|JHrJ`>XD+yT9%Jsr!2O zh@MeBqkAUyJk&F#=i#15dmihV*7JBzQcrSEN)M_ht0%iBrzf{3uP47}Vb7wTf}W*4 z%X&(C%6eAxtm#4b5PPUSv>rwev!|km-NWe#^@MvOJ?nb5^la_f*7H)&t35k=UhCP@ z^LEd^o{xKu_MGTB*>kGrOwZRn-}ZdhbFt@A&()r5JvVx8_Wa&6qIYC(Lht>(V|yp` zPVAl1JEM1IZ&EL!cUEsoZ+h?C-kjdN-g&(Xddqs3^%nP*_pa()-HYzU^%8r@y{z8n zdpGoM>fPMCt#^CxOT91mzS_I1_x0XAy>Iru-TPke-rj?~AN3yTJ=S}?_mkewdQbJ9 z>;1C#eDBx2-}GMWz0&(r@3r0=y#u{BdvEo^Lh#Ut(8y3i=$_E%(0!r%Lt{hZLgPad zLX$#MLQ_MJg{FmOhLS_5P(5_gnC2aP=9D$ z=-JS7p$(xep{=29p&g-DLc2n{L$8PSgx(CjAKDu_82TvmN$Ati>CoBG`Ow#)Z$saO zehmE-`Z@GV=tgKDbTf1-1nV2ocYogleG~hp^gYryweQisX?-*LlKK#R$$cq(seNgE z$iA$;yuNvT^ZN?>mh~0&75A0&t?VoBL-%3&uziF+VjsDW+Q;Z)^;Pt-`*?lTed0c5 zpQKOJC+k!6srs~i`aW~tSAAFde(t-`cYk<9cw+eB@FU@A;pyQS;f!!*I6IsZ&J8aN z7lcc~h2iDlqHtNbJWL1^!|X6GTp6wkSBJ%6Nmvoqh4o=`*b=S{H-?+Sj<7r27WRbw z;Xt@E+!YRnyTea}pAT;cZwhY>zZ8BoygR%n{C4>L@V@Z=@X_$G@bT~`;gjJr;j`g$ z;q&3I!{3Cz3;z(l6#glEHT-*cO#g`fQT^llC-hJ3pVa?Q|CIiz{nPrV_nZ37{g(dv z{)Ya>{-%C=zq8-d-`?NV-`yYT@9%%Qe|`Uk{!RUx`?vJJ*uTC1rT+K&_x69#f2{v( z|Cjw=_h0P)zW;~*OZ}Jouk>H*|E2#{|A@%Q$bFFqA`>DLBa^H@lo54A8!<(!k@ko;;*0nr9g(g`Fw!4+BJyP9smL>t|Ly-6|7-vL zYJtC6;NQIkz|@b4Dlo5w2Fz@s12a_^5{-!*FmFXAn7x9ZSd}P96efb@hZ9HL8gVNt zdrD$r;x5H+=&RU^xKV^zgz*DzB8~FEz=VN*>P5yiCV@3^U{zCkV^olf9@zB7O0l2n7*ROkcAk+BBz|?_92Ob;v+B9uo`oLQ2aqEnM z%EreBw%BJ5Bo2&nB@NWITm?TQA_is+%pN%7O&)m2mokt#;O{(jBW++&a7_>wL=K<^ z<_z@roaj}B(gzOr|GT&OU-kQ|1^#M*zgpn07Wk_L{%V2$H(FqR(tk%imqSq$AT5G8 zX;Murt}H1x#{E%F7C_|K`uouK`uuwLxR~W zk$5ByNkmeS1R%`;p9)kWtB`!83YnRPPD?^1qGq9xC*0# zR$6gd8L|vjf-HgTOOd6hVq{5La$0HH3gimZO5{pZSz0-=9JLy`8np_!3YC_&GA%W2 zMcNwV8WaYJL7|aoRCyXIZB_K6Iw%GiNk*lotx2OHX($GgfdZdup_oV}iiKpM*hn_2 z0$G8Iel)^Ca!?s*nCOzVsA^<2D*Cs42~vU*Aw?)LQjAg}m8j_72-QgN*F2OSsYmIM zI;ey{j?KRpmyAqC6(NgI(GN6*NFhprRG_3tDGL077bQc={?m2O|4)1Td$q^^A8L~s z?-~By-ex3aC(TRB19mz8(Dv`e_zVAY3oJ;=PvRznIh&Jt$$XFt0aYj0B5Xp>FJ`eb9Wv?Y~9+{_nTYzorJtyY@Kg z8u?xEe@&gN>RRxkD@lU@-wMnIUkjvw?*)dI9GxdOIzO&nZ2;dfnAB$QEyGa#U;O`c z3!sJ_kN@e?{)+#fZ-GRxLPAm|V%RzfvxZ2shw#IrC&x4?nW-@@4a$*FiprdmnI6Nz z`Z{rLXpD@^ObE|{((Jp~{CWL`Tws+q%yM2_nxDBK&JQgoKXYLWAG#t?!Ch?!{R;o2 zTb#LM2)1+xKeVKw{Ia{)EWZm@bQf$ePVrqdC7Gphv@CN)=E}GP=C~WegSp#*v>MPF zKz{cRWLW`H4j?X| zN2v!4lDIggj`4Ak;j-JVeWaTha1tc{f4TNfk z=yaL-Ohcv-LQI)vD7R!W&=tFl#-R2l?HOKz5z&4S#uyB ztZ|w(H^vQm{=GCKZj}kREI`>=Ia#?`d4QXjHMk}SST!muAIJ-{7J;-Nt1xRZ$fN6l z|FMqU(D=(B&ER@fMKOM;{x)9>bR~Dumu8g#bVb(6ta3=Z3QAW)=^But0bu|Qu3v_O zaIo5376IajS)?p-7A1yKV>wtODb7X9rvr%rh?&I#X~htoF3z*FI9Xgss?6fWP(H}3 z00|&jm?g@pj%maom&EvJ2{l<#Ajz`i5T?jdLb(b`)ljO*y1iyc)c$Up9@rVOj36~Z z9$+nxSZ>L(X4L{dF*_+60oEy)6<@1hc6Ku0Q?gUD)3TA-cdlVDCvKOXJvYwZE;}PT z6T-5fG#g5DvU8z44@#q!^8hy=&;kg_&t4eQL|3$nZUxzefLjbnOF+65&@w>Fvx^{X z(5e{lCD}NTW`etLX-rcV%U8s5ux1U!m1nQYUJY?;veDU?Y%JjMahqsF0+5J+NZI6U zN;WmFqs2ISHY3I{vsr+v0K^8w$>wGcuA0cp=Ep1sYZy(d?mz@_Ss3F)Ag=}_&X&Y= zQO}yVBn6x-E=6_!cpF?-CnN(Vg?bN+|`?#e(y;VMVEIG%LGOh*gR4Uq4AT@2lcJW3 zW5|*}X$Ipg1^BX@ltEn7W<{JE^jLX^4DOCOt8!KkL)QQa4I!8~ zjs+YpE=6PEfken5=8$s8fQzoQNgbvKJzowzC%SUuV9B>rR!+qbgq_35;R3lbhX+zV zq^XMO1t1p!62;_dC>MiN0&z7Ul|o!Jwk$^;=M^zd3FWFBb&dvb+8CNZfYFQ(WC($nTyJu1M>9T zxw#pTE)%3#5SI<5x1;9d=H}+bka@#2QHuq+^Z$h1_RI&Gg+sK90AB#8a0mv@rrafQ zd1;)B##k1YmdClG7+0KI630M)8RyG#SH$_1F|It8uY&T`aXlDq<)UK}2FkG@#pU8b zO2{RGlmwwiBc9iK}%6?HP8*NRT@PkK&pYPrMa?UUbiC;=JH$xq*V^FQ2|~( zL>}%Dl{7J}7UViW`dkA@jetym%()hj-rlT3_}ds5^#L?75A?Hu5P-lvK5uqjo+ipA zLoztaV|i*`T8xWokr0mp>6|#4o;Mfp8F`ryl9e~OK50%|57svZd|uwXy!kO~!4Mq` zmLHQALiwV+f??Wdsej%I?_#qUU`rr;=`iiGA<}Zd7v&Y_mE@Ji(7_dbSLCgP!mgR^>=^yixVfuQp+!)&pTgv-OnQ9>Ruj}(*0aTN5dfT!lsAcPL3j6CKLJyW3CE#2=at6KM}~Qhr|%)Nq|(7C(V=P$st@ZL_0LP zGVlLm?>yk!t*iZChJdJu3Mvkyd+#=*BTdt$P1@|yG^@?t=}h+k8H(WI2MWp%6afVV zQQYEYIKhD%QE{(2@aj+R<^Oq3PQHE87VrAsd;fo5_qq3+&-;AN`F@`?Ns~0cV3rPb zmW5LgBwr)(3OcKZHJVtbyn(#gD}C4FHq|@5ySf`Daszj^r2}lJ3fV6l?L!>9Q)rRaTKx z@<`O|h=nP;4r;sMK|P3GrGh=BQpHrwiETSw?`4Ja> zLeTz1Qkh~mO`4I-WMwR^$SL#W>{6aXo>wj)FH(*B3F$Idc(zoofLBGmrd(HUaJ8x2 zV%k>j5LK$GWZ!+fe+i3JO}!dbt*TBoRj+E0RgHq11WBu#WmSueOXp}MuT9ks?ND`! ziQ@O5m!^s;eLr&#P4rS$sFY&9e6m!jxUVMdQ}wF`WGe<$8r6_W3ujoRLmp9$a#s%> zV=nGBu2SQkXiynd6YNitn#!i|ys5GraHRD%nP&%ExpoNOsd9nch$(~zF^!N8FR70! zzpC`@@5Qe4orMRFnIpV|Gqb9Ym

      Rg7IjkimBqVy0|jQP70bctJO86wa9hq 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 diff --git a/contrib/cmake/jom/xgejom.bat b/contrib/cmake/jom/xgejom.bat deleted file mode 100644 index 80a9054d70e..00000000000 --- a/contrib/cmake/jom/xgejom.bat +++ /dev/null @@ -1,6 +0,0 @@ -@echo off -setlocal enabledelayedexpansion -if "%IBJOM_NUMBEROFJOBS%" == "" set IBJOM_NUMBEROFJOBS=60 -set NINJAFLAGS=-j60 -xgConsole /profile="%~dp0\xgejom.xml" /command="jom -j%IBJOM_NUMBEROFJOBS% %*" || exit /b !ERRORLEVEL! -endlocal diff --git a/contrib/cmake/jom/xgejom.xml b/contrib/cmake/jom/xgejom.xml deleted file mode 100644 index c561a149b5b..00000000000 --- a/contrib/cmake/jom/xgejom.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py b/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py deleted file mode 100644 index 303a2817bec..00000000000 --- a/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.py +++ /dev/null @@ -1,31 +0,0 @@ -# BuildTarget: images/expansion.png -# BuildTarget: images/plus.png -# BuildTarget: images/nodeSetDriverNodeSelection.png -# BuildTarget: images/nodeSetDriverNodeSet.png -# BuildTarget: images/nodeSetStandardSet.png -# BuildTarget: images/layoutButton.png -# BuildTarget: images/objects.png -# BuildTarget: images/addObjects.png -# BuildTarget: images/replaceObjects.png -# BuildTarget: images/collapsibleArrowRight.png -# BuildTarget: images/timelinePlay.png -# BuildTarget: images/removeObjects.png -# BuildTarget: images/gafferSceneUITranslateTool.png -# BuildTarget: images/gafferSceneUIRotateTool.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "expansion.png" ), os.path.join( "images", "expansion.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "plus.png" ), os.path.join( "images", "plug.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodeSetDriverNodeSelection.png" ), os.path.join( "images", "nodeSetDriverNodeSelection.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodeSetStandardSet.png" ), os.path.join( "images", "nodeSetStandardSet.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "layoutButton.png" ), os.path.join( "images", "layoutButton.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "objects.png" ), os.path.join( "images", "objects.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "addObjects.png" ), os.path.join( "images", "addObjects.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "replaceObjects.png" ), os.path.join( "images", "replaceObjects.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "collapsibleArrowRight.png" ), os.path.join( "images", "collapsibleArrowRight.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "timelinePlay.png" ), os.path.join( "images", "timelinePlay.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "removeObjects.png" ), os.path.join( "images", "removeObjects.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "gafferSceneUITranslateTool.png" ), os.path.join( "images", "gafferSceneUITranslateTool.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "gafferSceneUIRotateTool.png" ), os.path.join( "images", "gafferSceneUIRotateTool.png" ) ) diff --git a/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh b/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh new file mode 100755 index 00000000000..fd029ed2e63 --- /dev/null +++ b/doc/source/GettingStarted/TutorialAssemblingTheGafferBot/generate.sh @@ -0,0 +1,32 @@ +#! /bin/bash +# BuildTarget: images/expansion.png +# BuildTarget: images/plus.png +# BuildTarget: images/nodeSetDriverNodeSelection.png +# BuildTarget: images/nodeSetDriverNodeSet.png +# BuildTarget: images/nodeSetStandardSet.png +# BuildTarget: images/layoutButton.png +# BuildTarget: images/objects.png +# BuildTarget: images/addObjects.png +# BuildTarget: images/replaceObjects.png +# BuildTarget: images/collapsibleArrowRight.png +# BuildTarget: images/timelinePlay.png +# BuildTarget: images/removeObjects.png +# BuildTarget: images/gafferSceneUITranslateTool.png +# BuildTarget: images/gafferSceneUIRotateTool.png + +set -e + +cp $GAFFER_ROOT/graphics/expansion.png images +cp $GAFFER_ROOT/graphics/plus.png images +cp $GAFFER_ROOT/graphics/nodeSetDriverNodeSelection.png images +cp $GAFFER_ROOT/graphics/nodeSetDriverNodeSet.png images +cp $GAFFER_ROOT/graphics/nodeSetStandardSet.png images +cp $GAFFER_ROOT/graphics/layoutButton.png images +cp $GAFFER_ROOT/graphics/objects.png images +cp $GAFFER_ROOT/graphics/addObjects.png images +cp $GAFFER_ROOT/graphics/replaceObjects.png images +cp $GAFFER_ROOT/graphics/collapsibleArrowRight.png images +cp $GAFFER_ROOT/graphics/timelinePlay.png images +cp $GAFFER_ROOT/graphics/removeObjects.png images +cp $GAFFER_ROOT/graphics/gafferSceneUITranslateTool.png images +cp $GAFFER_ROOT/graphics/gafferSceneUIRotateTool.png images diff --git a/doc/source/Interface/ControlsAndShortcuts/generate.py b/doc/source/Interface/ControlsAndShortcuts/generate.py deleted file mode 100644 index 53135e2c072..00000000000 --- a/doc/source/Interface/ControlsAndShortcuts/generate.py +++ /dev/null @@ -1,6 +0,0 @@ -# BuildTarget: images/nodeSetStandardSet.png - -import shutil -import os - -shutil.copyfile(os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodeSetStandardSet.png" ), os.path.join( "images", "nodeSetStandardSet.png" ) ) diff --git a/doc/source/WorkingWithScenes/Camera/generate.py b/doc/source/WorkingWithScenes/Camera/generate.py deleted file mode 100644 index 5acd7eab9af..00000000000 --- a/doc/source/WorkingWithScenes/Camera/generate.py +++ /dev/null @@ -1,16 +0,0 @@ -# BuildTarget: images/gafferSceneUIRotateTool.png -# BuildTarget: images/gafferSceneUITranslateTool.png -# BuildTarget: images/cameraOff.png -# BuildTarget: images/gafferSceneUICameraTool.png -# BuildTarget: images/toggleOff.png -# BuildTarget: images/plus.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gafferSceneUIRotateTool.png" ), os.path.join( "images", "gafferSceneUIRotateTool.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gafferSceneUITranslateTool.png" ), os.path.join( "images", "gafferSceneUITranslateTool.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "cameraOff.png" ), os.path.join( "images", "cameraOff.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gafferSceneUICameraTool.png" ), os.path.join( "images", "gafferSceneUICameraTool.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "toggleOff.png" ), os.path.join( "images", "toggleOff.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plus.png" ), os.path.join( "images", "plus.png" ) ) diff --git a/doc/source/WorkingWithScenes/Camera/generate.sh b/doc/source/WorkingWithScenes/Camera/generate.sh new file mode 100755 index 00000000000..358253ceadc --- /dev/null +++ b/doc/source/WorkingWithScenes/Camera/generate.sh @@ -0,0 +1,16 @@ +#! /bin/bash +# BuildTarget: images/gafferSceneUIRotateTool.png +# BuildTarget: images/gafferSceneUITranslateTool.png +# BuildTarget: images/cameraOff.png +# BuildTarget: images/gafferSceneUICameraTool.png +# BuildTarget: images/toggleOff.png +# BuildTarget: images/plus.png + +set -e + +cp $GAFFER_ROOT/graphics/gafferSceneUIRotateTool.png images +cp $GAFFER_ROOT/graphics/gafferSceneUITranslateTool.png images +cp $GAFFER_ROOT/graphics/cameraOff.png images +cp $GAFFER_ROOT/graphics/gafferSceneUICameraTool.png images +cp $GAFFER_ROOT/graphics/toggleOff.png images +cp $GAFFER_ROOT/graphics/plus.png images diff --git a/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py b/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py deleted file mode 100644 index e0661831327..00000000000 --- a/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.py +++ /dev/null @@ -1,12 +0,0 @@ -# BuildTarget: images/gear.png -# BuildTarget: images/info.png -# BuildTarget: images/plugAdder.png -# BuildTarget: images/valueChanged.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "gear.png" ), os.path.join( "images", "gear.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "info.png" ), os.path.join( "images", "info.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plugAdder.png" ), os.path.join( "images", "plugAdder.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "valueChanged.png" ), os.path.join( "images", "valueChanged.png" ) ) diff --git a/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh b/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh new file mode 100755 index 00000000000..09d3523a4c0 --- /dev/null +++ b/doc/source/WorkingWithTheNodeGraph/BoxNode/generate.sh @@ -0,0 +1,12 @@ +#! /bin/bash +# BuildTarget: images/gear.png +# BuildTarget: images/info.png +# BuildTarget: images/plugAdder.png +# BuildTarget: images/valueChanged.png + +set -e + +cp $GAFFER_ROOT/graphics/gear.png images +cp $GAFFER_ROOT/graphics/info.png images +cp $GAFFER_ROOT/graphics/plugAdder.png images +cp $GAFFER_ROOT/graphics/valueChanged.png images diff --git a/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py b/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py deleted file mode 100644 index 387aa0c22fb..00000000000 --- a/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.py +++ /dev/null @@ -1,6 +0,0 @@ -# BuildTarget: images/plus.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plus.png" ), os.path.join( "images", "plus.png" ) ) diff --git a/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh b/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh new file mode 100755 index 00000000000..e81010d23d4 --- /dev/null +++ b/doc/source/WorkingWithTheNodeGraph/TutorialUsingTheOSLCodeNode/generate.sh @@ -0,0 +1,6 @@ +#! /bin/bash +# BuildTarget: images/plus.png + +set -e + +cp $GAFFER_ROOT/graphics/plus.png images diff --git a/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py deleted file mode 100644 index 75cdf6d0211..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.py +++ /dev/null @@ -1,12 +0,0 @@ -# BuildTarget: images/plug.png -# BuildTarget: images/values.png -# BuildTarget: images/nodes.png -# BuildTarget: images/objects.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "plug.png" ), os.path.join( "images", "plug.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "values.png" ), os.path.join( "images", "values.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "nodes.png" ), os.path.join( "images", "nodes.png" ) ) -shutil.copyfile( os.path.join( os.environ["GAFFER_ROOT"], "graphics", "objects.png" ), os.path.join( "images", "objects.png" ) ) diff --git a/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh new file mode 100755 index 00000000000..50f3cde1f9a --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/ThePythonEditor/generate.sh @@ -0,0 +1,12 @@ +#! /bin/bash +# BuildTarget: images/plug.png +# BuildTarget: images/values.png +# BuildTarget: images/nodes.png +# BuildTarget: images/objects.png + +set -e + +cp $GAFFER_ROOT/graphics/plug.png images/plug.png +cp $GAFFER_ROOT/graphics/values.png images/values.png +cp $GAFFER_ROOT/graphics/nodes.png images/nodes.png +cp $GAFFER_ROOT/graphics/objects.png images/objects.png diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py deleted file mode 100644 index 6399c62d2dc..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.py +++ /dev/null @@ -1,10 +0,0 @@ -# BuildTarget: images/nodes.png -# BuildTarget: images/plus.png -# BuildTarget: images/values.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "nodes.png" ), os.path.join( "images", "nodes.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "plug.png" ), os.path.join( "images", "plug.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "values.png" ), os.path.join( "images", "values.png" ) ) diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh new file mode 100755 index 00000000000..12617fe89d0 --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/generate.sh @@ -0,0 +1,10 @@ +#! /bin/bash +# BuildTarget: images/nodes.png +# BuildTarget: images/plus.png +# BuildTarget: images/values.png + +set -e + +cp $GAFFER_ROOT/graphics/nodes.png images +cp $GAFFER_ROOT/graphics/plug.png images +cp $GAFFER_ROOT/graphics/values.png images diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py deleted file mode 100644 index 04ae5618819..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.py +++ /dev/null @@ -1,7 +0,0 @@ -# BuildTarget: images/pathChooser.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "pathChooser.png" ), os.path.join( "images", "pathChooser.png" ) ) - diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh new file mode 100755 index 00000000000..a1796d92c39 --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig1/generate.sh @@ -0,0 +1,7 @@ +#! /bin/bash +# BuildTarget: images/pathChooser.png + +set -e + +cp $GAFFER_ROOT/graphics/pathChooser.png images + diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py deleted file mode 100644 index 3a8c07c4b87..00000000000 --- a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.py +++ /dev/null @@ -1,8 +0,0 @@ -# BuildTarget: images/pathChooser.png -# BuildTarget: images/bookmarks.png - -import shutil -import os - -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "pathChooser.png" ), os.path.join( "images", "pathChooser.png" ) ) -shutil.copyfile( os.path.join( os.environ["$GAFFER_ROOT"], "graphics", "bookmarks.png" ), os.path.join( "images", "bookmarks.png" ) ) diff --git a/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh new file mode 100755 index 00000000000..0659ca0f6cf --- /dev/null +++ b/doc/source/WorkingWithThePythonScriptingAPI/TutorialStartupConfig2/generate.sh @@ -0,0 +1,8 @@ +#! /bin/bash +# BuildTarget: images/pathChooser.png +# BuildTarget: images/bookmarks.png + +set -e + +cp $GAFFER_ROOT/graphics/pathChooser.png images +cp $GAFFER_ROOT/graphics/bookmarks.png images diff --git a/doc/source/generate.py b/doc/source/generate.py deleted file mode 100644 index b255448df95..00000000000 --- a/doc/source/generate.py +++ /dev/null @@ -1,8 +0,0 @@ -# BuildTarget: _static/GafferLogo.svg _static/GafferLogoMini.svg -# BuildTarget: _static/GafferLogoMini.svg - -import shutil -import os - -shutil.copyfile( os.path.join( "..", "..", "resources", "GafferLogo.svg" ), os.path.join( "_static", "GafferLogo.svg" ) ) -shutil.copyfile( os.path.join( "..", "..", "resources", "GafferLogoMini.svg" ), os.path.join( "_static", "GafferLogoMini.svg" ) ) diff --git a/doc/source/generate.sh b/doc/source/generate.sh new file mode 100755 index 00000000000..262cc372f4c --- /dev/null +++ b/doc/source/generate.sh @@ -0,0 +1,8 @@ +#! /bin/bash +# BuildTarget: _static/GafferLogo.svg +# BuildTarget: _static/GafferLogoMini.svg + +set -e + +cp ../../resources/GafferLogo.svg _static +cp ../../resources/GafferLogoMini.svg _static diff --git a/include/Gaffer/Animation.h b/include/Gaffer/Animation.h index 7c1aac3dfa8..e2184859765 100644 --- a/include/Gaffer/Animation.h +++ b/include/Gaffer/Animation.h @@ -72,7 +72,7 @@ class GAFFER_API Animation : public ComputeNode class CurvePlug; /// Defines a single keyframe. - class GAFFER_API Key : public IECore::RefCounted + class Key : public IECore::RefCounted { public : @@ -121,7 +121,7 @@ class GAFFER_API Animation : public ComputeNode /// Defines a curve as a collection of keyframes and methods /// for editing them. Provides methods for evaluating the /// interpolated curve at arbitrary positions. - class GAFFER_API CurvePlug : public ValuePlug + class CurvePlug : public ValuePlug { public : diff --git a/include/Gaffer/ArrayPlug.h b/include/Gaffer/ArrayPlug.h index 37fd3707cb4..ddf0063c632 100644 --- a/include/Gaffer/ArrayPlug.h +++ b/include/Gaffer/ArrayPlug.h @@ -64,7 +64,7 @@ class GAFFER_API ArrayPlug : public Plug Direction direction = In, PlugPtr element = nullptr, size_t minSize = 1, - size_t maxSize = std::numeric_limits::max(), + size_t maxSize = Imath::limits::max(), unsigned flags = Default, bool resizeWhenInputsChange = true ); diff --git a/include/Gaffer/Container.h b/include/Gaffer/Container.h index 9f9ecff672a..ec493bb9629 100644 --- a/include/Gaffer/Container.h +++ b/include/Gaffer/Container.h @@ -43,7 +43,7 @@ namespace Gaffer { template -class Container : public Base +class GAFFER_API Container : public Base { public : diff --git a/include/Gaffer/Context.h b/include/Gaffer/Context.h index a1af9c1928d..a0e0f6554e8 100644 --- a/include/Gaffer/Context.h +++ b/include/Gaffer/Context.h @@ -206,7 +206,7 @@ class GAFFER_API Context : public IECore::RefCounted /// The Scope class is used to push and pop the current context on /// the calling thread. - class GAFFER_API Scope : private ThreadState::Scope + class Scope : private ThreadState::Scope { public : @@ -226,7 +226,7 @@ class GAFFER_API Context : public IECore::RefCounted /// because it is harder to provide the necessary lifetime /// guarantees there, and performance critical code should /// not be implemented in Python in any case. - class GAFFER_API EditableScope : private ThreadState::Scope + class EditableScope : private ThreadState::Scope { public : diff --git a/include/Gaffer/ContextAlgo.h b/include/Gaffer/ContextAlgo.h index 2fea5af28d7..3756707eb05 100644 --- a/include/Gaffer/ContextAlgo.h +++ b/include/Gaffer/ContextAlgo.h @@ -62,7 +62,7 @@ class GAFFER_API GlobalScope : boost::noncopyable GlobalScope( const Context *context, const Plug *plug ); ~GlobalScope(); - struct GAFFER_API Registration + struct Registration { Registration( IECore::TypeId plugTypeId, const std::initializer_list &variablesToRemove ); }; diff --git a/include/Gaffer/ContextMonitor.h b/include/Gaffer/ContextMonitor.h index 3ea33d6e8e0..1cb4effba17 100644 --- a/include/Gaffer/ContextMonitor.h +++ b/include/Gaffer/ContextMonitor.h @@ -71,7 +71,7 @@ class GAFFER_API ContextMonitor : public Monitor IE_CORE_DECLAREMEMBERPTR( ContextMonitor ) - struct GAFFER_API Statistics + struct Statistics { size_t numUniqueContexts() const; diff --git a/include/Gaffer/Expression.h b/include/Gaffer/Expression.h index 4aa118357db..acdaccc1e89 100644 --- a/include/Gaffer/Expression.h +++ b/include/Gaffer/Expression.h @@ -90,7 +90,7 @@ class GAFFER_API Expression : public ComputeNode /// for use in the Expression node. All methods /// are protected as Engines are for the internal /// use of the Expression node only. - class GAFFER_API Engine : public IECore::RefCounted + class Engine : public IECore::RefCounted { public : diff --git a/include/Gaffer/FileSystemPath.h b/include/Gaffer/FileSystemPath.h index 9fb5a217134..06e6d5eadcb 100644 --- a/include/Gaffer/FileSystemPath.h +++ b/include/Gaffer/FileSystemPath.h @@ -58,9 +58,6 @@ class GAFFER_API FileSystemPath : public Path ~FileSystemPath() override; - /// Sets the path root and names from an OS native path string - virtual void setFromString(const std::string &string) override; - bool isValid() const override; bool isLeaf() const override; void propertyNames( std::vector &names ) const override; @@ -85,16 +82,11 @@ class GAFFER_API FileSystemPath : public Path // a FileSequence. IECore::FileSequencePtr fileSequence() const; - std::string string() const override; - // Returns the path converted to the OS native format - std::string nativeString() const; - static PathFilterPtr createStandardFilter( const std::vector &extensions = std::vector(), const std::string &extensionsLabel = "", bool includeSequenceFilter = false ); protected : void doChildren( std::vector &children ) const override; - std::string getOwner( const std::string &pathString ) const; private : diff --git a/include/Gaffer/FileSystemPathPlug.h b/include/Gaffer/FileSystemPathPlug.h deleted file mode 100644 index 32f67485fd6..00000000000 --- a/include/Gaffer/FileSystemPathPlug.h +++ /dev/null @@ -1,113 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011-2012, John Haddon. All rights reserved. -// Copyright (c) 2011-2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFER_FILESYSTEMPATHPLUG_H -#define GAFFER_FILESYSTEMPATHPLUG_H - -#include "Gaffer/Context.h" -#include "Gaffer/StringPlug.h" - -#include "IECore/StringAlgo.h" - - -namespace Gaffer -{ - -/// Plug for providing file system path values. -/// -/// Inherit from StringPlug so all substitutions work and it -/// is backwards compatible with Gaffer scripts from previous versions. -/// -/// Gaffer standardizes on using forward slashes for separating directories -/// in a path in the UI. Pulling on the FileSystemPathPlug returns an OS -/// native format string. Directories are separated by forward slashes on -/// POSIX systems and back slashes on Windows. -/// On Windows, interpret a path starting with a forward slash as a UNC -/// path, converting it to a double back slash. - -class GAFFER_API FileSystemPathPlug : public StringPlug -{ - - public : - - typedef std::string ValueType; - - IE_CORE_DECLARERUNTIMETYPEDEXTENSION( Gaffer::FileSystemPathPlug, FileSystemPathPlugTypeId, StringPlug ); - - - FileSystemPathPlug( - const std::string &name = defaultName(), - Direction direction=In, - const std::string &defaultValue = "", - unsigned flags = Default, - unsigned substitutions = IECore::StringAlgo::AllSubstitutions - ); - ~FileSystemPathPlug() override; - - /// Accepts instances StringPlug or derived classes, - /// which includes FileSystemPath Plug. - bool acceptsInput( const Plug *input ) const override; - PlugPtr createCounterpart( const std::string &name, Direction direction ) const override; - - /// \undoable - void setValue(const std::string &value); - /// Returns the value. See comments in TypedObjectPlug::getValue() - /// for details of the optional precomputedHash argument - and use - /// with care! - std::string getValue( const IECore::MurmurHash *precomputedHash = nullptr, const Context *context = nullptr, const bool forceSubstitutions = false ) const; - - void setFrom(const ValuePlug *other) override; - - IECore::MurmurHash hash() const override; - /// Ensures the method above doesn't mask - /// ValuePlug::hash( h ) - using ValuePlug::hash; -}; - -IE_CORE_DECLAREPTR( FileSystemPathPlug ); - -typedef FilteredChildIterator > FileSystemPathPlugIterator; -typedef FilteredChildIterator > InputFileSystemPathPlugIterator; -typedef FilteredChildIterator > OutputFileSystemPathPlugIterator; - -typedef FilteredRecursiveChildIterator, PlugPredicate<> > RecursiveFileSystemPathPlugIterator; -typedef FilteredRecursiveChildIterator, PlugPredicate<> > RecursiveInputFileSystemPathPlugIterator; -typedef FilteredRecursiveChildIterator, PlugPredicate<> > RecursiveOutputFileSystemPathPlugIterator; - -} // namespace Gaffer - -#endif // GAFFER_FILESYSTEMPATHPLUGPLUG_H diff --git a/include/Gaffer/Monitor.h b/include/Gaffer/Monitor.h index 8436ae2739e..0e3c0b7566c 100644 --- a/include/Gaffer/Monitor.h +++ b/include/Gaffer/Monitor.h @@ -59,7 +59,7 @@ class GAFFER_API Monitor : public IECore::RefCounted using MonitorSet = boost::container::flat_set; - class GAFFER_API Scope : ThreadState::Scope + class Scope : private ThreadState::Scope { public : diff --git a/include/Gaffer/Path.h b/include/Gaffer/Path.h index 05aa0d1e953..0dd36f4e62c 100644 --- a/include/Gaffer/Path.h +++ b/include/Gaffer/Path.h @@ -89,7 +89,6 @@ class GAFFER_API Path : public IECore::RunTimeTyped /// Returns the root of the path - this will be "/" for absolute /// paths and "" for relative paths. const IECore::InternedString &root() const; - void setRoot( IECore::InternedString &newRoot ); /// Returns true if this path is empty. bool isEmpty() const; @@ -132,7 +131,7 @@ class GAFFER_API Path : public IECore::RunTimeTyped /// Sets the path root and names from a "/" /// separated string. - virtual void setFromString( const std::string &string ); + void setFromString( const std::string &string ); /// Returns a copy of this path. Must be reimplemented /// by derived classes so that the copy has the appropriate @@ -171,7 +170,7 @@ class GAFFER_API Path : public IECore::RunTimeTyped /// Returns the path concatenated into a string, using '/' /// as a separator between names. - virtual std::string string() const; + std::string string() const; bool operator == ( const Path &other ) const; bool operator != ( const Path &other ) const; diff --git a/include/Gaffer/PerformanceMonitor.h b/include/Gaffer/PerformanceMonitor.h index d0930864e8f..d471d39321b 100644 --- a/include/Gaffer/PerformanceMonitor.h +++ b/include/Gaffer/PerformanceMonitor.h @@ -65,7 +65,7 @@ class GAFFER_API PerformanceMonitor : public Monitor IE_CORE_DECLAREMEMBERPTR( PerformanceMonitor ) - struct GAFFER_API Statistics + struct Statistics { Statistics( diff --git a/include/Gaffer/Process.h b/include/Gaffer/Process.h index 4860a6338f0..ea1d82517a3 100644 --- a/include/Gaffer/Process.h +++ b/include/Gaffer/Process.h @@ -39,8 +39,6 @@ #include "Gaffer/Export.h" #include "Gaffer/ThreadState.h" -#include "Gaffer/Plug.h" -#include "Gaffer/Context.h" #include "IECore/InternedString.h" diff --git a/include/Gaffer/ScriptNode.h b/include/Gaffer/ScriptNode.h index b1b4967dc47..1fd0d6b5f10 100644 --- a/include/Gaffer/ScriptNode.h +++ b/include/Gaffer/ScriptNode.h @@ -65,7 +65,7 @@ IE_CORE_FORWARDDECLARE( ApplicationRoot ); IE_CORE_FORWARDDECLARE( Context ); IE_CORE_FORWARDDECLARE( StandardSet ); IE_CORE_FORWARDDECLARE( CompoundDataPlug ); -IE_CORE_FORWARDDECLARE( FileSystemPathPlug ); +IE_CORE_FORWARDDECLARE( StringPlug ); typedef Container ScriptContainer; IE_CORE_DECLAREPTR( ScriptContainer ); @@ -199,8 +199,8 @@ class GAFFER_API ScriptNode : public Node //////////////////////////////////////////////////////////////////// /// Returns the plug which specifies the file used in all load and save /// operations. - FileSystemPathPlug *fileNamePlug(); - const FileSystemPathPlug *fileNamePlug() const; + StringPlug *fileNamePlug(); + const StringPlug *fileNamePlug() const; /// Returns a plug which is used to flag when the script has had changes /// made since the last call to save(). BoolPlug *unsavedChangesPlug(); diff --git a/include/Gaffer/Spreadsheet.h b/include/Gaffer/Spreadsheet.h index 60f87f80101..f76519d9e72 100644 --- a/include/Gaffer/Spreadsheet.h +++ b/include/Gaffer/Spreadsheet.h @@ -70,13 +70,13 @@ class GAFFER_API Spreadsheet : public ComputeNode /// /// > Note : It is strongly recommended that the child RowPlugs are /// > accessed via their numeric indices and never via their names. - class GAFFER_API RowsPlug : public ValuePlug + class RowsPlug : public ValuePlug { public : RowsPlug( const std::string &name = defaultName(), Direction direction = In, unsigned flags = Default ); - ~RowsPlug() override; + virtual ~RowsPlug(); GAFFER_PLUG_DECLARE_TYPE( Gaffer::Spreadsheet::RowsPlug, Gaffer::SpreadsheetRowsPlugTypeId, Gaffer::ValuePlug ); @@ -143,7 +143,7 @@ class GAFFER_API Spreadsheet : public ComputeNode /// Defines a single row of the spreadsheet. Access using /// `RowPlug::Range( *rowsPlug() )` or via `rowsPlug()->getChild()`. - class GAFFER_API RowPlug : public ValuePlug + class RowPlug : public ValuePlug { public : @@ -171,7 +171,7 @@ class GAFFER_API Spreadsheet : public ComputeNode /// Defines a single cell in the spreadsheet. Access using /// `CellPlug::Range( *rowPlug->cellsPlug() )` or via /// `rowPlug->cellsPlug()->getChild()`. - class GAFFER_API CellPlug : public ValuePlug + class CellPlug : public ValuePlug { public : diff --git a/include/Gaffer/StringPlug.h b/include/Gaffer/StringPlug.h index dc7afa9b3ef..b9893366fd1 100644 --- a/include/Gaffer/StringPlug.h +++ b/include/Gaffer/StringPlug.h @@ -112,7 +112,7 @@ class GAFFER_API StringPlug : public ValuePlug /// Returns the value. See comments in TypedObjectPlug::getValue() /// for details of the optional precomputedHash argument - and use /// with care! - virtual std::string getValue( const IECore::MurmurHash *precomputedHash = nullptr ) const; + std::string getValue( const IECore::MurmurHash *precomputedHash = nullptr ) const; void setFrom( const ValuePlug *other ) override; diff --git a/include/Gaffer/ThreadState.h b/include/Gaffer/ThreadState.h index 37edf862400..9050a27bbc0 100644 --- a/include/Gaffer/ThreadState.h +++ b/include/Gaffer/ThreadState.h @@ -81,7 +81,7 @@ class GAFFER_API ThreadState /// no active monitors, and a default constructed Context. ThreadState(); - class GAFFER_API Scope : public boost::noncopyable + class Scope : public boost::noncopyable { public : diff --git a/include/Gaffer/TypeIds.h b/include/Gaffer/TypeIds.h index 21d1d4b93ba..ccdb48b0eeb 100644 --- a/include/Gaffer/TypeIds.h +++ b/include/Gaffer/TypeIds.h @@ -140,7 +140,6 @@ enum TypeId EditScopeTypeId = 110093, MessagesDataTypeId = 110094, M33fVectorDataPlugTypeId = 110095, - FileSystemPathPlugTypeId = 110096, LastTypeId = 110159, diff --git a/include/Gaffer/TypedObjectPlug.h b/include/Gaffer/TypedObjectPlug.h index 1fc611fb0c3..35de5618ffc 100644 --- a/include/Gaffer/TypedObjectPlug.h +++ b/include/Gaffer/TypedObjectPlug.h @@ -120,7 +120,7 @@ class IECORE_EXPORT TypedObjectPlug : public ValuePlug }; -#if !defined( Gaffer_EXPORTS ) && !defined( _MSC_VER ) +#ifndef Gaffer_EXPORTS extern template class TypedObjectPlug; extern template class TypedObjectPlug; diff --git a/include/GafferArnold/ArnoldAtmosphere.h b/include/GafferArnold/ArnoldAtmosphere.h index e682a217b37..90a4069a06b 100644 --- a/include/GafferArnold/ArnoldAtmosphere.h +++ b/include/GafferArnold/ArnoldAtmosphere.h @@ -45,7 +45,7 @@ namespace GafferArnold { -class GAFFERARNOLD_API ArnoldAtmosphere : public GafferScene::GlobalShader +class GAFFERSCENE_API ArnoldAtmosphere : public GafferScene::GlobalShader { public : diff --git a/include/GafferArnold/ArnoldBackground.h b/include/GafferArnold/ArnoldBackground.h index fc111011a0a..cf0d56be58d 100644 --- a/include/GafferArnold/ArnoldBackground.h +++ b/include/GafferArnold/ArnoldBackground.h @@ -45,7 +45,7 @@ namespace GafferArnold { -class GAFFERARNOLD_API ArnoldBackground : public GafferScene::GlobalShader +class GAFFERSCENE_API ArnoldBackground : public GafferScene::GlobalShader { public : diff --git a/include/GafferArnold/ArnoldColorManager.h b/include/GafferArnold/ArnoldColorManager.h index 3ee221512fe..7401bbf7f1d 100644 --- a/include/GafferArnold/ArnoldColorManager.h +++ b/include/GafferArnold/ArnoldColorManager.h @@ -50,7 +50,7 @@ namespace GafferArnold class ArnoldShader; -class GAFFERARNOLD_API ArnoldColorManager : public GafferScene::GlobalsProcessor +class GAFFERSCENE_API ArnoldColorManager : public GafferScene::GlobalsProcessor { public : diff --git a/include/GafferArnold/ArnoldMeshLight.h b/include/GafferArnold/ArnoldMeshLight.h index 3168fe356ee..00a4d51f903 100644 --- a/include/GafferArnold/ArnoldMeshLight.h +++ b/include/GafferArnold/ArnoldMeshLight.h @@ -42,8 +42,6 @@ #include "GafferScene/FilteredSceneProcessor.h" -#include "GafferArnold/Export.h" - namespace GafferArnold { diff --git a/include/GafferBindings/DataBinding.h b/include/GafferBindings/DataBinding.h index fa3eb3f55ac..9b42331bd8a 100644 --- a/include/GafferBindings/DataBinding.h +++ b/include/GafferBindings/DataBinding.h @@ -43,8 +43,6 @@ #include "IECore/Data.h" -#include "GafferBindings/Export.h" - namespace GafferBindings { diff --git a/include/GafferBindings/MatchPatternPathFilterBinding.h b/include/GafferBindings/MatchPatternPathFilterBinding.h deleted file mode 100644 index 363a286f86e..00000000000 --- a/include/GafferBindings/MatchPatternPathFilterBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2014, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERBINDINGS_MATCHPATTERNPATHFILTERBINDING_H -#define GAFFERBINDINGS_MATCHPATTERNPATHFILTERBINDING_H - -#include "GafferBindings/Export.h" - -namespace GafferBindings -{ - -GAFFERBINDINGS_API void bindMatchPatternPathFilter(); - -} // namespace GafferBindings - -#endif // GAFFERBINDINGS_MATCHPATTERNPATHFILTERBINDING_H diff --git a/include/GafferBindings/MetadataBinding.h b/include/GafferBindings/MetadataBinding.h index 5de3ef528a5..e6ba89a40f2 100644 --- a/include/GafferBindings/MetadataBinding.h +++ b/include/GafferBindings/MetadataBinding.h @@ -41,8 +41,6 @@ #include "Gaffer/Node.h" -#include "GafferBindings/Export.h" - namespace GafferBindings { diff --git a/include/GafferBindings/ReferenceBinding.h b/include/GafferBindings/ReferenceBinding.h deleted file mode 100644 index 4ee9e90df6e..00000000000 --- a/include/GafferBindings/ReferenceBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERBINDINGS_REFERENCEBINDING_H -#define GAFFERBINDINGS_REFERENCEBINDING_H - -#include "GafferBindings/Export.h" - -namespace GafferBindings -{ - -GAFFERBINDINGS_API void bindReference(); - -} // namespace GafferBindings - -#endif // GAFFERBINDINGS_REFERENCEBINDING_H diff --git a/include/GafferBindings/Serialisation.h b/include/GafferBindings/Serialisation.h index 1b309bb3908..941113fa0bc 100644 --- a/include/GafferBindings/Serialisation.h +++ b/include/GafferBindings/Serialisation.h @@ -100,7 +100,7 @@ class GAFFERBINDINGS_API Serialisation /// The Serialiser class may be implemented differently for specific types to customise /// their serialisation. - class GAFFERBINDINGS_API Serialiser : public IECore::RefCounted + class Serialiser : public IECore::RefCounted { public : diff --git a/include/GafferBindings/SignalBinding.inl b/include/GafferBindings/SignalBinding.inl index 1b7eac40ef3..dec3b2ca227 100644 --- a/include/GafferBindings/SignalBinding.inl +++ b/include/GafferBindings/SignalBinding.inl @@ -45,8 +45,6 @@ #include "boost/signals.hpp" #include "boost/version.hpp" -#include "GafferBindings/Export.h" - namespace GafferBindings { diff --git a/include/GafferBindings/TypedObjectPlugBinding.inl b/include/GafferBindings/TypedObjectPlugBinding.inl index ec2a6ad5316..e48c268a491 100644 --- a/include/GafferBindings/TypedObjectPlugBinding.inl +++ b/include/GafferBindings/TypedObjectPlugBinding.inl @@ -143,8 +143,7 @@ TypedObjectPlugClass::TypedObjectPlugClass( const char *docString ) ); this->def( "defaultValue", &Detail::defaultValue, ( boost::python::arg_( "_copy" ) = true ) ); this->def( "setValue", Detail::setValue, ( boost::python::arg_( "value" ), boost::python::arg_( "_copy" ) = true ) ); - boost::python::object b = boost::python::object(); - this->def( "getValue", Detail::getValue, ( boost::python::arg_( "_precomputedHash" ) = b, boost::python::arg_( "_copy" ) = true ) ); + this->def( "getValue", Detail::getValue, ( boost::python::arg_( "_precomputedHash" ) = boost::python::object(), boost::python::arg_( "_copy" ) = true ) ); boost::python::scope s = *this; diff --git a/include/GafferCortex/ExecutableOpHolder.h b/include/GafferCortex/ExecutableOpHolder.h index fd5f0cdf225..dcc1bbc190e 100644 --- a/include/GafferCortex/ExecutableOpHolder.h +++ b/include/GafferCortex/ExecutableOpHolder.h @@ -37,7 +37,6 @@ #ifndef GAFFERCORTEX_EXECUTABLEOPHOLDER_H #define GAFFERCORTEX_EXECUTABLEOPHOLDER_H -#include "GafferCortex/Export.h" #include "GafferCortex/ParameterisedHolder.h" namespace IECore diff --git a/include/GafferCortex/OpHolder.h b/include/GafferCortex/OpHolder.h index dc575415acf..25bdfea0f3a 100644 --- a/include/GafferCortex/OpHolder.h +++ b/include/GafferCortex/OpHolder.h @@ -37,7 +37,6 @@ #ifndef GAFFERCORTEX_OPHOLDER_H #define GAFFERCORTEX_OPHOLDER_H -#include "GafferCortex/Export.h" #include "GafferCortex/ParameterisedHolder.h" namespace IECore diff --git a/include/GafferCortex/ParameterHandler.h b/include/GafferCortex/ParameterHandler.h index 61a1feee398..560f3766487 100644 --- a/include/GafferCortex/ParameterHandler.h +++ b/include/GafferCortex/ParameterHandler.h @@ -46,10 +46,6 @@ #include -#include "GafferCortex/Export.h" - -#include "GafferCortex/Export.h" - namespace GafferCortex { diff --git a/include/GafferCortex/ParameterisedHolder.h b/include/GafferCortex/ParameterisedHolder.h index ae12dffc2e4..f963aac96f0 100644 --- a/include/GafferCortex/ParameterisedHolder.h +++ b/include/GafferCortex/ParameterisedHolder.h @@ -86,7 +86,7 @@ class GAFFERCORTEX_API ParameterisedHolder : public BaseType void setParameterisedValues(); /// \todo Is this even needed? Can we just use an UndoScope instead? - class GAFFERCORTEX_API ParameterModificationContext + class ParameterModificationContext { public : ParameterModificationContext( Ptr parameterisedHolder ); diff --git a/include/GafferCortexBindings/Export.h b/include/GafferCortexBindings/Export.h deleted file mode 100644 index b046072d14a..00000000000 --- a/include/GafferCortexBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERCORTEXBINDINGS_EXPORT_H -#define GAFFERCORTEXBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERCORTEXBINDINGS_API macro based on whether or not we are compiling -// GafferCortexBindings, or including headers for linking to it. the GAFFERCORTEXBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferCortexBindings_EXPORTS - #define GAFFERCORTEXBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERCORTEXBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERCORTEXBINDINGS_EXPORT_H diff --git a/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h b/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h index dfaebb35217..f16463d9cbe 100644 --- a/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h +++ b/include/GafferDelight/IECoreDelightPreview/NodeAlgo.h @@ -44,10 +44,6 @@ #include -// Change this to "IECoreDelight/Export.h" and remove the define when it goes into Cortex. -#include "GafferDelight/Export.h" -#define IECOREDELIGHT_API GAFFERDELIGHT_API - namespace IECoreDelight { @@ -59,10 +55,10 @@ namespace NodeAlgo /// Converts the specified IECore::Object into an equivalent /// NSI node with the specified handle, returning true on /// success and false on failure. -IECOREDELIGHT_API bool convert( const IECore::Object *object, NSIContext_t context, const char *handle ); +bool convert( const IECore::Object *object, NSIContext_t context, const char *handle ); /// As above, but converting a moving object. If no motion converter /// is available, the first sample is converted instead. -IECOREDELIGHT_API bool convert( const std::vector &samples, const std::vector &sampleTimes, NSIContext_t context, const char *handle ); +bool convert( const std::vector &samples, const std::vector &sampleTimes, NSIContext_t context, const char *handle ); /// Signature of a function which can convert an IECore::Object /// into an NSI node. @@ -72,7 +68,7 @@ typedef bool (*MotionConverter)( const std::vector &samp /// Registers a converter for a specific type. /// Use the ConverterDescription utility class in preference to /// this, since it provides additional type safety. -IECOREDELIGHT_API void registerConverter( IECore::TypeId fromType, Converter converter, MotionConverter motionConverter = nullptr ); +void registerConverter( IECore::TypeId fromType, Converter converter, MotionConverter motionConverter = nullptr ); /// Class which registers a converter for type T automatically /// when instantiated. @@ -98,10 +94,10 @@ class ConverterDescription }; /// Adds all PrimitiveVariables into a ParameterList for use with NSISetAttribute. -IECOREDELIGHT_API void primitiveVariableParameterList( const IECoreScene::Primitive *primitive, ParameterList ¶meters, const IECore::IntVectorData *vertexIndices = nullptr ); +void primitiveVariableParameterList( const IECoreScene::Primitive *primitive, ParameterList ¶meters, const IECore::IntVectorData *vertexIndices = nullptr ); /// As above, but splits out animated primitive variables into a separate vector of ParameterLists /// for use with NSISetAttributeAtTime. -IECOREDELIGHT_API void primitiveVariableParameterLists( const std::vector &primitives, ParameterList &staticParameters, std::vector &animatedParameters, const IECore::IntVectorData *vertexIndices = nullptr ); +void primitiveVariableParameterLists( const std::vector &primitives, ParameterList &staticParameters, std::vector &animatedParameters, const IECore::IntVectorData *vertexIndices = nullptr ); } // namespace NodeAlgo diff --git a/include/GafferDelight/IECoreDelightPreview/ParameterList.h b/include/GafferDelight/IECoreDelightPreview/ParameterList.h index fa247394e98..7303d0f0686 100644 --- a/include/GafferDelight/IECoreDelightPreview/ParameterList.h +++ b/include/GafferDelight/IECoreDelightPreview/ParameterList.h @@ -44,10 +44,6 @@ #include -// Change this to "IECoreDelight/Export.h" and remove the define when it goes into Cortex. -#include "GafferDelight/Export.h" -#define IECOREDELIGHT_API GAFFERDELIGHT_API - namespace IECoreDelight { @@ -55,7 +51,7 @@ namespace IECoreDelight /// NSI API. The ParameterList does not copy any of the data passed /// to it; it is the caller's responsibility to keep all data alive /// for as long as the ParameterList is used. -class IECOREDELIGHT_API ParameterList +class ParameterList { public : diff --git a/include/GafferDispatch/Dispatcher.h b/include/GafferDispatch/Dispatcher.h index 52acafef893..7d37543dcc4 100644 --- a/include/GafferDispatch/Dispatcher.h +++ b/include/GafferDispatch/Dispatcher.h @@ -60,7 +60,6 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) -IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -171,8 +170,8 @@ class GAFFERDISPATCH_API Dispatcher : public Gaffer::Node const Gaffer::StringPlug *jobNamePlug() const; /// Returns the plug which specifies the directory used by dispatchers to store temporary /// files on a per-job basis. - Gaffer::FileSystemPathPlug *jobsDirectoryPlug(); - const Gaffer::FileSystemPathPlug *jobsDirectoryPlug() const; + Gaffer::StringPlug *jobsDirectoryPlug(); + const Gaffer::StringPlug *jobsDirectoryPlug() const; /// At the start of dispatch(), a directory is created under jobsDirectoryPlug + jobNamePlug /// which the dispatcher writes temporary files to. This method returns the most recent created directory. const std::string jobDirectory() const; @@ -225,7 +224,7 @@ class GAFFERDISPATCH_API Dispatcher : public Gaffer::Node /// All tasks within a batch are from the same plug /// and have identical contexts except for the frame /// number. - class GAFFERDISPATCH_API TaskBatch : public IECore::RefCounted + class TaskBatch : public IECore::RefCounted { public : diff --git a/include/GafferDispatch/TaskNode.h b/include/GafferDispatch/TaskNode.h index 16696d4ca38..8425adbd024 100644 --- a/include/GafferDispatch/TaskNode.h +++ b/include/GafferDispatch/TaskNode.h @@ -85,7 +85,7 @@ class GAFFERDISPATCH_API TaskNode : public Gaffer::DependencyNode /// the context in which it should be executed. See TaskPlug /// for the main public interface for the execution of /// individual tasks. - class GAFFERDISPATCH_API Task + class Task { public : @@ -121,7 +121,7 @@ class GAFFERDISPATCH_API TaskNode : public Gaffer::DependencyNode /// Plug type used to represent tasks within the /// node graph. This provides the primary public /// interface for querying and executing tasks. - class GAFFERDISPATCH_API TaskPlug : public Gaffer::Plug + class TaskPlug : public Gaffer::Plug { public : diff --git a/include/GafferDispatchBindings/Export.h b/include/GafferDispatchBindings/Export.h deleted file mode 100644 index a0cd7338074..00000000000 --- a/include/GafferDispatchBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERDISPATCHBINDINGS_EXPORT_H -#define GAFFERDISPATCHBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERDISPATCHBINDINGS_API macro based on whether or not we are compiling -// GafferDispatchBindings, or including headers for linking to it. the GAFFERDISPATCHBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferDispatchBindings_EXPORTS - #define GAFFERDISPATCHBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERDISPATCHBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERDISPATCHBINDINGS_EXPORT_H diff --git a/include/GafferImage/BufferAlgo.h b/include/GafferImage/BufferAlgo.h index 45e58ac6cf3..3bd7b2b040c 100644 --- a/include/GafferImage/BufferAlgo.h +++ b/include/GafferImage/BufferAlgo.h @@ -37,7 +37,7 @@ #ifndef GAFFERIMAGE_BUFFERALGO_H #define GAFFERIMAGE_BUFFERALGO_H -#include "GafferImage/Export.h" +#include "IECore/Export.h" IECORE_PUSH_DEFAULT_VISIBILITY #include "OpenEXR/ImathBox.h" diff --git a/include/GafferImage/BufferAlgo.inl b/include/GafferImage/BufferAlgo.inl index b67be3c147d..1a42407226e 100644 --- a/include/GafferImage/BufferAlgo.inl +++ b/include/GafferImage/BufferAlgo.inl @@ -38,7 +38,6 @@ #define GAFFERIMAGE_BUFFERALGO_INL #include -#include namespace GafferImage { diff --git a/include/GafferImage/Catalogue.h b/include/GafferImage/Catalogue.h index acd6a786337..a41ed993baf 100644 --- a/include/GafferImage/Catalogue.h +++ b/include/GafferImage/Catalogue.h @@ -41,7 +41,6 @@ #include "Gaffer/NumericPlug.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/Switch.h" #include "IECoreImage/DisplayDriver.h" @@ -69,7 +68,7 @@ class GAFFERIMAGE_API Catalogue : public ImageNode ~Catalogue() override; /// Plug type used to represent an image in the catalogue. - class GAFFERIMAGE_API Image : public Gaffer::Plug + class Image : public Gaffer::Plug { public : @@ -78,8 +77,8 @@ class GAFFERIMAGE_API Catalogue : public ImageNode Image( const std::string &name = defaultName(), Direction direction = In, unsigned flags = Default ); - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; Gaffer::StringPlug *descriptionPlug(); const Gaffer::StringPlug *descriptionPlug() const; @@ -120,8 +119,8 @@ class GAFFERIMAGE_API Catalogue : public ImageNode Gaffer::StringPlug *namePlug(); const Gaffer::StringPlug *namePlug() const; - Gaffer::FileSystemPathPlug *directoryPlug(); - const Gaffer::FileSystemPathPlug *directoryPlug() const; + Gaffer::StringPlug *directoryPlug(); + const Gaffer::StringPlug *directoryPlug() const; /// All Catalogues share a single DisplayDriverServer instance /// to receive rendered images. To send an image to the catalogues, diff --git a/include/GafferImage/ColorSpace.h b/include/GafferImage/ColorSpace.h index e5b6a9439f1..5e162050be0 100644 --- a/include/GafferImage/ColorSpace.h +++ b/include/GafferImage/ColorSpace.h @@ -38,7 +38,6 @@ #ifndef GAFFERIMAGE_COLORSPACE_H #define GAFFERIMAGE_COLORSPACE_H -#include "GafferImage/Export.h" #include "GafferImage/OpenColorIOTransform.h" namespace Gaffer diff --git a/include/GafferImage/CopyImageMetadata.h b/include/GafferImage/CopyImageMetadata.h index 4e3e154c4bc..b6e235b0ff5 100644 --- a/include/GafferImage/CopyImageMetadata.h +++ b/include/GafferImage/CopyImageMetadata.h @@ -37,7 +37,6 @@ #ifndef GAFFERIMAGE_COPYIMAGEMETADATA_H #define GAFFERIMAGE_COPYIMAGEMETADATA_H -#include "GafferImage/Export.h" #include "GafferImage/MetadataProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferImage/Dilate.h b/include/GafferImage/Dilate.h index 7f0f5320e29..3d88a97e715 100644 --- a/include/GafferImage/Dilate.h +++ b/include/GafferImage/Dilate.h @@ -37,7 +37,6 @@ #ifndef GAFFERIMAGE_DILATE_H #define GAFFERIMAGE_DILATE_H -#include "GafferImage/Export.h" #include "GafferImage/RankFilter.h" namespace GafferImage diff --git a/include/GafferImage/Erode.h b/include/GafferImage/Erode.h index 243939eed7b..9bfab274e54 100644 --- a/include/GafferImage/Erode.h +++ b/include/GafferImage/Erode.h @@ -37,7 +37,6 @@ #ifndef GAFFERIMAGE_ERODE_H #define GAFFERIMAGE_ERODE_H -#include "GafferImage/Export.h" #include "GafferImage/RankFilter.h" namespace GafferImage diff --git a/include/GafferImage/FilterAlgo.h b/include/GafferImage/FilterAlgo.h index 3cd31f9f0e3..70e743dde01 100644 --- a/include/GafferImage/FilterAlgo.h +++ b/include/GafferImage/FilterAlgo.h @@ -60,7 +60,7 @@ GAFFERIMAGE_API const OIIO::Filter2D* acquireFilter( const std::string &name ); // Find the region covered by a filter with a given width, given a position and axis-aligned derivatives // to compute the bounding rectangle -GAFFERIMAGE_API inline Imath::Box2f filterSupport( const Imath::V2f &p, float dx, float dy, float filterWidth ); +inline Imath::Box2f filterSupport( const Imath::V2f &p, float dx, float dy, float filterWidth ); // Filter over a rectangle shaped region of the image defined by a center point and two axis-aligned derivatives. // The sampler must have been initialized to cover all pixels with centers lying with the support of the filter, @@ -77,7 +77,7 @@ GAFFERIMAGE_API float sampleParallelogram( Sampler &sampler, const Imath::V2f &p // If you have a point and derivatives defining a region to filter over, but you want to use sampleBox // instead of sampleParallelogram for performance reasons, you can use this function to get axis-aligned // derivatives which will approximate the result of sampleParallelogram -GAFFERIMAGE_API inline Imath::V2f derivativesToAxisAligned( const Imath::V2f &p, const Imath::V2f &dpdx, const Imath::V2f &dpdy ); +inline Imath::V2f derivativesToAxisAligned( const Imath::V2f &p, const Imath::V2f &dpdx, const Imath::V2f &dpdy ); } // namespace FilterAlgo diff --git a/include/GafferImage/FlatImageProcessor.h b/include/GafferImage/FlatImageProcessor.h index 076cb7cf99e..eae0948746d 100644 --- a/include/GafferImage/FlatImageProcessor.h +++ b/include/GafferImage/FlatImageProcessor.h @@ -58,7 +58,7 @@ class GAFFERIMAGE_API FlatImageProcessor : public ImageProcessor /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - FlatImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); + FlatImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); ~FlatImageProcessor() override; GAFFER_NODE_DECLARE_TYPE( GafferImage::FlatImageProcessor, FlatImageProcessorTypeId, ImageProcessor ); diff --git a/include/GafferImage/Format.h b/include/GafferImage/Format.h index 63aecea5198..85ffcdda4c7 100644 --- a/include/GafferImage/Format.h +++ b/include/GafferImage/Format.h @@ -48,10 +48,6 @@ IECORE_POP_DEFAULT_VISIBILITY #include #include -#include "GafferImage/Export.h" - -#include "GafferImage/Export.h" - namespace GafferImage { diff --git a/include/GafferImage/ImageAlgo.h b/include/GafferImage/ImageAlgo.h index 3111d0001e2..6ab42783e09 100644 --- a/include/GafferImage/ImageAlgo.h +++ b/include/GafferImage/ImageAlgo.h @@ -50,10 +50,6 @@ IECORE_POP_DEFAULT_VISIBILITY #include -#include "GafferImage/Export.h" - -#include "GafferImage/Export.h" - namespace GafferImage { diff --git a/include/GafferImage/ImagePlug.h b/include/GafferImage/ImagePlug.h index bf3ceda2a20..298efbabf00 100644 --- a/include/GafferImage/ImagePlug.h +++ b/include/GafferImage/ImagePlug.h @@ -130,7 +130,7 @@ class GAFFERIMAGE_API ImagePlug : public Gaffer::ValuePlug /// with tile/channel specific variables removed. This can be used /// when evaluating plugs which must be global to the whole image, /// and can improve performance by reducing pressure on the hash cache. - struct GAFFERIMAGE_API GlobalScope : public Gaffer::Context::EditableScope + struct GlobalScope : public Gaffer::Context::EditableScope { GlobalScope( const Gaffer::Context *context ); GlobalScope( const Gaffer::ThreadState &threadState ); @@ -139,7 +139,7 @@ class GAFFERIMAGE_API ImagePlug : public Gaffer::ValuePlug /// Utility class to scope a temporary copy of a context, /// with convenient accessors to set tileOrigin and channelName, /// which you often need to do while accessing channelData - struct GAFFERIMAGE_API ChannelDataScope : public Gaffer::Context::EditableScope + struct ChannelDataScope : public Gaffer::Context::EditableScope { ChannelDataScope( const Gaffer::Context *context ); ChannelDataScope( const Gaffer::ThreadState &threadState ); diff --git a/include/GafferImage/ImageProcessor.h b/include/GafferImage/ImageProcessor.h index 695f74f8f99..9dc016ec26a 100644 --- a/include/GafferImage/ImageProcessor.h +++ b/include/GafferImage/ImageProcessor.h @@ -38,9 +38,6 @@ #ifndef GAFFERIMAGE_IMAGEPROCESSOR_H #define GAFFERIMAGE_IMAGEPROCESSOR_H -#include - -#include "GafferImage/Export.h" #include "GafferImage/ImageNode.h" namespace Gaffer @@ -67,7 +64,7 @@ class GAFFERIMAGE_API ImageProcessor : public ImageNode /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - ImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); + ImageProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); ~ImageProcessor() override; GAFFER_NODE_DECLARE_TYPE( GafferImage::ImageProcessor, ImageProcessorTypeId, ImageNode ); diff --git a/include/GafferImage/ImageReader.h b/include/GafferImage/ImageReader.h index 73c116caf9f..a8a1b9f14bb 100644 --- a/include/GafferImage/ImageReader.h +++ b/include/GafferImage/ImageReader.h @@ -47,7 +47,6 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) -IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -88,8 +87,8 @@ class GAFFERIMAGE_API ImageReader : public ImageNode ClampToFrame, }; - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; /// Number of times the node has been refreshed. Gaffer::IntPlug *refreshCountPlug(); diff --git a/include/GafferImage/ImageTransform.h b/include/GafferImage/ImageTransform.h index d7bbc470b33..44aaaef6036 100644 --- a/include/GafferImage/ImageTransform.h +++ b/include/GafferImage/ImageTransform.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_IMAGETRANSFORM_H #define GAFFERSCENE_IMAGETRANSFORM_H -#include "GafferImage/Export.h" #include "GafferImage/FlatImageProcessor.h" namespace Gaffer diff --git a/include/GafferImage/ImageWriter.h b/include/GafferImage/ImageWriter.h index 9db8da3672b..f8cc57c53b4 100644 --- a/include/GafferImage/ImageWriter.h +++ b/include/GafferImage/ImageWriter.h @@ -50,7 +50,6 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( ValuePlug ) IE_CORE_FORWARDDECLARE( StringPlug ) - IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer namespace GafferImage @@ -75,8 +74,8 @@ class GAFFERIMAGE_API ImageWriter : public GafferDispatch::TaskNode GAFFER_NODE_DECLARE_TYPE( GafferImage::ImageWriter, ImageWriterTypeId, TaskNode ); - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; GafferImage::ImagePlug *inPlug(); const GafferImage::ImagePlug *inPlug() const; diff --git a/include/GafferImage/LUT.h b/include/GafferImage/LUT.h index f90b672bb3a..9692ce3e19c 100644 --- a/include/GafferImage/LUT.h +++ b/include/GafferImage/LUT.h @@ -44,7 +44,7 @@ namespace Gaffer { -IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) +IE_CORE_FORWARDDECLARE( StringPlug ) } // namespace Gaffer @@ -75,8 +75,8 @@ class GAFFERIMAGE_API LUT : public OpenColorIOTransform Inverse }; - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; Gaffer::IntPlug *interpolationPlug(); const Gaffer::IntPlug *interpolationPlug() const; diff --git a/include/GafferImage/Median.h b/include/GafferImage/Median.h index 75799d3d68f..40e6c19e0d6 100644 --- a/include/GafferImage/Median.h +++ b/include/GafferImage/Median.h @@ -37,7 +37,6 @@ #ifndef GAFFERIMAGE_MEDIAN_H #define GAFFERIMAGE_MEDIAN_H -#include "GafferImage/Export.h" #include "GafferImage/RankFilter.h" namespace GafferImage diff --git a/include/GafferImage/OpenImageIOReader.h b/include/GafferImage/OpenImageIOReader.h index 5e2eaf5d820..6d593d97564 100644 --- a/include/GafferImage/OpenImageIOReader.h +++ b/include/GafferImage/OpenImageIOReader.h @@ -46,7 +46,6 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) -IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) } // namespace Gaffer @@ -70,8 +69,8 @@ class GAFFERIMAGE_API OpenImageIOReader : public ImageNode Hold, }; - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; /// Number of times the node has been refreshed. Gaffer::IntPlug *refreshCountPlug(); diff --git a/include/GafferImage/Shuffle.h b/include/GafferImage/Shuffle.h index 3140413174c..1491600bb86 100644 --- a/include/GafferImage/Shuffle.h +++ b/include/GafferImage/Shuffle.h @@ -58,7 +58,7 @@ class GAFFERIMAGE_API Shuffle : public ImageProcessor /// A custom plug to hold the name of an output channel and the /// name of an input channel to shuffle into it. Add instances /// of these to the Shuffle::channelsPlug() to define the shuffle. - class GAFFERIMAGE_API ChannelPlug : public Gaffer::ValuePlug + class ChannelPlug : public Gaffer::ValuePlug { public : diff --git a/include/GafferImage/Text.h b/include/GafferImage/Text.h index 2299b7f0f54..c0d6e63eaeb 100644 --- a/include/GafferImage/Text.h +++ b/include/GafferImage/Text.h @@ -40,7 +40,6 @@ #include "GafferImage/Shape.h" #include "Gaffer/BoxPlug.h" -#include "Gaffer/FileSystemPathPlug.h" namespace Gaffer { @@ -53,12 +52,6 @@ IE_CORE_FORWARDDECLARE( Transform2DPlug ) namespace GafferImage { -#ifdef _WIN32 - #define ENVSEP ";" -#else - #define ENVSEP ":" -#endif - class GAFFERIMAGE_API Text : public Shape { @@ -86,8 +79,8 @@ class GAFFERIMAGE_API Text : public Shape Gaffer::StringPlug *textPlug(); const Gaffer::StringPlug *textPlug() const; - Gaffer::FileSystemPathPlug *fontPlug(); - const Gaffer::FileSystemPathPlug *fontPlug() const; + Gaffer::StringPlug *fontPlug(); + const Gaffer::StringPlug *fontPlug() const; Gaffer::V2iPlug *sizePlug(); const Gaffer::V2iPlug *sizePlug() const; diff --git a/include/GafferImage/VectorWarp.h b/include/GafferImage/VectorWarp.h index 757a9745baf..7ffce9f65b2 100644 --- a/include/GafferImage/VectorWarp.h +++ b/include/GafferImage/VectorWarp.h @@ -37,7 +37,6 @@ #ifndef GAFFERIMAGE_UVWARP_H #define GAFFERIMAGE_UVWARP_H -#include "GafferImage/Export.h" #include "GafferImage/Warp.h" namespace GafferImage diff --git a/include/GafferImageBindings/Export.h b/include/GafferImageBindings/Export.h deleted file mode 100644 index a382c2e45f6..00000000000 --- a/include/GafferImageBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGEBINDINGS_EXPORT_H -#define GAFFERIMAGEBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERIMAGEBINDINGS_API macro based on whether or not we are compiling -// GafferImageBindings, or including headers for linking to it. the GAFFERIMAGEBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferImageBindings_EXPORTS - #define GAFFERIMAGEBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERIMAGEBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERIMAGEBINDINGS_EXPORT_H diff --git a/include/GafferImageBindings/ImageProcessorBinding.h b/include/GafferImageBindings/ImageProcessorBinding.h deleted file mode 100644 index d404abffc59..00000000000 --- a/include/GafferImageBindings/ImageProcessorBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGEBINDINGS_IMAGEPROCESSORBINDING_H -#define GAFFERIMAGEBINDINGS_IMAGEPROCESSORBINDING_H - -#include "GafferImageBindings/Export.h" - -namespace GafferImageBindings -{ - -GAFFERIMAGEBINDINGS_API void bindImageProcessor(); - -} // namespace GafferImageBindings - -#endif // GAFFERIMAGEBINDINGS_IMAGEPROCESSORBINDING_H diff --git a/include/GafferImageBindings/ResampleBinding.h b/include/GafferImageBindings/ResampleBinding.h deleted file mode 100644 index 260f48b768c..00000000000 --- a/include/GafferImageBindings/ResampleBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGEBINDINGS_RESAMPLEBINDING_H -#define GAFFERIMAGEBINDINGS_RESAMPLEBINDING_H - -#include "GafferImageBindings/Export.h" - -namespace GafferImageBindings -{ - -GAFFERIMAGEBINDINGS_API void bindResample(); - -}; // namespace GafferImageBindings - -#endif // GAFFERIMAGEBINDINGS_RESAMPLEBINDING_H diff --git a/include/GafferImageBindings/ResizeBinding.h b/include/GafferImageBindings/ResizeBinding.h deleted file mode 100644 index ec266eb6e4d..00000000000 --- a/include/GafferImageBindings/ResizeBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGEBINDINGS_RESIZEEBINDING_H -#define GAFFERIMAGEBINDINGS_RESIZEEBINDING_H - -#include "GafferImageBindings/Export.h" - -namespace GafferImageBindings -{ - -GAFFERIMAGEBINDINGS_API void bindResize(); - -}; // namespace GafferImageBindings - -#endif // GAFFERIMAGEBINDINGS_RESIZEEBINDING_H diff --git a/include/GafferImageBindings/ShuffleBinding.h b/include/GafferImageBindings/ShuffleBinding.h deleted file mode 100644 index 56787224945..00000000000 --- a/include/GafferImageBindings/ShuffleBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGEBINDINGS_SHUFFLEBINDING_H -#define GAFFERIMAGEBINDINGS_SHUFFLEBINDING_H - -#include "GafferImageBindings/Export.h" - -namespace GafferImageBindings -{ - -GAFFERIMAGEBINDINGS_API void bindShuffle(); - -}; // namespace GafferImageBindings - -#endif // GAFFERIMAGEBINDINGS_SHUFFLEBINDING_H diff --git a/include/GafferImageTest/ContextSanitiser.h b/include/GafferImageTest/ContextSanitiser.h index f0cbe0abc72..fe5d6edd34e 100644 --- a/include/GafferImageTest/ContextSanitiser.h +++ b/include/GafferImageTest/ContextSanitiser.h @@ -37,8 +37,6 @@ #ifndef GAFFERIMAGETEST_CONTEXTSANITISER_H #define GAFFERIMAGETEST_CONTEXTSANITISER_H -#include "GafferImageTest/Export.h" - #include "Gaffer/Monitor.h" #include "Gaffer/Plug.h" @@ -48,7 +46,7 @@ namespace GafferImageTest { /// A monitor which warns about common context handling mistakes. -class GAFFERIMAGETEST_API ContextSanitiser : public Gaffer::Monitor +class GAFFER_API ContextSanitiser : public Gaffer::Monitor { public : diff --git a/include/GafferImageTest/Export.h b/include/GafferImageTest/Export.h deleted file mode 100644 index 3bfc8695000..00000000000 --- a/include/GafferImageTest/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGETEST_EXPORT_H -#define GAFFERIMAGETEST_EXPORT_H - -#include "IECore/Export.h" - -// define GAFFERIMAGETEST_API macro based on whether or not we are compiling -// GafferImageTest, or including headers for linking to it. the GAFFERIMAGETEST_API -// macro is the one that is used in the class definitions. -#ifdef GafferImageTest_EXPORTS - #define GAFFERIMAGETEST_API IECORE_EXPORT -#else - #define GAFFERIMAGETEST_API IECORE_IMPORT -#endif - -#endif // #ifndef GAFFERIMAGETEST_EXPORT_H diff --git a/include/GafferImageUI/ImageGadget.h b/include/GafferImageUI/ImageGadget.h index 7162da1eaf5..96e7d784712 100644 --- a/include/GafferImageUI/ImageGadget.h +++ b/include/GafferImageUI/ImageGadget.h @@ -240,7 +240,6 @@ class GAFFERIMAGEUI_API ImageGadget : public GafferUI::Gadget // be inserted/updated in parallel in a multithreaded // update step. - public: struct TileIndex { TileIndex( const Imath::V2i &tileOrigin, IECore::InternedString channelName ) @@ -257,7 +256,6 @@ class GAFFERIMAGEUI_API ImageGadget : public GafferUI::Gadget IECore::InternedString channelName; }; - private: struct Tile { diff --git a/include/GafferImageUIBindings/Export.h b/include/GafferImageUIBindings/Export.h deleted file mode 100644 index e7e535e2d19..00000000000 --- a/include/GafferImageUIBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERIMAGEUIBINDINGS_EXPORT_H -#define GAFFERIMAGEUIBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERIMAGEUIBINDINGS_API macro based on whether or not we are compiling -// GafferImageUIBindings, or including headers for linking to it. the GAFFERIMAGEUIBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferImageUIBindings_EXPORTS - #define GAFFERIMAGEUIBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERIMAGEUIBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERIMAGEUIBINDINGS_EXPORT_H diff --git a/include/GafferOSL/OSLCode.h b/include/GafferOSL/OSLCode.h index c4774a55011..539c094e2c7 100644 --- a/include/GafferOSL/OSLCode.h +++ b/include/GafferOSL/OSLCode.h @@ -37,7 +37,6 @@ #ifndef GAFFEROSL_OSLCODE_H #define GAFFEROSL_OSLCODE_H -#include "GafferOSL/Export.h" #include "GafferOSL/OSLShader.h" namespace GafferOSL diff --git a/include/GafferRenderMan/Export.h b/include/GafferRenderMan/Export.h deleted file mode 100644 index 96d9a9f6166..00000000000 --- a/include/GafferRenderMan/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERRENDERMAN_EXPORT_H -#define GAFFERRENDERMAN_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERRENDERMAN_API macro based on whether or not we are compiling -// GafferRenderman, or including headers for linking to it. the GAFFERRENDERMAN_API -// macro is the one that is used in the class definitions. -#ifdef GafferRenderMan_EXPORTS - #define GAFFERRENDERMAN_API GAFFER_EXPORT -#else - #define GAFFERRENDERMAN_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERRENDERMAN_EXPORT_H diff --git a/include/GafferScene/AimConstraint.h b/include/GafferScene/AimConstraint.h index b070d201b9d..0032b79d952 100644 --- a/include/GafferScene/AimConstraint.h +++ b/include/GafferScene/AimConstraint.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_AIMCONSTRAINT_H #define GAFFERSCENE_AIMCONSTRAINT_H -#include "GafferScene/Export.h" #include "GafferScene/Constraint.h" namespace GafferScene diff --git a/include/GafferScene/AlembicSource.h b/include/GafferScene/AlembicSource.h deleted file mode 100644 index 643e5a9b7fc..00000000000 --- a/include/GafferScene/AlembicSource.h +++ /dev/null @@ -1,109 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2012-2014, John Haddon. All rights reserved. -// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENE_ALEMBICSOURCE_H -#define GAFFERSCENE_ALEMBICSOURCE_H - -#include "IECoreAlembic/AlembicInput.h" - -#include "GafferScene/Export.h" -#include "GafferScene/SceneNode.h" - -namespace Gaffer -{ - -IE_CORE_FORWARDDECLARE( StringPlug ) - -} // namespace Gaffer - -namespace GafferScene -{ - -class GAFFERSCENE_API AlembicSource : public SceneNode -{ - - public : - - AlembicSource( const std::string &name=defaultName() ); - virtual ~AlembicSource(); - - IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferScene::AlembicSource, AlembicSourceTypeId, SceneNode ) - - /// Holds the name of the file to be loaded. - Gaffer::StringPlug *fileNamePlug(); - const Gaffer::StringPlug *fileNamePlug() const; - - /// Number of times the node has been refreshed. - Gaffer::IntPlug *refreshCountPlug(); - const Gaffer::IntPlug *refreshCountPlug() const; - - /// Implemented to specify that fileNamePlug() affects all the scene output. - virtual void affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const; - - private : - - void plugSet( Gaffer::Plug *plug ); - - virtual void hashBound( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashTransform( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashAttributes( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashObject( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashChildNames( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashGlobals( const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashSetNames( const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - virtual void hashSet( const IECore::InternedString &setName, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const; - - virtual Imath::Box3f computeBound( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual Imath::M44f computeTransform( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual IECore::ConstCompoundObjectPtr computeAttributes( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual IECore::ConstObjectPtr computeObject( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual IECore::ConstInternedStringVectorDataPtr computeChildNames( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual IECore::ConstCompoundObjectPtr computeGlobals( const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual IECore::ConstInternedStringVectorDataPtr computeSetNames( const Gaffer::Context *context, const ScenePlug *parent ) const; - virtual GafferScene::ConstPathMatcherDataPtr computeSet( const IECore::InternedString &setName, const Gaffer::Context *context, const ScenePlug *parent ) const; - - IECoreAlembic::AlembicInputPtr inputForPath( const ScenePath &path ) const; - - static size_t g_firstPlugIndex; - -}; - -IE_CORE_DECLAREPTR( AlembicSource ) - -} // namespace GafferScene - -#endif // GAFFERSCENE_ALEMBICSOURCE_H diff --git a/include/GafferScene/AttributeProcessor.h b/include/GafferScene/AttributeProcessor.h index f48d829b671..cf5332afac1 100644 --- a/include/GafferScene/AttributeProcessor.h +++ b/include/GafferScene/AttributeProcessor.h @@ -37,15 +37,7 @@ #ifndef GAFFERSCENE_ATTRIBUTEPROCESSOR_H #define GAFFERSCENE_ATTRIBUTEPROCESSOR_H -#include "GafferScene/SceneElementProcessor.h" -#include "GafferScene/Export.h" - -namespace Gaffer -{ - -IE_CORE_FORWARDDECLARE( StringPlug ) - -} // namespace Gaffer +#include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene { diff --git a/include/GafferScene/Camera.h b/include/GafferScene/Camera.h index 523e73aaa2b..cc7facbdf0b 100644 --- a/include/GafferScene/Camera.h +++ b/include/GafferScene/Camera.h @@ -38,8 +38,6 @@ #ifndef GAFFERSCENE_CAMERA_H #define GAFFERSCENE_CAMERA_H -#include "GafferScene/Export.h" - #include "Gaffer/CompoundDataPlug.h" #include "GafferScene/ObjectSource.h" diff --git a/include/GafferScene/ClippingPlane.h b/include/GafferScene/ClippingPlane.h index d421942520e..1c65a65cabb 100644 --- a/include/GafferScene/ClippingPlane.h +++ b/include/GafferScene/ClippingPlane.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_CLIPPINGPLANE_H #define GAFFERSCENE_CLIPPINGPLANE_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/CollectScenes.h b/include/GafferScene/CollectScenes.h index 38b09611d23..2f8f91fbdea 100644 --- a/include/GafferScene/CollectScenes.h +++ b/include/GafferScene/CollectScenes.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_COLLECTSCENES_H #define GAFFERSCENE_COLLECTSCENES_H -#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Constraint.h b/include/GafferScene/Constraint.h index 4b21d4ec916..d8e7f0e82f6 100644 --- a/include/GafferScene/Constraint.h +++ b/include/GafferScene/Constraint.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_CONSTRAINT_H #define GAFFERSCENE_CONSTRAINT_H -#include "GafferScene/Export.h" #include "GafferScene/SceneElementProcessor.h" namespace Gaffer diff --git a/include/GafferScene/CoordinateSystem.h b/include/GafferScene/CoordinateSystem.h index 68797871d55..fbdf7ef6d6b 100644 --- a/include/GafferScene/CoordinateSystem.h +++ b/include/GafferScene/CoordinateSystem.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_COORDINATESYSTEM_H #define GAFFERSCENE_COORDINATESYSTEM_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/CustomAttributes.h b/include/GafferScene/CustomAttributes.h index 1c28d79729f..2befbd9ed77 100644 --- a/include/GafferScene/CustomAttributes.h +++ b/include/GafferScene/CustomAttributes.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_CUSTOMATTRIBUTES_H #define GAFFERSCENE_CUSTOMATTRIBUTES_H -#include "GafferScene/Export.h" #include "GafferScene/Attributes.h" namespace GafferScene diff --git a/include/GafferScene/Deformer.h b/include/GafferScene/Deformer.h index f38396ac72e..4f733dd7010 100644 --- a/include/GafferScene/Deformer.h +++ b/include/GafferScene/Deformer.h @@ -70,7 +70,7 @@ class GAFFERSCENE_API Deformer : public ObjectProcessor /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - Deformer( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); + Deformer( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); /// Used to determine whether adjusted bounds need to be propagated up to /// all ancestor locations. Default implementation checks the value of `adjustBoundsPlug()` diff --git a/include/GafferScene/DeleteAttributes.h b/include/GafferScene/DeleteAttributes.h index dce31fa32b6..4805292183f 100644 --- a/include/GafferScene/DeleteAttributes.h +++ b/include/GafferScene/DeleteAttributes.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_DELETEATTRIBUTES_H #define GAFFERSCENE_DELETEATTRIBUTES_H -#include "GafferScene/Export.h" #include "GafferScene/AttributeProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferScene/DeleteCurves.h b/include/GafferScene/DeleteCurves.h index 79cf955caa3..1442dd0901d 100644 --- a/include/GafferScene/DeleteCurves.h +++ b/include/GafferScene/DeleteCurves.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_DELETECURVES_H #define GAFFERSCENE_DELETECURVES_H -#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/DeleteFaces.h b/include/GafferScene/DeleteFaces.h index ac9e706c911..8bba02e4b5b 100644 --- a/include/GafferScene/DeleteFaces.h +++ b/include/GafferScene/DeleteFaces.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_DELETEFACES_H #define GAFFERSCENE_DELETEFACES_H -#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/DeleteGlobals.h b/include/GafferScene/DeleteGlobals.h index 49bcf74fa98..6abeba90766 100644 --- a/include/GafferScene/DeleteGlobals.h +++ b/include/GafferScene/DeleteGlobals.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_DELETEGLOBALS_H #define GAFFERSCENE_DELETEGLOBALS_H -#include "GafferScene/Export.h" #include "GafferScene/GlobalsProcessor.h" namespace Gaffer diff --git a/include/GafferScene/DeleteOptions.h b/include/GafferScene/DeleteOptions.h index 06393d873df..a1580b552b7 100644 --- a/include/GafferScene/DeleteOptions.h +++ b/include/GafferScene/DeleteOptions.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_DELETEOPTIONS_H #define GAFFERSCENE_DELETEOPTIONS_H -#include "GafferScene/Export.h" #include "GafferScene/DeleteGlobals.h" namespace GafferScene diff --git a/include/GafferScene/DeleteOutputs.h b/include/GafferScene/DeleteOutputs.h index 434721f5768..a07f23a0157 100644 --- a/include/GafferScene/DeleteOutputs.h +++ b/include/GafferScene/DeleteOutputs.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_DELETEOUTPUTS_H #define GAFFERSCENE_DELETEOUTPUTS_H -#include "GafferScene/Export.h" #include "GafferScene/DeleteGlobals.h" namespace GafferScene diff --git a/include/GafferScene/DeletePoints.h b/include/GafferScene/DeletePoints.h index feb4d0462ed..e5e34233f30 100644 --- a/include/GafferScene/DeletePoints.h +++ b/include/GafferScene/DeletePoints.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_DELETEPOINTS_H #define GAFFERSCENE_DELETEPOINTS_H -#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/DeletePrimitiveVariables.h b/include/GafferScene/DeletePrimitiveVariables.h index ea2e0fa3d92..618b42e0fd7 100644 --- a/include/GafferScene/DeletePrimitiveVariables.h +++ b/include/GafferScene/DeletePrimitiveVariables.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_DELETEPRIMITIVEVARIABLE_H #define GAFFERSCENE_DELETEPRIMITIVEVARIABLE_H -#include "GafferScene/Export.h" #include "GafferScene/PrimitiveVariableProcessor.h" namespace GafferScene diff --git a/include/GafferScene/DeleteSets.h b/include/GafferScene/DeleteSets.h index 807cbb70f1c..8a6f51e30d7 100644 --- a/include/GafferScene/DeleteSets.h +++ b/include/GafferScene/DeleteSets.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_DELETESETS_H #define GAFFERSCENE_DELETESETS_H -#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Encapsulate.h b/include/GafferScene/Encapsulate.h index f10b2d1168a..e550174099a 100644 --- a/include/GafferScene/Encapsulate.h +++ b/include/GafferScene/Encapsulate.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_ENCAPSULATE_H #define GAFFERSCENE_ENCAPSULATE_H -#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/ExternalProcedural.h b/include/GafferScene/ExternalProcedural.h index c9159c6816d..085dfdb9d5f 100644 --- a/include/GafferScene/ExternalProcedural.h +++ b/include/GafferScene/ExternalProcedural.h @@ -40,7 +40,6 @@ #include "GafferScene/ObjectSource.h" #include "Gaffer/CompoundDataPlug.h" -#include "Gaffer/FileSystemPathPlug.h" namespace GafferScene { @@ -55,8 +54,8 @@ class GAFFERSCENE_API ExternalProcedural : public ObjectSource ExternalProcedural( const std::string &name=defaultName() ); ~ExternalProcedural() override; - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; Gaffer::Box3fPlug *boundPlug(); const Gaffer::Box3fPlug *boundPlug() const; diff --git a/include/GafferScene/FilterPlug.h b/include/GafferScene/FilterPlug.h index 29b35ce8ed9..408c5081b4b 100644 --- a/include/GafferScene/FilterPlug.h +++ b/include/GafferScene/FilterPlug.h @@ -97,7 +97,7 @@ class GAFFERSCENE_API FilterPlug : public Gaffer::IntPlug static const IECore::InternedString inputSceneContextName; /// Provides the input scene for a filter evaluation - struct GAFFERSCENE_API SceneScope : public Gaffer::Context::EditableScope + struct SceneScope : public Gaffer::Context::EditableScope { SceneScope( const Gaffer::Context *context, const ScenePlug *scenePlug ); }; diff --git a/include/GafferScene/FilterProcessor.h b/include/GafferScene/FilterProcessor.h index 848ab63e377..c1457d3710c 100644 --- a/include/GafferScene/FilterProcessor.h +++ b/include/GafferScene/FilterProcessor.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_FILTERPROCESSOR_H #define GAFFERSCENE_FILTERPROCESSOR_H -#include "GafferScene/Export.h" #include "GafferScene/Filter.h" namespace Gaffer @@ -63,7 +62,7 @@ class GAFFERSCENE_API FilterProcessor : public Filter /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - FilterProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); + FilterProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); ~FilterProcessor() override; diff --git a/include/GafferScene/FreezeTransform.h b/include/GafferScene/FreezeTransform.h index 50b89356304..c6528b5bc70 100644 --- a/include/GafferScene/FreezeTransform.h +++ b/include/GafferScene/FreezeTransform.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_FREEZETRANSFORM_H #define GAFFERSCENE_FREEZETRANSFORM_H -#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/GlobalsProcessor.h b/include/GafferScene/GlobalsProcessor.h index 3f3f290efe5..00af82622cf 100644 --- a/include/GafferScene/GlobalsProcessor.h +++ b/include/GafferScene/GlobalsProcessor.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_GLOBALSPROCESSOR_H #define GAFFERSCENE_GLOBALSPROCESSOR_H -#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/Group.h b/include/GafferScene/Group.h index da3d8d22a33..19e526beba1 100644 --- a/include/GafferScene/Group.h +++ b/include/GafferScene/Group.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_GROUP_H #define GAFFERSCENE_GROUP_H -#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Instancer.h b/include/GafferScene/Instancer.h index 6a1a2189682..3b79d4df45f 100644 --- a/include/GafferScene/Instancer.h +++ b/include/GafferScene/Instancer.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_INSTANCER_H #define GAFFERSCENE_INSTANCER_H -#include "GafferScene/Export.h" #include "GafferScene/BranchCreator.h" namespace GafferScene @@ -53,7 +52,7 @@ class GAFFERSCENE_API Instancer : public BranchCreator /// Compound plug for representing an image format in a way /// easily edited by users, with individual child plugs for /// each aspect of the format. - class GAFFERSCENE_API ContextVariablePlug : public Gaffer::ValuePlug + class ContextVariablePlug : public Gaffer::ValuePlug { public : diff --git a/include/GafferScene/Isolate.h b/include/GafferScene/Isolate.h index e544d8882b8..ec0b17c8f94 100644 --- a/include/GafferScene/Isolate.h +++ b/include/GafferScene/Isolate.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_ISOLATE_H #define GAFFERSCENE_ISOLATE_H -#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Light.h b/include/GafferScene/Light.h index ad5ae413328..51eb90778f4 100644 --- a/include/GafferScene/Light.h +++ b/include/GafferScene/Light.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_LIGHT_H #define GAFFERSCENE_LIGHT_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" #include "Gaffer/CompoundDataPlug.h" diff --git a/include/GafferScene/LightToCamera.h b/include/GafferScene/LightToCamera.h index 67bf6c69171..dac0314842e 100644 --- a/include/GafferScene/LightToCamera.h +++ b/include/GafferScene/LightToCamera.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_LIGHTTOCAMERA_H #define GAFFERSCENE_LIGHTTOCAMERA_H -#include "GafferScene/Export.h" #include "GafferScene/SceneElementProcessor.h" namespace GafferScene diff --git a/include/GafferScene/MapOffset.h b/include/GafferScene/MapOffset.h index ef775cbfaaa..d3aabe73af9 100644 --- a/include/GafferScene/MapOffset.h +++ b/include/GafferScene/MapOffset.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_MAPOFFSET_H #define GAFFERSCENE_MAPOFFSET_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/MapProjection.h b/include/GafferScene/MapProjection.h index 1fbac650573..333576478c3 100644 --- a/include/GafferScene/MapProjection.h +++ b/include/GafferScene/MapProjection.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_MAPPROJECTION_H #define GAFFERSCENE_MAPPROJECTION_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/MeshTangents.h b/include/GafferScene/MeshTangents.h index f5419ec530d..95a61cbd431 100644 --- a/include/GafferScene/MeshTangents.h +++ b/include/GafferScene/MeshTangents.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_MESHTANGENTS_H #define GAFFERSCENE_MESHTANGENTS_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferScene/MeshToPoints.h b/include/GafferScene/MeshToPoints.h index 3ca243b5570..e3d3d868f7e 100644 --- a/include/GafferScene/MeshToPoints.h +++ b/include/GafferScene/MeshToPoints.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_MESHTOPOINTS_H #define GAFFERSCENE_MESHTOPOINTS_H -#include "GafferScene/Export.h" #include "GafferScene/Deformer.h" namespace Gaffer diff --git a/include/GafferScene/MeshType.h b/include/GafferScene/MeshType.h index dedfba609c3..1e48983fb3b 100644 --- a/include/GafferScene/MeshType.h +++ b/include/GafferScene/MeshType.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_MESHTYPE_H #define GAFFERSCENE_MESHTYPE_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/ObjectProcessor.h b/include/GafferScene/ObjectProcessor.h index 72d57b1767f..fea4ec68eee 100644 --- a/include/GafferScene/ObjectProcessor.h +++ b/include/GafferScene/ObjectProcessor.h @@ -66,7 +66,7 @@ class GAFFERSCENE_API ObjectProcessor : public FilteredSceneProcessor /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - ObjectProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); + ObjectProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); /// Must be implemented by derived classes to return true if `input` is used /// by `computeProcessedObject()`. Overrides must start by calling the base diff --git a/include/GafferScene/ObjectToScene.h b/include/GafferScene/ObjectToScene.h index fee894643d7..7bbc44cd0f0 100644 --- a/include/GafferScene/ObjectToScene.h +++ b/include/GafferScene/ObjectToScene.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_OBJECTTOSCENE_H #define GAFFERSCENE_OBJECTTOSCENE_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" namespace GafferScene diff --git a/include/GafferScene/OpenGLAttributes.h b/include/GafferScene/OpenGLAttributes.h index 3628d5f3128..798df8aa35c 100644 --- a/include/GafferScene/OpenGLAttributes.h +++ b/include/GafferScene/OpenGLAttributes.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_OPENGLATTRIBUTES_H #define GAFFERSCENE_OPENGLATTRIBUTES_H -#include "GafferScene/Export.h" #include "GafferScene/Attributes.h" namespace GafferScene diff --git a/include/GafferScene/OpenGLRender.h b/include/GafferScene/OpenGLRender.h index 301d4cdfac0..52c49294355 100644 --- a/include/GafferScene/OpenGLRender.h +++ b/include/GafferScene/OpenGLRender.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_OPENGLRENDER_H #define GAFFERSCENE_OPENGLRENDER_H -#include "GafferScene/Export.h" #include "GafferScene/Render.h" namespace GafferScene diff --git a/include/GafferScene/OpenGLShader.h b/include/GafferScene/OpenGLShader.h index 282a26b9902..f3786213362 100644 --- a/include/GafferScene/OpenGLShader.h +++ b/include/GafferScene/OpenGLShader.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_OPENGLSHADER_H #define GAFFERSCENE_OPENGLSHADER_H -#include "GafferScene/Export.h" #include "GafferScene/Shader.h" namespace GafferScene diff --git a/include/GafferScene/Parent.h b/include/GafferScene/Parent.h index da565e0cbce..a661357793e 100644 --- a/include/GafferScene/Parent.h +++ b/include/GafferScene/Parent.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_PARENT_H #define GAFFERSCENE_PARENT_H -#include "GafferScene/Export.h" #include "GafferScene/BranchCreator.h" #include "Gaffer/ArrayPlug.h" diff --git a/include/GafferScene/PathMatcher.h b/include/GafferScene/PathMatcher.h deleted file mode 100644 index deb257f5e84..00000000000 --- a/include/GafferScene/PathMatcher.h +++ /dev/null @@ -1,337 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2012, John Haddon. All rights reserved. -// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFER_PATHMATCHER_H -#define GAFFER_PATHMATCHER_H - -#include "IECore/TypedData.h" - -#include "GafferScene/Export.h" -#include "GafferScene/Filter.h" - -namespace GafferScene -{ - -/// The PathMatcher class provides an acceleration structure for matching -/// paths against a sequence of reference paths. It provides the internal -/// implementation for the PathFilter. -class GAFFERSCENE_API PathMatcher -{ - - public : - - PathMatcher(); - /// Copy constructor. Uses lazy-copy-on-write so - /// that copies are cheap until edited. - PathMatcher( const PathMatcher &other ); - - template - PathMatcher( PathIterator pathsBegin, PathIterator pathsEnd ); - - template - void init( PathIterator pathsBegin, PathIterator pathsEnd ); - - /// Returns true if the path was added, false if - /// it was already there. - bool addPath( const std::string &path ); - bool addPath( const std::vector &path ); - /// Returns true if the path was removed, false if - /// it was not there. - bool removePath( const std::string &path ); - bool removePath( const std::vector &path ); - - /// Adds all paths from the other PathMatcher, returning true if - /// any were added, and false if they were all already present. - bool addPaths( const PathMatcher &paths ); - /// As above, but prefixing the paths that are added. - bool addPaths( const PathMatcher &paths, const std::vector &prefix ); - /// Removes all specified paths, returning true if any paths - /// were removed, and false if none existed anyway. - bool removePaths( const PathMatcher &paths ); - - /// Returns a PathMatcher for objects matching both this and the given PathMatcher - PathMatcher intersection( const PathMatcher &paths ); - - /// Removes the specified path and all descendant paths. - /// Returns true if something was removed, false otherwise. - bool prune( const std::string &path ); - bool prune( const std::vector &path ); - - /// Constructs a new PathMatcher by rerooting all the paths - /// below prefix to /. - PathMatcher subTree( const std::string &root ) const; - PathMatcher subTree( const std::vector &root ) const; - - void clear(); - - bool isEmpty() const; - - /// Fills the paths container with all the paths held - /// within this matcher. Iterators should be preferred - /// over this method. - void paths( std::vector &paths ) const; - - /// Result is a bitwise or of the relevant values - /// from Filter::Result. - unsigned match( const std::string &path ) const; - unsigned match( const std::vector &path ) const; - - bool operator == ( const PathMatcher &other ) const; - bool operator != ( const PathMatcher &other ) const; - - class RawIterator; - class Iterator; - - /// Returns an iterator to the start of the - /// tree of paths. - RawIterator begin() const; - /// Returns an iterator to the end of the - /// tree of paths. - RawIterator end() const; - /// Returns an iterator to the specified path, - /// or end() if it does not exist. - RawIterator find( const std::vector &path ) const; - - private : - - IE_CORE_FORWARDDECLARE( Node ) - - PathMatcher( const NodePtr &root ); - - // Struct used to store the name for each node in the tree of paths. - // This is just an InternedString with an extra field used to separate - // names containing wildcards from plain names - since they need to - // be used with `match()` or the special ellipsis matching code. - struct Name - { - - enum Type - { - Plain = 0, // No wildcards - Boundary = 1, // Marker between plain and wildcarded - Wildcarded = 2 // Has wildcards or ... - }; - - Name( IECore::InternedString name ); - // Allows explicit instantiation of the type member - - // use with care! - Name( IECore::InternedString name, Type type ); - - // Less than implemented to do a lexicographical comparison, - // first on type and then on the name. This has the effect of - // segregating plain strings from wildcarded strings with the - // Boundary type providing a marker between them. The comparison - // of the name uses the InternedString operator which compares - // via pointer rather than string content, which gives improved - // performance. - bool operator < ( const Name &other ) const; - - const IECore::InternedString name; - const unsigned char type; - - }; - - class Node : public IECore::RefCounted - { - - public : - - // Container used to store all the children of the node. - // We need two things out of this structure - quick access - // to the child with a specific name, and also partitioning - // between names with wildcards and those without. This is - // achieved by using an ordered container, and having the - // less than operation for Names sort first on hasWildcards - // and second on the name. - typedef std::map ChildMap; - typedef ChildMap::iterator ChildMapIterator; - typedef ChildMap::value_type ChildMapValue; - typedef ChildMap::const_iterator ConstChildMapIterator; - - Node( bool terminator = false ); - // Shallow copy. - Node( const Node &other ); - ~Node(); - - // Returns an iterator to the first child whose name contains wildcards. - // All children between here and children.end() will also contain wildcards. - ConstChildMapIterator wildcardsBegin() const; - - Node *child( const Name &name ); - const Node *child( const Name &name ) const; - - bool operator == ( const Node &other ) const; - - bool operator != ( const Node &other ); - - bool clearChildren(); - bool isEmpty(); - - ChildMap children; - bool terminator; - - // For most Node trees, the number of leaf nodes - // exceeds the number of branch nodes. Since by - // definition all leaf nodes are terminators with - // no children, we can save memory by always using - // this single shared node instance when adding a - // leaf node. - static Node *leaf(); - - }; - - typedef std::vector::const_iterator NameIterator; - - // Utility used in lazy-copy-on-write. - PathMatcher::Node *writable( Node *node, NodePtr &writableCopy, bool shared ); - - // Recursive method used to add a path to a Node tree. Since nodes may be shared among multiple - // trees, we perform lazy-copy-on-write when needing to edit a shared node. When we do this, - // the copy is returned so that it can be used to replace the old child. - NodePtr addWalk( Node *node, const NameIterator &start, const NameIterator &end, bool shared, bool &added ); - NodePtr removeWalk( Node *node, const NameIterator &start, const NameIterator &end, bool shared, const bool prune, bool &removed ); - NodePtr addPathsWalk( Node *node, const Node *srcNode, bool shared, bool &added ); - NodePtr addPrefixedPathsWalk( Node *node, const Node *srcNode, const NameIterator &start, const NameIterator &end, bool shared, bool &added ); - NodePtr removePathsWalk( Node *node, const Node *srcNode, bool shared, bool &removed ); - - void matchWalk( const Node *node, const NameIterator &start, const NameIterator &end, unsigned &result ) const; - - NodePtr m_root; - -}; - -/// Iterates over the tree of paths in a PathMatcher, visiting not only the locations -/// explicitly added with addPath(), but also their ancestor locations. Iteration is -/// guaranteed to be depth-first recursive, but the order of iteration over siblings -/// at the same depth is not guaranteed. For an iterator which ignores ancestor -/// locations, see the PathMatcher::Iterator class. -class PathMatcher::RawIterator : public boost::iterator_facade, boost::forward_traversal_tag> -{ - - public : - - /// Calling prune() causes the next increment to skip any recursion - /// that it would normally perform. - void prune(); - - /// Returns true if this path is in the matcher because it - /// has been explicitly added with addPath(), and will therefore - /// yield an exact match. If this returns false, then this - /// path exists in the matcher only as the ancestor of descendant - /// paths for which exactMatch() will be true. - const bool exactMatch() const; - - private : - - friend class boost::iterator_core_access; - friend class PathMatcher; - friend class Iterator; - - // Private constructor, called by PathMatcher::begin() and PathMatcher::end(). - RawIterator( const PathMatcher &matcher, bool atEnd ); - // Private constructor, called by PathPatcher::find(). - RawIterator( const PathMatcher &matcher, const std::vector &path ); - - ////////////////////////////////////////////////// - // Methods required by boost::iterator_facade - ////////////////////////////////////////////////// - - void increment(); - bool equal( const RawIterator &other ) const; - const std::vector &dereference() const; - - ////////////////////////////////////////////////// - // Our own internal methods. - ////////////////////////////////////////////////// - - Node *node() const; - - // Keeps track of our iteration at a given depth in - // the hierarchy. We keep a stack of these to allow - // us to perform recursion. - struct Level - { - - Level( const Node::ChildMap &children, Node::ConstChildMapIterator it ); - - bool operator == ( const Level &other ) const; - - Node::ConstChildMapIterator end; - Node::ConstChildMapIterator it; - - }; - - typedef std::vector Levels; - Levels m_stack; - std::vector m_path; - // Because there is no ChildMapIterator for the root - // node, we have to store it explicitly. The value - // will be non-null only when we're pointing at the root. - Node *m_nodeIfRoot; - bool m_pruned; - -}; - -/// Iterates over the tree of paths in a PathMatcher, visiting only the locations -/// explicitly added with addPath(). Iteration is guaranteed to be depth-first recursive, -/// but the order of iteration over siblings at the same depth is not guaranteed. -class PathMatcher::Iterator : public boost::iterator_adaptor -{ - - public : - - Iterator( const RawIterator &it ); - - bool operator==( const RawIterator &rhs ) const; - bool operator!=( const RawIterator &rhs ) const; - - void prune(); - - private : - - friend class boost::iterator_core_access; - - void increment(); - void satisfyTerminatorRequirement(); - -}; - -} // namespace GafferScene - -#include "GafferScene/PathMatcher.inl" - -#endif // GAFFER_PATHMATCHER_H diff --git a/include/GafferScene/PointConstraint.h b/include/GafferScene/PointConstraint.h index ff68bd26ac8..f5068f1d377 100644 --- a/include/GafferScene/PointConstraint.h +++ b/include/GafferScene/PointConstraint.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_POINTCONSTRAINT_H #define GAFFERSCENE_POINTCONSTRAINT_H -#include "GafferScene/Export.h" #include "GafferScene/Constraint.h" namespace GafferScene diff --git a/include/GafferScene/PointsType.h b/include/GafferScene/PointsType.h index aac6176acf5..81c57ce4e38 100644 --- a/include/GafferScene/PointsType.h +++ b/include/GafferScene/PointsType.h @@ -37,8 +37,6 @@ #ifndef GAFFERSCENE_POINTSTYPE_H #define GAFFERSCENE_POINTSTYPE_H -#include "GafferScene/Export.h" - #include "GafferScene/ObjectProcessor.h" namespace Gaffer diff --git a/include/GafferScene/Preview/InteractiveRender.h b/include/GafferScene/Preview/InteractiveRender.h deleted file mode 100644 index 7cc424c75a8..00000000000 --- a/include/GafferScene/Preview/InteractiveRender.h +++ /dev/null @@ -1,148 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2013, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENE_PREVIEW_INTERACTIVERENDER_H -#define GAFFERSCENE_PREVIEW_INTERACTIVERENDER_H - -#include "Gaffer/Node.h" - -#include "GafferScene/Export.h" -#include "GafferScene/ScenePlug.h" -#include "GafferScene/Preview/RendererAlgo.h" -#include "GafferScene/Private/IECoreScenePreview/Renderer.h" - -namespace Gaffer -{ - -IE_CORE_FORWARDDECLARE( Context ) -IE_CORE_FORWARDDECLARE( StringPlug ) - -} // namespace Gaffer - -namespace GafferScene -{ - -namespace Preview -{ - -class GAFFERSCENE_API InteractiveRender : public Gaffer::Node -{ - - public : - - InteractiveRender( const std::string &name=defaultName() ); - virtual ~InteractiveRender(); - - IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferScene::Preview::InteractiveRender, GafferScene::PreviewInteractiveRenderTypeId, Gaffer::Node ); - - enum State - { - Stopped, - Running, - Paused - }; - - GafferScene::ScenePlug *inPlug(); - const GafferScene::ScenePlug *inPlug() const; - - Gaffer::StringPlug *rendererPlug(); - const Gaffer::StringPlug *rendererPlug() const; - - Gaffer::IntPlug *statePlug(); - const Gaffer::IntPlug *statePlug() const; - - GafferScene::ScenePlug *outPlug(); - const GafferScene::ScenePlug *outPlug() const; - - /// Specifies a context in which the InteractiveRender should operate. - /// The default is NULL, meaning that the context of the ancestor - /// ScriptNode will be used, or failing that, a default context. - void setContext( Gaffer::ContextPtr context ); - Gaffer::Context *getContext(); - const Gaffer::Context *getContext() const; - - protected : - - // Constructor for derived classes which wish to hardcode the renderer type. Perhaps - // at some point we won't even have derived classes, but instead will always use the - // base class? At the moment the main purpose of the derived classes is to force the - // loading of the module which registers the required renderer type. - InteractiveRender( const IECore::InternedString &rendererType, const std::string &name ); - - private : - - void construct( const IECore::InternedString &rendererType = IECore::InternedString() ); - - ScenePlug *adaptedInPlug(); - const ScenePlug *adaptedInPlug() const; - - void plugDirtied( const Gaffer::Plug *plug ); - void contextChanged( const IECore::InternedString &name ); - - void update(); - void updateEffectiveContext(); - void updateDefaultCamera(); - void stop(); - - class SceneGraph; - class SceneGraphUpdateTask; - - std::vector > m_sceneGraphs; - IECoreScenePreview::RendererPtr m_renderer; - State m_state; - unsigned m_dirtyComponents; - IECore::ConstCompoundObjectPtr m_globals; - GafferScene::Preview::RendererAlgo::RenderSets m_renderSets; - IECoreScenePreview::Renderer::ObjectInterfacePtr m_defaultCamera; - - Gaffer::ContextPtr m_context; // Accessed with setContext()/getContext() - Gaffer::ContextPtr m_effectiveContext; // Base context actually used for rendering - boost::signals::scoped_connection m_contextChangedConnection; - - static size_t g_firstPlugIndex; - -}; - -IE_CORE_DECLAREPTR( InteractiveRender ); - -typedef Gaffer::FilteredChildIterator > InteractiveRenderIterator; -typedef Gaffer::FilteredRecursiveChildIterator > RecursiveInteractiveRenderIterator; - -} // namespace Preview - -} // namespace GafferScene - -#endif // GAFFERSCENE_PREVIEW_INTERACTIVERENDER_H diff --git a/include/GafferScene/Preview/RendererAlgo.h b/include/GafferScene/Preview/RendererAlgo.h deleted file mode 100644 index f6a7dc8a039..00000000000 --- a/include/GafferScene/Preview/RendererAlgo.h +++ /dev/null @@ -1,128 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENE_PREVIEW_RENDERERALGO_H -#define GAFFERSCENE_PREVIEW_RENDERERALGO_H - -#include "boost/container/flat_map.hpp" - -#include "IECore/VectorTypedData.h" - -#include "GafferScene/Export.h" -#include "GafferScene/PathMatcher.h" -#include "GafferScene/Private/IECoreScenePreview/Renderer.h" - -namespace GafferScene -{ - -IE_CORE_FORWARDDECLARE( ScenePlug ) - -namespace Preview -{ - -namespace RendererAlgo -{ - -void outputOptions( const IECore::CompoundObject *globals, IECoreScenePreview::Renderer *renderer ); -void outputOptions( const IECore::CompoundObject *globals, const IECore::CompoundObject *previousGlobals, IECoreScenePreview::Renderer *renderer ); - -void outputOutputs( const IECore::CompoundObject *globals, IECoreScenePreview::Renderer *renderer ); -void outputOutputs( const IECore::CompoundObject *globals, const IECore::CompoundObject *previousGlobals, IECoreScenePreview::Renderer *renderer ); - -/// Utility class to handle all the set computations needed for a render. -class GAFFERSCENE_API RenderSets : boost::noncopyable -{ - - public : - - RenderSets(); - RenderSets( const ScenePlug *scene ); - - enum Changed - { - NothingChanged = 0, - CamerasSetChanged = 1, - LightsSetChanged = 2, - RenderSetsChanged = 4 - }; - - /// Returns a bitmask describing which sets - /// changed. - unsigned update( const ScenePlug *scene ); - void clear(); - - const PathMatcher &camerasSet() const; - const PathMatcher &lightsSet() const; - - IECore::ConstInternedStringVectorDataPtr setsAttribute( const std::vector &path ) const; - - private : - - struct Set - { - IECore::InternedString unprefixedName; // With "render:" stripped off - IECore::MurmurHash hash; - PathMatcher set; - }; - - typedef boost::container::flat_map Sets; - - struct Updater; - - // Stores all the "render:" sets. - Sets m_sets; - Set m_camerasSet; - Set m_lightsSet; - -}; - -void outputCameras( const ScenePlug *scene, const IECore::CompoundObject *globals, const RenderSets &renderSets, IECoreScenePreview::Renderer *renderer ); -void outputLights( const ScenePlug *scene, const IECore::CompoundObject *globals, const RenderSets &renderSets, IECoreScenePreview::Renderer *renderer ); -void outputObjects( const ScenePlug *scene, const IECore::CompoundObject *globals, const RenderSets &renderSets, IECoreScenePreview::Renderer *renderer ); - -/// Applies the resolution, aspect ratio etc from the globals to the camera. -void applyCameraGlobals( IECore::Camera *camera, const IECore::CompoundObject *globals ); - -} // namespace RendererAlgo - -/// \todo Remove this temporary backwards compatibility. -using namespace RendererAlgo; - -} // namespace Preview - -} // namespace GafferScene - -#endif // GAFFERSCENE_PREVIEW_RENDERERALGO_H diff --git a/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h b/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h index c4dcd0ca207..06d55fd7615 100644 --- a/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h +++ b/include/GafferScene/Private/IECoreScenePreview/CapturingRenderer.h @@ -54,7 +54,7 @@ namespace IECoreScenePreview /// If the Bool `cr:unrenderable` attribute is set to true at a location, then /// calls to object, light, lightFilter, camera, etc... for that location will /// return nullptr rather than a valid ObjectInterface. -class GAFFERSCENE_API CapturingRenderer : public Renderer +class IECORESCENE_API CapturingRenderer : public Renderer { public : @@ -71,7 +71,7 @@ class GAFFERSCENE_API CapturingRenderer : public Renderer /// Introspection /// ============= - class GAFFERSCENE_API CapturedAttributes : public AttributesInterface + class CapturedAttributes : public AttributesInterface { public : @@ -92,7 +92,7 @@ class GAFFERSCENE_API CapturingRenderer : public Renderer IE_CORE_DECLAREPTR( CapturedAttributes ); - class GAFFERSCENE_API CapturedObject : public ObjectInterface + class CapturedObject : public ObjectInterface { public : diff --git a/include/GafferScene/Private/IECoreScenePreview/Geometry.h b/include/GafferScene/Private/IECoreScenePreview/Geometry.h index 3944e861026..416bcc91d02 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Geometry.h +++ b/include/GafferScene/Private/IECoreScenePreview/Geometry.h @@ -35,8 +35,6 @@ #ifndef IECORE_GEOMETRY_H #define IECORE_GEOMETRY_H -#include "GafferScene/Export.h" - #include "GafferScene/TypeIds.h" #include "IECoreScene/VisibleRenderable.h" @@ -46,7 +44,7 @@ namespace IECoreScenePreview /// Class used to represent additional geometry types supported /// by specific renderers but not present in Cortex (think RiGeometry). -class GAFFERSCENE_API Geometry : public IECoreScene::VisibleRenderable +class IECORESCENE_API Geometry : public IECoreScene::VisibleRenderable { public: diff --git a/include/GafferScene/Private/IECoreScenePreview/Procedural.h b/include/GafferScene/Private/IECoreScenePreview/Procedural.h index c882ce14b3d..6dddf0c8a84 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Procedural.h +++ b/include/GafferScene/Private/IECoreScenePreview/Procedural.h @@ -37,8 +37,6 @@ #ifndef IECORESCENEPREVIEW_PROCEDURAL_H #define IECORESCENEPREVIEW_PROCEDURAL_H -#include "GafferScene/Export.h" - #include "GafferScene/TypeIds.h" #include "IECoreScene/VisibleRenderable.h" @@ -50,7 +48,7 @@ class Renderer; /// \todo Would it be useful to have a virtual function that returns an /// ExternalProcedural, for use when serialising scenes? -class GAFFERSCENE_API Procedural : public IECoreScene::VisibleRenderable +class IECORESCENE_API Procedural : public IECoreScene::VisibleRenderable { public : diff --git a/include/GafferScene/Private/IECoreScenePreview/Renderer.h b/include/GafferScene/Private/IECoreScenePreview/Renderer.h index 3517985d094..a4cb355a2d0 100644 --- a/include/GafferScene/Private/IECoreScenePreview/Renderer.h +++ b/include/GafferScene/Private/IECoreScenePreview/Renderer.h @@ -37,8 +37,6 @@ #ifndef IECORESCENEPREVIEW_RENDERER_H #define IECORESCENEPREVIEW_RENDERER_H -#include "GafferScene/Export.h" - #include "IECoreScene/Camera.h" #include "IECoreScene/Output.h" @@ -72,12 +70,12 @@ namespace IECoreScenePreview /// - Change the python bindings so that the lifetime of the object /// handles and the renderer are tied together, or have the object /// handles keep the renderer alive on the C++ side anyway. -class GAFFERSCENE_API Renderer : public IECore::RefCounted +class IECORESCENE_API Renderer : public IECore::RefCounted { public : - enum GAFFERSCENE_API RenderType + enum RenderType { /// Locations are emitted to the renderer immediately /// and not retained for later editing. @@ -121,7 +119,7 @@ class GAFFERSCENE_API Renderer : public IECore::RefCounted /// A handle to a block of attributes. Currently all /// AttributesInterfaces _must_ be destroyed prior /// to destruction of the renderer itself. - class GAFFERSCENE_API AttributesInterface : public IECore::RefCounted + class AttributesInterface : public IECore::RefCounted { public : @@ -169,7 +167,7 @@ class GAFFERSCENE_API Renderer : public IECore::RefCounted /// /// Currently all ObjectInterfaces _must_ be destroyed prior to destruction /// of the renderer itself. - class GAFFERSCENE_API ObjectInterface : public IECore::RefCounted + class ObjectInterface : public IECore::RefCounted { public : diff --git a/include/GafferScene/Prune.h b/include/GafferScene/Prune.h index 66fa8c49004..b10e7af62c7 100644 --- a/include/GafferScene/Prune.h +++ b/include/GafferScene/Prune.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_PRUNE_H #define GAFFERSCENE_PRUNE_H -#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/Render.h b/include/GafferScene/Render.h index 0107ea4d06b..b0f586a6e4d 100644 --- a/include/GafferScene/Render.h +++ b/include/GafferScene/Render.h @@ -44,7 +44,6 @@ #include "Gaffer/NumericPlug.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" namespace GafferScene { @@ -76,8 +75,8 @@ class GAFFERSCENE_API Render : public GafferDispatch::TaskNode Gaffer::IntPlug *modePlug(); const Gaffer::IntPlug *modePlug() const; - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; ScenePlug *outPlug(); const ScenePlug *outPlug() const; diff --git a/include/GafferScene/ResamplePrimitiveVariables.h b/include/GafferScene/ResamplePrimitiveVariables.h index e05a26f1012..9fab1cfed03 100644 --- a/include/GafferScene/ResamplePrimitiveVariables.h +++ b/include/GafferScene/ResamplePrimitiveVariables.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_RESAMPLEPRIMITIVEVARIABLES_H #define GAFFERSCENE_RESAMPLEPRIMITIVEVARIABLES_H -#include "GafferScene/Export.h" #include "GafferScene/PrimitiveVariableProcessor.h" namespace GafferScene diff --git a/include/GafferScene/SceneElementProcessor.h b/include/GafferScene/SceneElementProcessor.h index 3e3ed7ecc78..a832f027749 100644 --- a/include/GafferScene/SceneElementProcessor.h +++ b/include/GafferScene/SceneElementProcessor.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_SCENEELEMENTPROCESSOR_H #define GAFFERSCENE_SCENEELEMENTPROCESSOR_H -#include "GafferScene/Export.h" #include "GafferScene/FilteredSceneProcessor.h" namespace GafferScene diff --git a/include/GafferScene/ScenePlug.h b/include/GafferScene/ScenePlug.h index c7a98e3f2c0..98c9e9e1484 100644 --- a/include/GafferScene/ScenePlug.h +++ b/include/GafferScene/ScenePlug.h @@ -153,7 +153,7 @@ class GAFFERSCENE_API ScenePlug : public Gaffer::ValuePlug /// Utility class to scope a temporary copy of a context, /// specifying the scene path. - struct GAFFERSCENE_API PathScope : public Gaffer::Context::EditableScope + struct PathScope : public Gaffer::Context::EditableScope { /// Standard constructors, for modifying context on the current thread. PathScope( const Gaffer::Context *context ); @@ -169,7 +169,7 @@ class GAFFERSCENE_API ScenePlug : public Gaffer::ValuePlug /// Utility class to scope a temporary copy of a context, /// specifying the set name. - struct GAFFERSCENE_API SetScope : public Gaffer::Context::EditableScope + struct SetScope : public Gaffer::Context::EditableScope { /// Standard constructors, for modifying context on the current thread. SetScope( const Gaffer::Context *context ); @@ -188,7 +188,7 @@ class GAFFERSCENE_API ScenePlug : public Gaffer::ValuePlug /// when evaluating plugs which must not be sensitive /// to such variables, and can improve performance by /// reducing pressure on the hash cache. - struct GAFFERSCENE_API GlobalScope : public Gaffer::Context::EditableScope + struct GlobalScope : public Gaffer::Context::EditableScope { /// Standard constructor, for modifying context on the current thread. GlobalScope( const Gaffer::Context *context ); @@ -290,6 +290,6 @@ typedef Gaffer::FilteredRecursiveChildIterator AllRenderedSignal; - - /// A signal emitted when all pending SceneProcedurals have been rendered or destroyed - static AllRenderedSignal &allRenderedSignal(); - - protected : - - SceneProcedural( const SceneProcedural &other, const ScenePlug::ScenePath &scenePath ); - - // This class must hold a reference to the script node, to prevent it from being - // destroyed mid-render. - Gaffer::ConstScriptNodePtr m_scriptNode; - ConstScenePlugPtr m_scenePlug; - Gaffer::ContextPtr m_context; - ScenePlug::ScenePath m_scenePath; - - struct Options - { - bool transformBlur; - bool deformationBlur; - Imath::V2f shutter; - }; - - Options m_options; - - struct Attributes - { - bool transformBlur; - unsigned transformBlurSegments; - bool deformationBlur; - unsigned deformationBlurSegments; - }; - - Attributes m_attributes; - IECore::ConstCompoundObjectPtr m_attributesObject; - - private : - - void updateAttributes(); - void initBound( bool compute ); - void motionTimes( unsigned segments, std::set × ) const; - - // A global counter of all the scene procedurals that are hanging around but haven't been rendered yet, which - // gets incremented in the constructor and decremented in doRender() or the destructor, whichever happens first. - // When this counter falls to zero, a signal is emitted, so you can eg clear the cache when procedural expansion - // has finished during a render. - static tbb::atomic g_pendingSceneProcedurals; - - - // Indicates if SceneProcedural::doRender() has been called. If not, g_pendingSceneProcedurals is decremented in the - // destructor - mutable bool m_rendered; - - void decrementPendingProcedurals() const; - - // We use this variable for caching the bound computation, so we can compute bounds for - // a SceneProcedural's children in parallel, and avoid computing them again when we send - // them all to the renderer in serial - Imath::Box3f m_bound; - - // struct for creating child procedurals in parallel and computing their bounds, using - // tbb::parallel_for: - class SceneProceduralCreate; - - static tbb::mutex g_allRenderedMutex; - static AllRenderedSignal g_allRenderedSignal; - -}; - -IE_CORE_DECLAREPTR( SceneProcedural ); - -} // namespace GafferScene - -#endif // GAFFERSCENE_SCENEPROCEDURAL_H diff --git a/include/GafferScene/SceneProcessor.h b/include/GafferScene/SceneProcessor.h index 2c02c49126d..9ba6f50dbe7 100644 --- a/include/GafferScene/SceneProcessor.h +++ b/include/GafferScene/SceneProcessor.h @@ -38,9 +38,6 @@ #ifndef GAFFERSCENE_SCENEPROCESSOR_H #define GAFFERSCENE_SCENEPROCESSOR_H -#include - -#include "GafferScene/Export.h" #include "GafferScene/SceneNode.h" namespace Gaffer @@ -66,7 +63,7 @@ class GAFFERSCENE_API SceneProcessor : public SceneNode /// Constructs with an ArrayPlug called "in". Use inPlug() as a /// convenience for accessing the first child in the array, and use /// inPlugs() to access the array itself. - SceneProcessor( const std::string &name, size_t minInputs, size_t maxInputs = std::numeric_limits::max() ); + SceneProcessor( const std::string &name, size_t minInputs, size_t maxInputs = Imath::limits::max() ); ~SceneProcessor() override; diff --git a/include/GafferScene/SceneReader.h b/include/GafferScene/SceneReader.h index fe2aae613f2..12315c55cd9 100644 --- a/include/GafferScene/SceneReader.h +++ b/include/GafferScene/SceneReader.h @@ -47,7 +47,6 @@ namespace Gaffer { IE_CORE_FORWARDDECLARE( StringPlug ) -IE_CORE_FORWARDDECLARE( FileSystemPathPlug ) IE_CORE_FORWARDDECLARE( TransformPlug ) } // namespace Gaffer @@ -66,8 +65,8 @@ class GAFFERSCENE_API SceneReader : public SceneNode GAFFER_NODE_DECLARE_TYPE( GafferScene::SceneReader, SceneReaderTypeId, SceneNode ) /// Holds the name of the file to be loaded. - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; /// Number of times the node has been refreshed. Gaffer::IntPlug *refreshCountPlug(); diff --git a/include/GafferScene/SceneWriter.h b/include/GafferScene/SceneWriter.h index 91c0061d5d9..13a5ad9702b 100644 --- a/include/GafferScene/SceneWriter.h +++ b/include/GafferScene/SceneWriter.h @@ -44,7 +44,6 @@ #include "Gaffer/TypedPlug.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "IECoreScene/SceneInterface.h" @@ -61,8 +60,8 @@ class GAFFERSCENE_API SceneWriter : public GafferDispatch::TaskNode GAFFER_NODE_DECLARE_TYPE( GafferScene::SceneWriter, SceneWriterTypeId, GafferDispatch::TaskNode ); - Gaffer::FileSystemPathPlug *fileNamePlug(); - const Gaffer::FileSystemPathPlug *fileNamePlug() const; + Gaffer::StringPlug *fileNamePlug(); + const Gaffer::StringPlug *fileNamePlug() const; ScenePlug *inPlug(); const ScenePlug *inPlug() const; diff --git a/include/GafferScene/Seeds.h b/include/GafferScene/Seeds.h index 788a3ae4865..d3bfd9e31b9 100644 --- a/include/GafferScene/Seeds.h +++ b/include/GafferScene/Seeds.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_SEEDS_H #define GAFFERSCENE_SEEDS_H -#include "GafferScene/Export.h" #include "GafferScene/BranchCreator.h" namespace GafferScene diff --git a/include/GafferScene/ShaderAssignment.h b/include/GafferScene/ShaderAssignment.h index 0bbc0d2c103..ce626efc40f 100644 --- a/include/GafferScene/ShaderAssignment.h +++ b/include/GafferScene/ShaderAssignment.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_SHADERASSIGNMENT_H #define GAFFERSCENE_SHADERASSIGNMENT_H -#include "GafferScene/Export.h" #include "GafferScene/AttributeProcessor.h" #include "GafferScene/ShaderPlug.h" diff --git a/include/GafferScene/StandardAttributes.h b/include/GafferScene/StandardAttributes.h index 37337c078db..77cb597794a 100644 --- a/include/GafferScene/StandardAttributes.h +++ b/include/GafferScene/StandardAttributes.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_STANDARDATTRIBUTES_H #define GAFFERSCENE_STANDARDATTRIBUTES_H -#include "GafferScene/Export.h" #include "GafferScene/Attributes.h" namespace GafferScene diff --git a/include/GafferScene/StandardOptions.h b/include/GafferScene/StandardOptions.h index 35f7a9f70fb..914b6cd2647 100644 --- a/include/GafferScene/StandardOptions.h +++ b/include/GafferScene/StandardOptions.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_STANDARDOPTIONS_H #define GAFFERSCENE_STANDARDOPTIONS_H -#include "GafferScene/Export.h" #include "GafferScene/Options.h" namespace GafferScene diff --git a/include/GafferScene/SubTree.h b/include/GafferScene/SubTree.h index 203c26d9e8d..fc7a391a81f 100644 --- a/include/GafferScene/SubTree.h +++ b/include/GafferScene/SubTree.h @@ -38,7 +38,6 @@ #ifndef GAFFERSCENE_SUBTREE_H #define GAFFERSCENE_SUBTREE_H -#include "GafferScene/Export.h" #include "GafferScene/SceneProcessor.h" #include "Gaffer/StringPlug.h" diff --git a/include/GafferScene/Text.h b/include/GafferScene/Text.h index 9026d7f74ad..5dd48a527f6 100644 --- a/include/GafferScene/Text.h +++ b/include/GafferScene/Text.h @@ -37,19 +37,11 @@ #ifndef GAFFERSCENE_TEXT_H #define GAFFERSCENE_TEXT_H -#include "GafferScene/Export.h" #include "GafferScene/ObjectSource.h" -#include "Gaffer/FileSystemPathPlug.h" namespace GafferScene { -#ifdef _WIN32 - #define ENVSEP ";" -#else - #define ENVSEP ":" -#endif - class GAFFERSCENE_API Text : public ObjectSource { @@ -63,8 +55,8 @@ class GAFFERSCENE_API Text : public ObjectSource Gaffer::StringPlug *textPlug(); const Gaffer::StringPlug *textPlug() const; - Gaffer::FileSystemPathPlug *fontPlug(); - const Gaffer::FileSystemPathPlug *fontPlug() const; + Gaffer::StringPlug *fontPlug(); + const Gaffer::StringPlug *fontPlug() const; void affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const override; diff --git a/include/GafferScene/UnionFilter.h b/include/GafferScene/UnionFilter.h index f4d9c5b1fff..3bb46dabe75 100644 --- a/include/GafferScene/UnionFilter.h +++ b/include/GafferScene/UnionFilter.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENE_UNIONFILTER_H #define GAFFERSCENE_UNIONFILTER_H -#include "GafferScene/Export.h" #include "GafferScene/FilterProcessor.h" namespace GafferScene diff --git a/include/GafferSceneBindings/Export.h b/include/GafferSceneBindings/Export.h deleted file mode 100644 index 8a4a8325bcd..00000000000 --- a/include/GafferSceneBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENEBINDINGS_EXPORT_H -#define GAFFERSCENEBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERSCENEBINDINGS_API macro based on whether or not we are compiling -// GafferSceneBindings, or including headers for linking to it. the GAFFERSCENEBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferSceneBindings_EXPORTS - #define GAFFERSCENEBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERSCENEBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERSCENEBINDINGS_EXPORT_H diff --git a/include/GafferSceneBindings/MeshToPointsBinding.h b/include/GafferSceneBindings/MeshToPointsBinding.h deleted file mode 100644 index 4c2362f888e..00000000000 --- a/include/GafferSceneBindings/MeshToPointsBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENEBINDINGS_MESHTOPOINTSBINDING_H -#define GAFFERSCENEBINDINGS_MESHTOPOINTSBINDING_H - -#include "GafferSceneBindings/Export.h" - -namespace GafferSceneBindings -{ - -GAFFERSCENEBINDINGS_API void bindMeshToPoints(); - -} // namespace GafferSceneBindings - -#endif // GAFFERSCENEBINDINGS_MESHTOPOINTSBINDING_H diff --git a/include/GafferSceneBindings/SceneFilterPathFilterBinding.h b/include/GafferSceneBindings/SceneFilterPathFilterBinding.h deleted file mode 100644 index 19b77003e77..00000000000 --- a/include/GafferSceneBindings/SceneFilterPathFilterBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENEBINDINGS_SCENEFILTERPATHFILTERBINDING_H -#define GAFFERSCENEBINDINGS_SCENEFILTERPATHFILTERBINDING_H - -#include "GafferSceneBindings/Export.h" - -namespace GafferSceneBindings -{ - -GAFFERSCENEBINDINGS_API void bindSceneFilterPathFilter(); - -} // namespace GafferSceneBindings - -#endif // GAFFERSCENEBINDINGS_SCENEFILTERPATHFILTERBINDING_H diff --git a/include/GafferSceneBindings/SceneProcessorBinding.h b/include/GafferSceneBindings/SceneProcessorBinding.h deleted file mode 100644 index 225feed31f9..00000000000 --- a/include/GafferSceneBindings/SceneProcessorBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENEBINDINGS_SCENEPROCESSORBINDING_H -#define GAFFERSCENEBINDINGS_SCENEPROCESSORBINDING_H - -#include "GafferSceneBindings/Export.h" - -namespace GafferSceneBindings -{ - -GAFFERSCENEBINDINGS_API void bindSceneProcessor(); - -} // namespace GafferSceneBindings - -#endif // GAFFERSCENEBINDINGS_SCENEPROCESSORBINDING_H diff --git a/include/GafferSceneBindings/SceneReaderBinding.h b/include/GafferSceneBindings/SceneReaderBinding.h deleted file mode 100644 index 618cef4d72c..00000000000 --- a/include/GafferSceneBindings/SceneReaderBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2014, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENEBINDINGS_SCENEREADERBINDING_H -#define GAFFERSCENEBINDINGS_SCENEREADERBINDING_H - -#include "GafferSceneBindings/Export.h" - -namespace GafferSceneBindings -{ - -GAFFERSCENEBINDINGS_API void bindSceneReader(); - -} // namespace GafferSceneBindings - -#endif // GAFFERSCENEBINDINGS_SCENEREADERBINDING_H diff --git a/include/GafferSceneTest/ContextSanitiser.h b/include/GafferSceneTest/ContextSanitiser.h index 33d86c3740b..4fa8bb0ec53 100644 --- a/include/GafferSceneTest/ContextSanitiser.h +++ b/include/GafferSceneTest/ContextSanitiser.h @@ -37,8 +37,6 @@ #ifndef GAFFERSCENETEST_CONTEXTSANITISER_H #define GAFFERSCENETEST_CONTEXTSANITISER_H -#include "GafferSceneTest/Export.h" - #include "Gaffer/Monitor.h" #include "Gaffer/Plug.h" @@ -48,7 +46,7 @@ namespace GafferSceneTest { /// A monitor which warns about common context handling mistakes. -class GAFFERSCENETEST_API ContextSanitiser : public Gaffer::Monitor +class GAFFER_API ContextSanitiser : public Gaffer::Monitor { public : diff --git a/include/GafferSceneUI/SourceSet.h b/include/GafferSceneUI/SourceSet.h index 3a489b9d584..9d69152e95d 100755 --- a/include/GafferSceneUI/SourceSet.h +++ b/include/GafferSceneUI/SourceSet.h @@ -37,7 +37,6 @@ #ifndef GAFFERSCENEUI_SOURCESET_H #define GAFFERSCENEUI_SOURCESET_H -#include "GafferSceneUI/Export.h" #include "GafferSceneUI/TypeIds.h" #include "GafferScene/ScenePlug.h" @@ -64,7 +63,7 @@ namespace GafferSceneUI /// /// The SourceSet requires a valid context and node set in order to determine source nodes /// other than the direct selection of non-SceneNodes. -class GAFFERSCENEUI_API SourceSet : public Gaffer::Set +class GAFFER_API SourceSet : public Gaffer::Set { public : diff --git a/include/GafferSceneUI/TransformTool.h b/include/GafferSceneUI/TransformTool.h index ab534fc2a4a..9c00db9c831 100644 --- a/include/GafferSceneUI/TransformTool.h +++ b/include/GafferSceneUI/TransformTool.h @@ -73,7 +73,7 @@ class GAFFERSCENEUI_API TransformTool : public GafferSceneUI::SelectionTool Gaffer::FloatPlug *sizePlug(); const Gaffer::FloatPlug *sizePlug() const; - struct GAFFERSCENEUI_API Selection + struct Selection { // Constructs an empty selection. diff --git a/include/GafferSceneUI/UVView.h b/include/GafferSceneUI/UVView.h index c5928745cc1..32be86f8ce9 100644 --- a/include/GafferSceneUI/UVView.h +++ b/include/GafferSceneUI/UVView.h @@ -48,7 +48,6 @@ #include "Gaffer/BackgroundTask.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include @@ -72,8 +71,8 @@ class GAFFERSCENEUI_API UVView : public GafferUI::View Gaffer::StringPlug *uvSetPlug(); const Gaffer::StringPlug *uvSetPlug() const; - Gaffer::FileSystemPathPlug *textureFileNamePlug(); - const Gaffer::FileSystemPathPlug *textureFileNamePlug() const; + Gaffer::StringPlug *textureFileNamePlug(); + const Gaffer::StringPlug *textureFileNamePlug() const; Gaffer::StringPlug *displayTransformPlug(); const Gaffer::StringPlug *displayTransformPlug() const; diff --git a/include/GafferSceneUIBindings/Export.h b/include/GafferSceneUIBindings/Export.h deleted file mode 100644 index 037405154e2..00000000000 --- a/include/GafferSceneUIBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERSCENEUIBINDINGS_EXPORT_H -#define GAFFERSCENEUIBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERSCENEUIBINDINGS_API macro based on whether or not we are compiling -// GafferSceneUIBindings, or including headers for linking to it. the GAFFERSCENEUIBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferSceneUIBindings_EXPORTS - #define GAFFERSCENEUIBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERSCENEUIBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERSCENEUIBINDINGS_EXPORT_H diff --git a/include/GafferUI/ButtonEvent.h b/include/GafferUI/ButtonEvent.h index 51eb3ec19f7..8b46fc0139d 100644 --- a/include/GafferUI/ButtonEvent.h +++ b/include/GafferUI/ButtonEvent.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_BUTTONEVENT_H #define GAFFERUI_BUTTONEVENT_H -#include "GafferUI/Export.h" #include "GafferUI/ModifiableEvent.h" #include "IECore/LineSegment.h" diff --git a/include/GafferUI/ContainerGadget.h b/include/GafferUI/ContainerGadget.h index 45d6b1b1461..726b874f6bf 100644 --- a/include/GafferUI/ContainerGadget.h +++ b/include/GafferUI/ContainerGadget.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_CONTAINERGADGET_H #define GAFFERUI_CONTAINERGADGET_H -#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" namespace GafferUI diff --git a/include/GafferUI/DragDropEvent.h b/include/GafferUI/DragDropEvent.h index ebf176d52a1..a920ea4ddb1 100644 --- a/include/GafferUI/DragDropEvent.h +++ b/include/GafferUI/DragDropEvent.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_DRAGDROPEVENT_H #define GAFFERUI_DRAGDROPEVENT_H -#include "GafferUI/Export.h" #include "GafferUI/ButtonEvent.h" #include "IECore/RunTimeTyped.h" diff --git a/include/GafferUI/Frame.h b/include/GafferUI/Frame.h index 163e99a0038..cb00e573320 100644 --- a/include/GafferUI/Frame.h +++ b/include/GafferUI/Frame.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_FRAME_H #define GAFFERUI_FRAME_H -#include "GafferUI/Export.h" #include "GafferUI/IndividualContainer.h" namespace GafferUI diff --git a/include/GafferUI/GraphGadget.h b/include/GafferUI/GraphGadget.h index 3c94909703d..b13188d93ee 100644 --- a/include/GafferUI/GraphGadget.h +++ b/include/GafferUI/GraphGadget.h @@ -131,24 +131,24 @@ class GAFFERUI_API GraphGadget : public ContainerGadget /// \note Here "upstream" nodes are defined as nodes at the end of input /// connections as shown in the graph - auxiliary connections and /// invisible nodes are not considered at all. - size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ); - size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ) const; + size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ); + size_t upstreamNodeGadgets( const Gaffer::Node *node, std::vector &upstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ) const; /// Finds all the downstream NodeGadgets connected to the specified node /// and appends them to the specified vector. Returns the new size of the vector. /// \note Here "downstream" nodes are defined as nodes at the end of output /// connections as shown in the graph - auxiliary connections and /// invisible nodes are not considered at all. - size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ); - size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = std::numeric_limits::max() ) const; + size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ); + size_t downstreamNodeGadgets( const Gaffer::Node *node, std::vector &downstreamNodeGadgets, size_t degreesOfSeparation = Imath::limits::max() ) const; /// Finds all the NodeGadgets connected to the specified node /// and appends them to the specified vector. Returns the new size of the vector. /// \note Here "connected" nodes are defined as nodes at the end of /// connections as shown in the graph - auxiliary connections and /// invisible nodes are not considered at all. - size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = std::numeric_limits::max() ); - size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = std::numeric_limits::max() ) const; + size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = Imath::limits::max() ); + size_t connectedNodeGadgets( const Gaffer::Node *node, std::vector &connectedNodeGadgets, Gaffer::Plug::Direction direction = Gaffer::Plug::Invalid, size_t degreesOfSeparation = Imath::limits::max() ) const; /// Finds all the NodeGadgets which haven't been given an explicit position /// using setNodePosition(). diff --git a/include/GafferUI/Handle.h b/include/GafferUI/Handle.h index f7de0275fc8..cf618838daf 100644 --- a/include/GafferUI/Handle.h +++ b/include/GafferUI/Handle.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_HANDLE_H #define GAFFERUI_HANDLE_H -#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" #include "GafferUI/Style.h" @@ -85,7 +84,7 @@ class GAFFERUI_API Handle : public Gadget // Helper for performing linear drags. Should be constructed // in `dragBegin()` and then `position()` should be used // to measure the progress of the drag. - struct GAFFERUI_API LinearDrag + struct LinearDrag { LinearDrag( bool processModifiers = true ); @@ -117,7 +116,7 @@ class GAFFERUI_API Handle : public Gadget }; // Helper for performing drags in a plane. - struct GAFFERUI_API PlanarDrag + struct PlanarDrag { PlanarDrag( bool processModifiers = true ); diff --git a/include/GafferUI/ImageGadget.h b/include/GafferUI/ImageGadget.h index 103f3a197bc..0360207db0f 100644 --- a/include/GafferUI/ImageGadget.h +++ b/include/GafferUI/ImageGadget.h @@ -54,12 +54,6 @@ IE_CORE_FORWARDDECLARE( Texture ) namespace GafferUI { -#ifdef _WIN32 - #define ENVSEP ";" -#else - #define ENVSEP ":" -#endif - class GAFFERUI_API ImageGadget : public Gadget { diff --git a/include/GafferUI/IndividualContainer.h b/include/GafferUI/IndividualContainer.h index 9fb55b8dbb1..3480f3d2bab 100644 --- a/include/GafferUI/IndividualContainer.h +++ b/include/GafferUI/IndividualContainer.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_INDIVIDUALCONTAINER_H #define GAFFERUI_INDIVIDUALCONTAINER_H -#include "GafferUI/Export.h" #include "GafferUI/ContainerGadget.h" namespace GafferUI diff --git a/include/GafferUI/KeyEvent.h b/include/GafferUI/KeyEvent.h index d12a7e2a70f..20a16e23f18 100644 --- a/include/GafferUI/KeyEvent.h +++ b/include/GafferUI/KeyEvent.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_KEYEVENT_H #define GAFFERUI_KEYEVENT_H -#include "GafferUI/Export.h" #include "GafferUI/ModifiableEvent.h" #include "IECore/Export.h" diff --git a/include/GafferUI/LinearContainer.h b/include/GafferUI/LinearContainer.h index be23338ee25..4a516548d2f 100644 --- a/include/GafferUI/LinearContainer.h +++ b/include/GafferUI/LinearContainer.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_LINEARCONTAINER_H #define GAFFERUI_LINEARCONTAINER_H -#include "GafferUI/Export.h" #include "GafferUI/ContainerGadget.h" namespace GafferUI diff --git a/include/GafferUI/ModifiableEvent.h b/include/GafferUI/ModifiableEvent.h index 84fa2b95766..604f387f2a6 100644 --- a/include/GafferUI/ModifiableEvent.h +++ b/include/GafferUI/ModifiableEvent.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_MODIFIABLEEVENT_H #define GAFFERUI_MODIFIABLEEVENT_H -#include "GafferUI/Export.h" #include "GafferUI/Event.h" namespace GafferUI diff --git a/include/GafferUI/NameGadget.h b/include/GafferUI/NameGadget.h index a4bd11efcfd..c85377ce499 100644 --- a/include/GafferUI/NameGadget.h +++ b/include/GafferUI/NameGadget.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_NAMEGADGET_H #define GAFFERUI_NAMEGADGET_H -#include "GafferUI/Export.h" #include "GafferUI/TextGadget.h" #include "IECoreScene/Font.h" diff --git a/include/GafferUI/NodeGadget.h b/include/GafferUI/NodeGadget.h index 0996c94c82e..6ee50db2d0c 100644 --- a/include/GafferUI/NodeGadget.h +++ b/include/GafferUI/NodeGadget.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_NODEGADGET_H #define GAFFERUI_NODEGADGET_H -#include "GafferUI/Export.h" #include "GafferUI/IndividualContainer.h" #include "Gaffer/Set.h" diff --git a/include/GafferUI/PlugGadget.h b/include/GafferUI/PlugGadget.h index b56e92eed3d..f10e6df6377 100644 --- a/include/GafferUI/PlugGadget.h +++ b/include/GafferUI/PlugGadget.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_PLUGGADGET_H #define GAFFERUI_PLUGGADGET_H -#include "GafferUI/Export.h" #include "GafferUI/ContainerGadget.h" namespace Gaffer diff --git a/include/GafferUI/Pointer.h b/include/GafferUI/Pointer.h index e8fd55afcef..ab19d0e68b3 100644 --- a/include/GafferUI/Pointer.h +++ b/include/GafferUI/Pointer.h @@ -43,8 +43,6 @@ #include "boost/signals.hpp" -#include "GafferUI/Export.h" - namespace GafferUI { diff --git a/include/GafferUI/RenderableGadget.h b/include/GafferUI/RenderableGadget.h deleted file mode 100644 index 7294c5a1be9..00000000000 --- a/include/GafferUI/RenderableGadget.h +++ /dev/null @@ -1,157 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011-2012, John Haddon. All rights reserved. -// Copyright (c) 2012-2013, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUI_RENDERABLEGADGET_H -#define GAFFERUI_RENDERABLEGADGET_H - -#include "IECore/VisibleRenderable.h" - -#include "GafferUI/Export.h" -#include "GafferUI/Gadget.h" - -namespace IECoreGL -{ - -IE_CORE_FORWARDDECLARE( Scene ) -IE_CORE_FORWARDDECLARE( State ) -IE_CORE_FORWARDDECLARE( Group ) -IE_CORE_FORWARDDECLARE( StateComponent ) - -} // namespace IECoreGL - -namespace GafferUI -{ - -IE_CORE_FORWARDDECLARE( RenderableGadget ); - -/// \todo Either remove this or move it to GafferCortexUI. -class GAFFERUI_API RenderableGadget : public Gadget -{ - - public : - - RenderableGadget( IECore::VisibleRenderablePtr renderable = 0 ); - virtual ~RenderableGadget(); - - IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferUI::RenderableGadget, RenderableGadgetTypeId, Gadget ); - - virtual Imath::Box3f bound() const; - - void setRenderable( IECore::ConstVisibleRenderablePtr renderable ); - IECore::ConstVisibleRenderablePtr getRenderable() const; - - /// Returns the IECoreGL::State object used as the base display - /// style for the Renderable. This may be modified freely to - /// change the display style. - IECoreGL::State *baseState(); - - /// Returns the name of the frontmost object intersecting the specified line - /// through gadget space, or "" if there is no such object. - std::string objectAt( const IECore::LineSegment3f &lineInGadgetSpace ) const; - /// Fills objectNames with all objects intersected by a rectangle in screen space, - /// defined by two corners in gadget space (as required for drag selection). - size_t objectsAt( - const Imath::V3f &corner0InGadgetSpace, - const Imath::V3f &corner1InGadgetSpace, - std::vector &objectNames - ) const; - - /// @name Selection - /// The RenderableGadget maintains a set of selected object, based - /// on object name. The user can manipulate the selection with the - /// mouse, and the selected objects are drawn in a highlighted fashion. - /// The selection may be queried and set programatically, and the - /// SelectionChangedSignal can be used to provide notifications of - /// such changes. - //////////////////////////////////////////////////////////////////// - //@{ - /// The selection is simply stored as a set of object names. - typedef std::set Selection; - /// Returns the selection. - Selection &getSelection(); - const Selection &getSelection() const; - /// Sets the selection, triggering selectionChangedSignal() if - /// necessary. - void setSelection( const std::set &selection ); - /// A signal emitted when the selection has changed, either through - /// a call to setSelection() or through user action. - typedef boost::signal SelectionChangedSignal; - SelectionChangedSignal &selectionChangedSignal(); - /// Returns the bounding box of all the selected objects. - Imath::Box3f selectionBound() const; - //@} - - /// Implemented to return the name of the object under the mouse as - /// a tooltip. - virtual std::string getToolTip( const IECore::LineSegment3f &line ) const; - - protected : - - virtual void doRender( const Style *style ) const; - - private : - - bool buttonPress( GadgetPtr gadget, const ButtonEvent &event ); - IECore::RunTimeTypedPtr dragBegin( GadgetPtr gadget, const DragDropEvent &event ); - bool dragEnter( GadgetPtr gadget, const DragDropEvent &event ); - bool dragMove( GadgetPtr gadget, const DragDropEvent &event ); - bool dragEnd( GadgetPtr gadget, const DragDropEvent &event ); - - void applySelection( IECoreGL::Group *group = 0 ); - Imath::Box3f selectionBound( IECoreGL::Group *group ) const; - - IECore::ConstVisibleRenderablePtr m_renderable; - IECoreGL::ScenePtr m_scene; - IECoreGL::StatePtr m_baseState; - IECoreGL::StateComponentPtr m_selectionColor; - IECoreGL::StateComponentPtr m_wireframeOn; - - Selection m_selection; - SelectionChangedSignal m_selectionChangedSignal; - - Imath::V3f m_dragStartPosition; - Imath::V3f m_lastDragPosition; - bool m_dragSelecting; - -}; - -typedef Gaffer::FilteredChildIterator > RenderableGadgetIterator; -typedef Gaffer::FilteredRecursiveChildIterator > RecursiveRenderableGadgetIterator; - -} // namespace GafferUI - -#endif // GAFFERUI_RenderableGadget_H diff --git a/include/GafferUI/RotateHandle.h b/include/GafferUI/RotateHandle.h index 3e40c9ebe03..cb9c8777938 100644 --- a/include/GafferUI/RotateHandle.h +++ b/include/GafferUI/RotateHandle.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_ROTATEHANDLE_H #define GAFFERUI_ROTATEHANDLE_H -#include "GafferUI/Export.h" #include "GafferUI/Handle.h" IECORE_PUSH_DEFAULT_VISIBILITY diff --git a/include/GafferUI/ScaleHandle.h b/include/GafferUI/ScaleHandle.h index c8ba6a1aaf9..21327862ee0 100644 --- a/include/GafferUI/ScaleHandle.h +++ b/include/GafferUI/ScaleHandle.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_SCALEHANDLE_H #define GAFFERUI_SCALEHANDLE_H -#include "GafferUI/Export.h" #include "GafferUI/Handle.h" namespace GafferUI diff --git a/include/GafferUI/SpacerGadget.h b/include/GafferUI/SpacerGadget.h index d211bab4413..9998ab527a1 100644 --- a/include/GafferUI/SpacerGadget.h +++ b/include/GafferUI/SpacerGadget.h @@ -37,7 +37,6 @@ #ifndef GAFFERUI_SPACERGADGET_H #define GAFFERUI_SPACERGADGET_H -#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" namespace GafferUI diff --git a/include/GafferUI/SplinePlugGadget.h b/include/GafferUI/SplinePlugGadget.h deleted file mode 100644 index 5ce658ca1b5..00000000000 --- a/include/GafferUI/SplinePlugGadget.h +++ /dev/null @@ -1,109 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011-2012, John Haddon. All rights reserved. -// Copyright (c) 2011-2012, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUI_SPLINEPLUGGADGET_H -#define GAFFERUI_SPLINEPLUGGADGET_H - -#include "GafferUI/Export.h" -#include "GafferUI/Gadget.h" - -#include "Gaffer/SplinePlug.h" -#include "Gaffer/StandardSet.h" - -namespace GafferUI -{ - -/// \todo I think this should work with any sort of Set for the splines. -class GAFFERUI_API SplinePlugGadget : public Gadget -{ - - public : - - SplinePlugGadget( const std::string &name=defaultName() ); - virtual ~SplinePlugGadget(); - - IE_CORE_DECLARERUNTIMETYPEDEXTENSION( GafferUI::SplinePlugGadget, SplinePlugGadgetTypeId, Gadget ); - - /// The splines to be edited - Gaffer::StandardSetPtr splines(); - Gaffer::ConstStandardSetPtr splines() const; - - /// The selected spline points - Gaffer::StandardSetPtr selection(); - Gaffer::ConstStandardSetPtr selection() const; - - virtual Imath::Box3f bound() const; - - protected : - - virtual void doRender( const Style *style ) const; - - private : - - void splineAdded( Gaffer::SetPtr splineSet, IECore::RunTimeTypedPtr splinePlug ); - void splineRemoved( Gaffer::SetPtr splineSet, IECore::RunTimeTypedPtr splinePlug ); - void plugSet( Gaffer::Plug *plug ); - Gaffer::StandardSetPtr m_splines; - Gaffer::StandardSetPtr m_selection; - - void pointAdded( Gaffer::GraphComponentPtr spline, Gaffer::GraphComponentPtr point ); - void pointRemoved( Gaffer::GraphComponentPtr spline, Gaffer::GraphComponentPtr point ); - - bool selectionAcceptance( Gaffer::ConstStandardSetPtr selection, IECore::ConstRunTimeTypedPtr point ); - - struct UI; - typedef std::map SplineUIMap; - mutable SplineUIMap m_uis; - void updateCurve( SplineUIMap::iterator it ) const; - - bool buttonPress( GadgetPtr gadget, const ButtonEvent &event ); - IECore::RunTimeTypedPtr dragBegin( GadgetPtr gadget, const ButtonEvent &event ); - bool dragMove( GadgetPtr gadget, const ButtonEvent &event ); - Imath::V2f m_lastDragPosition; - - bool keyPress( GadgetPtr gadget, const KeyEvent &event ); - -}; - -IE_CORE_DECLAREPTR( SplinePlugGadget ) - -typedef Gaffer::FilteredChildIterator > SplinePlugGadgetIterator; -typedef Gaffer::FilteredRecursiveChildIterator > RecursiveSplinePlugGadgetIterator; - -} // namespace GafferUI - -#endif // GAFFERUI_SPLINEPLUGGADGET_H diff --git a/include/GafferUI/StandardGraphLayout.h b/include/GafferUI/StandardGraphLayout.h index 6e0a128ee1d..800263d54d4 100644 --- a/include/GafferUI/StandardGraphLayout.h +++ b/include/GafferUI/StandardGraphLayout.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_STANDARDGRAPHLAYOUT_H #define GAFFERUI_STANDARDGRAPHLAYOUT_H -#include "GafferUI/Export.h" #include "GafferUI/GraphLayout.h" namespace Gaffer diff --git a/include/GafferUI/TextGadget.h b/include/GafferUI/TextGadget.h index 84aecc3ba0a..17c16d6e783 100644 --- a/include/GafferUI/TextGadget.h +++ b/include/GafferUI/TextGadget.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_TEXTGADGET_H #define GAFFERUI_TEXTGADGET_H -#include "GafferUI/Export.h" #include "GafferUI/Gadget.h" #include "IECoreScene/Font.h" diff --git a/include/GafferUI/TranslateHandle.h b/include/GafferUI/TranslateHandle.h index d53fd30bab7..145ca42f8c8 100644 --- a/include/GafferUI/TranslateHandle.h +++ b/include/GafferUI/TranslateHandle.h @@ -38,7 +38,6 @@ #ifndef GAFFERUI_TRANSLATEHANDLE_H #define GAFFERUI_TRANSLATEHANDLE_H -#include "GafferUI/Export.h" #include "GafferUI/Handle.h" namespace GafferUI diff --git a/include/GafferUI/ViewportGadget.h b/include/GafferUI/ViewportGadget.h index 4c380fa9ff4..124fba4aa41 100644 --- a/include/GafferUI/ViewportGadget.h +++ b/include/GafferUI/ViewportGadget.h @@ -176,7 +176,7 @@ class GAFFERUI_API ViewportGadget : public Gadget /// The SelectionScope class can be used by child Gadgets to perform /// OpenGL selection from event signal callbacks. - class GAFFERUI_API SelectionScope : boost::noncopyable + class SelectionScope : boost::noncopyable { public : @@ -218,7 +218,7 @@ class GAFFERUI_API ViewportGadget : public Gadget }; /// The RasterScope class can be used to perform drawing in raster space. - class GAFFERUI_API RasterScope : boost::noncopyable + class RasterScope : boost::noncopyable { public : diff --git a/include/GafferUIBindings/Export.h b/include/GafferUIBindings/Export.h deleted file mode 100644 index bddaf8e5bba..00000000000 --- a/include/GafferUIBindings/Export.h +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2016, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUIBINDINGS_EXPORT_H -#define GAFFERUIBINDINGS_EXPORT_H - -#include "Gaffer/Export.h" - -// define GAFFERUIBINDINGS_API macro based on whether or not we are compiling -// GafferUIBindings, or including headers for linking to it. the GAFFERUIBINDINGS_API -// macro is the one that is used in the class definitions. -#ifdef GafferUIBindings_EXPORTS - #define GAFFERUIBINDINGS_API GAFFER_EXPORT -#else - #define GAFFERUIBINDINGS_API GAFFER_IMPORT -#endif - -#endif // #ifndef GAFFERUIBINDINGS_EXPORT_H diff --git a/include/GafferUIBindings/ModifiableEventBinding.h b/include/GafferUIBindings/ModifiableEventBinding.h deleted file mode 100644 index d596f4e0459..00000000000 --- a/include/GafferUIBindings/ModifiableEventBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011, John Haddon. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUIBINDINGS_MODIFIABLEEVENTBINDING_H -#define GAFFERUIBINDINGS_MODIFIABLEEVENTBINDING_H - -#include "GafferUIBindings/Export.h" - -namespace GafferUIBindings -{ - -GAFFERUIBINDINGS_API void bindModifiableEvent(); - -} // namespace GafferUIBindings - -#endif // GAFFERUIBINDINGS_MODIFIABLEEVENTBINDING_H diff --git a/include/GafferUIBindings/RenderableGadgetBinding.h b/include/GafferUIBindings/RenderableGadgetBinding.h deleted file mode 100644 index 9180639f856..00000000000 --- a/include/GafferUIBindings/RenderableGadgetBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011, John Haddon. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUIBINDINGS_RENDERABLEGADGETBINDING_H -#define GAFFERUIBINDINGS_RENDERABLEGADGETBINDING_H - -#include "GafferUIBindings/Export.h" - -namespace GafferUIBindings -{ - -GAFFERUIBINDINGS_API void bindRenderableGadget(); - -} // namespace GafferUIBindings - -#endif // GAFFERUIBINDINGS_RENDERABLEGADGETBINDING_H diff --git a/include/GafferUIBindings/SplinePlugGadgetBinding.h b/include/GafferUIBindings/SplinePlugGadgetBinding.h deleted file mode 100644 index 1734b1132a2..00000000000 --- a/include/GafferUIBindings/SplinePlugGadgetBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011, John Haddon. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUIBINDINGS_SPLINEPLUGGADGETBINDING_H -#define GAFFERUIBINDINGS_SPLINEPLUGGADGETBINDING_H - -#include "GafferUIBindings/Export.h" - -namespace GafferUIBindings -{ - -GAFFERUIBINDINGS_API void bindSplinePlugGadget(); - -} // namespace GafferUIBindings - -#endif // GAFFERUIBINDINGS_SPLINEPLUGGADGETBINDING_H diff --git a/include/GafferUIBindings/StandardNodeGadgetBinding.h b/include/GafferUIBindings/StandardNodeGadgetBinding.h deleted file mode 100644 index 794cd360304..00000000000 --- a/include/GafferUIBindings/StandardNodeGadgetBinding.h +++ /dev/null @@ -1,49 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011, John Haddon. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERUIBINDINGS_STANDARDNODEGADGETBINDING_H -#define GAFFERUIBINDINGS_STANDARDNODEGADGETBINDING_H - -#include "GafferUIBindings/Export.h" - -namespace GafferUIBindings -{ - -GAFFERUIBINDINGS_API void bindStandardNodeGadget(); - -} // namespace GafferUIBindings - -#endif // GAFFERUIBINDINGS_STANDARDNODEGADGETBINDING_H diff --git a/include/GafferVDB/SphereLevelSet.h b/include/GafferVDB/SphereLevelSet.h index 81d73f8f06c..d8821112548 100644 --- a/include/GafferVDB/SphereLevelSet.h +++ b/include/GafferVDB/SphereLevelSet.h @@ -37,8 +37,6 @@ #ifndef GAFFERSCENE_SPHERELEVELSET_H #define GAFFERSCENE_SPHERELEVELSET_H -#include "GafferVDB/Export.h" - #include "GafferScene/ObjectSource.h" #include "Gaffer/CompoundNumericPlug.h" @@ -48,7 +46,7 @@ namespace GafferVDB { -class GAFFERVDB_API SphereLevelSet : public GafferScene::ObjectSource +class GAFFERSCENE_API SphereLevelSet : public GafferScene::ObjectSource { public : diff --git a/include/GafferVDB/VDBObject.h b/include/GafferVDB/VDBObject.h deleted file mode 100644 index 350f8e7e7a5..00000000000 --- a/include/GafferVDB/VDBObject.h +++ /dev/null @@ -1,134 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2017, John Haddon. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERVDB_VDBOBJECT_H -#define GAFFERVDB_VDBOBJECT_H - -#include - -#include "openvdb/openvdb.h" - -#include "OpenEXR/ImathBox.h" - -#include "IECore/Object.h" -#include "IECore/CompoundObject.h" -#include "IECoreScene/VisibleRenderable.h" -#include "IECore/VectorTypedData.h" - -#include "GafferVDB/Export.h" -#include "GafferVDB/TypeIds.h" - -namespace GafferVDB -{ - -class GAFFERVDB_API VDBObject : public IECoreScene::VisibleRenderable -{ - - public : - - VDBObject(); - - //! initialise VDBObject from a vdb file - VDBObject( const std::string &filename ); - - IE_CORE_DECLAREEXTENSIONOBJECT( GafferVDB::VDBObject, VDBObjectTypeId, IECoreScene::VisibleRenderable ); - - void insertGrid( openvdb::GridBase::Ptr grid ); - void removeGrid( const std::string &name ); - - openvdb::GridBase::ConstPtr findGrid( const std::string &name ) const; - openvdb::GridBase::Ptr findGrid( const std::string &name ); - - std::vector gridNames() const; - - Imath::Box3f bound() const override; - void render( IECoreScene::Renderer *renderer ) const override; - - IECore::CompoundObjectPtr metadata( const std::string &name ); - - //! Are the grids in this VDBObject unmodified from the vdb file in filename? - //! Useful for passing VDB objects to renders by filename instead of memory buffer - bool unmodifiedFromFile() const; - - //! path to VDB file used to initialise this object - //! empty for procedurally generated VDBs - std::string fileName() const - { - return m_fileName; - } - - protected : - - virtual ~VDBObject(); - - private : - - static const unsigned int m_ioVersion; - - class GAFFERVDB_API HashedGrid - { - public: - HashedGrid() : m_hashValid( false ), m_unmodifiedFromFile( false ) - { - } - - HashedGrid( openvdb::GridBase::Ptr grid, bool initFromFile = false ) : m_grid( grid ), m_hashValid( false ), m_unmodifiedFromFile( initFromFile ) - { - } - - IECore::MurmurHash hash() const; - openvdb::GridBase::Ptr grid() const; - bool unmodifiedFromFile() const; - void markedAsEdited(); - - private: - openvdb::GridBase::Ptr m_grid; - mutable bool m_hashValid; - mutable IECore::MurmurHash m_hash; - bool m_unmodifiedFromFile; - }; - - std::unordered_map m_grids; - - //! store the filename incase we need don't modify the vdb and we can pass it on to clients who can only deal with file VDBs - std::string m_fileName; -}; - -IE_CORE_DECLAREPTR( VDBObject ) - -} // namespace GafferVDB - -#endif // GAFFERVDB_VDBOBJECT_H diff --git a/python/GafferAppleseedTest/AppleseedRenderTest.py b/python/GafferAppleseedTest/AppleseedRenderTest.py index f92cdbe7337..faf2b196af8 100644 --- a/python/GafferAppleseedTest/AppleseedRenderTest.py +++ b/python/GafferAppleseedTest/AppleseedRenderTest.py @@ -36,11 +36,7 @@ import os import re -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import time import unittest diff --git a/python/GafferAppleseedTest/AppleseedTest.py b/python/GafferAppleseedTest/AppleseedTest.py index 86598bbca53..aa2cb1090bb 100644 --- a/python/GafferAppleseedTest/AppleseedTest.py +++ b/python/GafferAppleseedTest/AppleseedTest.py @@ -35,11 +35,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess def appleseedProjectSchemaPath(): diff --git a/python/GafferAppleseedUI/ShaderMenu.py b/python/GafferAppleseedUI/ShaderMenu.py index 6ce93d3fc16..4da85efbee3 100644 --- a/python/GafferAppleseedUI/ShaderMenu.py +++ b/python/GafferAppleseedUI/ShaderMenu.py @@ -62,7 +62,7 @@ def appendShaders( menuDefinition ) : q = asr.ShaderQuery() - for path in os.environ["APPLESEED_SEARCHPATH"].split( os.path.pathsep ) : + for path in os.environ["APPLESEED_SEARCHPATH"].split( ":" ) : for shader in glob.glob( os.path.join( path, "*.oso" ) ) : shaderFilename = os.path.basename( shader ) diff --git a/python/GafferArnold/__init__.py b/python/GafferArnold/__init__.py index 377fa43a847..22c1fbc4983 100644 --- a/python/GafferArnold/__init__.py +++ b/python/GafferArnold/__init__.py @@ -50,20 +50,16 @@ import sys import ctypes - import os - - if os.name == "posix": - originalDLOpenFlags = sys.getdlopenflags() - sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) + originalDLOpenFlags = sys.getdlopenflags() + sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) __import__( "IECoreArnold" ) from ._GafferArnold import * finally : - if os.name == "posix": - sys.setdlopenflags( originalDLOpenFlags ) - del sys, ctypes, originalDLOpenFlags + sys.setdlopenflags( originalDLOpenFlags ) + del sys, ctypes, originalDLOpenFlags from .ArnoldShaderBall import ArnoldShaderBall from .ArnoldTextureBake import ArnoldTextureBake diff --git a/python/GafferArnoldTest/ArnoldRenderTest.py b/python/GafferArnoldTest/ArnoldRenderTest.py index 5d3fb377a52..c85c9a6ade0 100644 --- a/python/GafferArnoldTest/ArnoldRenderTest.py +++ b/python/GafferArnoldTest/ArnoldRenderTest.py @@ -38,11 +38,7 @@ import os import inspect import unittest -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import threading import arnold diff --git a/python/GafferArnoldTest/ArnoldShaderTest.py b/python/GafferArnoldTest/ArnoldShaderTest.py index e02eb19430f..5e2905ea2de 100644 --- a/python/GafferArnoldTest/ArnoldShaderTest.py +++ b/python/GafferArnoldTest/ArnoldShaderTest.py @@ -429,7 +429,7 @@ def testColorParameterMetadata( self ) : self.assertTrue( isinstance( p, Gaffer.Color4fPlug ) ) self.addCleanup( os.environ.__setitem__, "ARNOLD_PLUGIN_PATH", os.environ["ARNOLD_PLUGIN_PATH"] ) - os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + os.pathsep + os.path.join( os.path.dirname( __file__ ), "metadata" ) + os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + ":" + os.path.join( os.path.dirname( __file__ ), "metadata" ) self.__forceArnoldRestart() @@ -452,7 +452,7 @@ def testFloatParameterMetadata( self ) : self.assertTrue( isinstance( n["parameters"]["slidemap"], Gaffer.Color3fPlug ) ) self.addCleanup( os.environ.__setitem__, "ARNOLD_PLUGIN_PATH", os.environ["ARNOLD_PLUGIN_PATH"] ) - os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + os.pathsep + os.path.join( os.path.dirname( __file__ ), "metadata" ) + os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + ":" + os.path.join( os.path.dirname( __file__ ), "metadata" ) self.__forceArnoldRestart() @@ -470,7 +470,7 @@ def testEmptyPlugTypeMetadata( self ) : self.assertTrue( "diffuse_roughness" in n["parameters"] ) self.addCleanup( os.environ.__setitem__, "ARNOLD_PLUGIN_PATH", os.environ["ARNOLD_PLUGIN_PATH"] ) - os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + os.pathsep + os.path.join( os.path.dirname( __file__ ), "metadata" ) + os.environ["ARNOLD_PLUGIN_PATH"] = os.environ["ARNOLD_PLUGIN_PATH"] + ":" + os.path.join( os.path.dirname( __file__ ), "metadata" ) self.__forceArnoldRestart() diff --git a/python/GafferArnoldUI/ArnoldShaderUI.py b/python/GafferArnoldUI/ArnoldShaderUI.py index 87b65bbe7c5..fa5c7ef34eb 100644 --- a/python/GafferArnoldUI/ArnoldShaderUI.py +++ b/python/GafferArnoldUI/ArnoldShaderUI.py @@ -56,7 +56,7 @@ def __aiMetadataGetStr( nodeEntry, paramName, name, defaultValue = None ) : - value = arnold.AtStringStruct() + value = arnold.AtStringReturn() if arnold.AiMetaDataGetStr( nodeEntry, paramName, name, value ) : return arnold.AtStringToStr( value ) diff --git a/python/GafferArnoldUI/ShaderMenu.py b/python/GafferArnoldUI/ShaderMenu.py index 69589cb6370..159d127be9f 100644 --- a/python/GafferArnoldUI/ShaderMenu.py +++ b/python/GafferArnoldUI/ShaderMenu.py @@ -136,7 +136,7 @@ def __colorManagerCreator( colorManagerName, nodeName ) : def __aiMetadataGetStr( nodeEntry, paramName, name ) : - value = arnold.AtStringStruct() + value = arnold.AtStringReturn() if arnold.AiMetaDataGetStr( nodeEntry, paramName, name, value ) : return arnold.AtStringToStr( value ) diff --git a/python/GafferDispatch/LocalDispatcher.py b/python/GafferDispatch/LocalDispatcher.py index 85d81718317..6806af4f936 100644 --- a/python/GafferDispatch/LocalDispatcher.py +++ b/python/GafferDispatch/LocalDispatcher.py @@ -38,11 +38,7 @@ import errno import signal import shlex -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import threading import time import traceback @@ -263,9 +259,8 @@ def __doBackgroundDispatch( self, batch ) : taskContext = batch.context() frames = str( IECore.frameListFromList( [ int(x) for x in batch.frames() ] ) ) - args = [ "gaffer.bat" ] if os.name == "nt" else [ "gaffer" ] - args = args + [ - "execute", + args = [ + "gaffer", "execute", "-script", self.__scriptFile, "-nodes", batch.blindData()["nodeName"].value, "-frames", frames, @@ -286,10 +281,7 @@ def __doBackgroundDispatch( self, batch ) : self.__setStatus( batch, LocalDispatcher.Job.Status.Running ) IECore.msg( IECore.MessageHandler.Level.Info, self.__messageTitle, " ".join( args ) ) - if os.name == "nt": - process = subprocess.Popen( args ) - else: - process = subprocess.Popen( args, start_new_session=True ) + process = subprocess.Popen( args, start_new_session=True ) batch.blindData()["pid"] = IECore.IntData( process.pid ) while process.poll() is None : diff --git a/python/GafferDispatch/SystemCommand.py b/python/GafferDispatch/SystemCommand.py index 526e9e12258..c77fc934b12 100644 --- a/python/GafferDispatch/SystemCommand.py +++ b/python/GafferDispatch/SystemCommand.py @@ -36,11 +36,7 @@ import os import shlex -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import IECore diff --git a/python/GafferDispatchTest/DispatchApplicationTest.py b/python/GafferDispatchTest/DispatchApplicationTest.py index a7a11fd4baf..df60d32a6fb 100644 --- a/python/GafferDispatchTest/DispatchApplicationTest.py +++ b/python/GafferDispatchTest/DispatchApplicationTest.py @@ -35,11 +35,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import unittest import Gaffer diff --git a/python/GafferDispatchTest/ExecuteApplicationTest.py b/python/GafferDispatchTest/ExecuteApplicationTest.py index 39aa43e2f8f..10d9e81238c 100644 --- a/python/GafferDispatchTest/ExecuteApplicationTest.py +++ b/python/GafferDispatchTest/ExecuteApplicationTest.py @@ -36,11 +36,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import unittest import glob import inspect diff --git a/python/GafferDispatchTest/StatsApplicationTest.py b/python/GafferDispatchTest/StatsApplicationTest.py index d17dd81e783..8571a6fa4c0 100644 --- a/python/GafferDispatchTest/StatsApplicationTest.py +++ b/python/GafferDispatchTest/StatsApplicationTest.py @@ -36,12 +36,7 @@ import inspect import unittest -import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import Gaffer import GafferTest diff --git a/python/GafferDispatchTest/SystemCommandTest.py b/python/GafferDispatchTest/SystemCommandTest.py index 725b90b9362..0405efddb52 100644 --- a/python/GafferDispatchTest/SystemCommandTest.py +++ b/python/GafferDispatchTest/SystemCommandTest.py @@ -35,11 +35,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import unittest import IECore diff --git a/python/GafferImageTest/ColorSpaceTest.py b/python/GafferImageTest/ColorSpaceTest.py index c4ab739e072..f827fac64b9 100644 --- a/python/GafferImageTest/ColorSpaceTest.py +++ b/python/GafferImageTest/ColorSpaceTest.py @@ -37,11 +37,7 @@ import os import unittest -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import imath import IECore diff --git a/python/GafferImageTest/DisplayTest.py b/python/GafferImageTest/DisplayTest.py index 00f902d5db2..ac0c0b7c5fc 100644 --- a/python/GafferImageTest/DisplayTest.py +++ b/python/GafferImageTest/DisplayTest.py @@ -38,11 +38,7 @@ import unittest import random import threading -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import imath import IECore diff --git a/python/GafferImageTest/DisplayTransformTest.py b/python/GafferImageTest/DisplayTransformTest.py index e4d9e68b01f..0bce3fb29ec 100644 --- a/python/GafferImageTest/DisplayTransformTest.py +++ b/python/GafferImageTest/DisplayTransformTest.py @@ -36,11 +36,7 @@ import os import unittest -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import imath import IECore diff --git a/python/GafferImageTest/ImageReaderTest.py b/python/GafferImageTest/ImageReaderTest.py index 3f38e3840da..3f42eafbf09 100644 --- a/python/GafferImageTest/ImageReaderTest.py +++ b/python/GafferImageTest/ImageReaderTest.py @@ -49,16 +49,12 @@ class ImageReaderTest( GafferImageTest.ImageTestCase ) : + fileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/circles.exr" ) + colorSpaceFileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/circles_as_cineon.exr" ) + offsetDataWindowFileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100.exr" ) + jpgFileName = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/circles.jpg" ) + def setUp( self ) : - if os.name == "nt": - gaffer_root = os.path.expandvars( "%GAFFER_ROOT%" ) - else: - gaffer_root = os.path.expandvars( "$GAFFER_ROOT" ) - - self.fileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles.exr" ) - self.colorSpaceFileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles_as_cineon.exr" ) - self.offsetDataWindowFileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/rgb.100x100.exr" ) - self.jpgFileName = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/circles.jpg" ) GafferImageTest.ImageTestCase.setUp( self ) self.__defaultColorSpaceFunction = GafferImage.ImageReader.getDefaultColorSpaceFunction() diff --git a/python/GafferImageTest/ImageWriterTest.py b/python/GafferImageTest/ImageWriterTest.py index 4e1027524b5..37f90e1d8f6 100644 --- a/python/GafferImageTest/ImageWriterTest.py +++ b/python/GafferImageTest/ImageWriterTest.py @@ -54,21 +54,15 @@ class ImageWriterTest( GafferImageTest.ImageTestCase ) : + __largeFilePath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/large.exr" ) + __rgbFilePath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/rgb.100x100" ) + __negativeDataWindowFilePath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/checkerWithNegativeDataWindow.200x150" ) + __representativeDeepPath = os.path.expandvars( "$GAFFER_ROOT/python/GafferImageTest/images/representativeDeepImage.exr" ) + longMessage = True def setUp( self ) : - if os.name == "nt": - gaffer_root = os.path.expandvars( "%GAFFER_ROOT%" ) - else: - gaffer_root = os.path.expandvars( "$GAFFER_ROOT" ) - - self.__largeFilePath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/large.exr" ) - self.__rgbFilePath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/rgb.100x100" ) - self.__negativeDataWindowFilePath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/checkerWithNegativeDataWindow.200x150" ) - self.__representativeDeepPath = os.path.abspath( gaffer_root + "/python/GafferImageTest/images/representativeDeepImage.exr" ) - - GafferImageTest.ImageTestCase.setUp( self ) self.__defaultColorSpaceFunction = GafferImage.ImageWriter.getDefaultColorSpaceFunction() @@ -483,11 +477,7 @@ def __testExtension( self, ext, formatName, options = {}, metadataToIgnore = [] # the writer adds several standard attributes that aren't in the original file expectedMetadata["Software"] = IECore.StringData( "Gaffer " + Gaffer.About.versionString() ) expectedMetadata["HostComputer"] = IECore.StringData( platform.node() ) - if os.name == "nt": - user_key = "username" - else: - user_key = "USER" - expectedMetadata["Artist"] = IECore.StringData( os.environ[user_key] ) + expectedMetadata["Artist"] = IECore.StringData( os.environ["USER"] ) expectedMetadata["DocumentName"] = IECore.StringData( "untitled" ) for key in overrideMetadata : @@ -794,11 +784,7 @@ def __testMetadataDoesNotAffectPixels( self, ext, overrideMetadata = {}, metadat expectedMetadata["DateTime"] = regularReaderMetadata["DateTime"] expectedMetadata["Software"] = IECore.StringData( "Gaffer " + Gaffer.About.versionString() ) expectedMetadata["HostComputer"] = IECore.StringData( platform.node() ) - if os.name == "nt": - user_key = "username" - else: - user_key = "USER" - expectedMetadata["Artist"] = IECore.StringData( os.environ[user_key] ) + expectedMetadata["Artist"] = IECore.StringData( os.environ["USER"] ) expectedMetadata["DocumentName"] = IECore.StringData( "untitled" ) expectedMetadata["fileFormat"] = regularReaderMetadata["fileFormat"] expectedMetadata["dataType"] = regularReaderMetadata["dataType"] @@ -997,13 +983,7 @@ def testFileNamesWithSubstitutions( self ) : with context : s["w"]["task"].execute() - self.assertTrue( os.path.isfile( os.path.join( self.temporaryDirectory(), "test.tif" ) ) ) - - s["w"]["fileName"].setValue( self.temporaryDirectory() + "/test.#.tif" ) - context.setFrame( 5 ) - with context : - s["w"]["task"].execute() - self.assertTrue( os.path.isfile( os.path.join( self.temporaryDirectory(), "test.5.tif" ) ) ) + self.assertTrue( os.path.isfile( self.temporaryDirectory() + "/test.tif" ) ) def testErrorMessages( self ) : @@ -1090,7 +1070,7 @@ def __init__( self, name = "DerivedImageWriter" ) : GafferImage.ImageWriter.__init__( self, name ) - self["copyFileName"] = Gaffer.FileSystemPathPlug() + self["copyFileName"] = Gaffer.StringPlug() def execute( self ) : @@ -1132,7 +1112,7 @@ def testStringMetadata( self ) : def __testFile( self, mode, channels, ext ) : - return os.path.join(self.temporaryDirectory(), "test." + channels + "." + str( mode ) + "." + str( ext )) + return self.temporaryDirectory() + "/test." + channels + "." + str( mode ) + "." + str( ext ) def testJpgChroma( self ): @@ -1147,7 +1127,7 @@ def testJpgChroma( self ): chromaSubSamplings = ( "4:4:4", "4:2:2", "4:2:0", "4:1:1", "" ) for chromaSubSampling in chromaSubSamplings: - testFile = os.path.join( self.temporaryDirectory(), "chromaSubSampling.{0}.jpg".format( chromaSubSampling.replace(":", ".") ) ) + testFile = os.path.join( self.temporaryDirectory(), "chromaSubSampling.{0}.jpg".format( chromaSubSampling ) ) w["fileName"].setValue( testFile ) w["jpeg"]["chromaSubSampling"].setValue( chromaSubSampling ) diff --git a/python/GafferOSLTest/OSLTestCase.py b/python/GafferOSLTest/OSLTestCase.py index 404d4826492..93beb96495a 100644 --- a/python/GafferOSLTest/OSLTestCase.py +++ b/python/GafferOSLTest/OSLTestCase.py @@ -35,11 +35,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import GafferSceneTest @@ -51,7 +47,7 @@ def compileShader( self, sourceFileName ) : subprocess.check_call( [ "oslc", "-q" ] + - [ "-I" + p for p in os.environ.get( "OSL_SHADER_PATHS", "" ).split( os.pathsep ) ] + + [ "-I" + p for p in os.environ.get( "OSL_SHADER_PATHS", "" ).split( ":" ) ] + [ "-o", outputFileName, sourceFileName ] ) diff --git a/python/GafferSceneUI/CameraUI.py b/python/GafferSceneUI/CameraUI.py index 4663203c49c..000e4ef508d 100644 --- a/python/GafferSceneUI/CameraUI.py +++ b/python/GafferSceneUI/CameraUI.py @@ -169,17 +169,17 @@ "layout:visibilityActivator", "perspectiveModeFocalLength", - "preset:Academy 35mm 21.946 \u00D7 16.000", imath.V2f( 21.946, 16 ), - "preset:Super 35mm 24.892 \u00D7 18.669", imath.V2f( 24.892, 18.669 ), - "preset:Micro Four Thirds 17.30 \u00D7 13.00", imath.V2f( 17.3, 13 ), - "preset:APS-C 22.30 \u00D7 14.90", imath.V2f( 22.3, 14.9 ), - "preset:Full Frame 35mm 36.00 \u00D7 24.00", imath.V2f( 36, 24 ), - "preset:Alexa SXT 4:3 2.8k 23.76 \u00D7 17.82", imath.V2f( 23.76, 17.82 ), - "preset:Alexa SXT Open Gate 3.4k 28.25 \u00D7 18.17", imath.V2f( 28.25, 18.17 ), - "preset:Alexa 65 16:9 5.1k 42.24 \u00D7 23.76", imath.V2f( 42.24, 23.76 ), - "preset:Alexa 65 Open Gate 6.5k 54.12 \u00D7 25.58", imath.V2f( 54.12, 25.58 ), - "preset:RED EPIC-W 5K S35 30.72 \u00D7 18.00", imath.V2f( 30.72, 18 ), - "preset:RED EPIC-W 8K S35 29.90 \u00D7 15.77", imath.V2f( 29.9, 15.77 ), + "preset:Academy 35mm 21.946 × 16.000", imath.V2f( 21.946, 16 ), + "preset:Super 35mm 24.892 × 18.669", imath.V2f( 24.892, 18.669 ), + "preset:Micro Four Thirds 17.30 × 13.00", imath.V2f( 17.3, 13 ), + "preset:APS-C 22.30 × 14.90", imath.V2f( 22.3, 14.9 ), + "preset:Full Frame 35mm 36.00 × 24.00", imath.V2f( 36, 24 ), + "preset:Alexa SXT 4:3 2.8k 23.76 × 17.82", imath.V2f( 23.76, 17.82 ), + "preset:Alexa SXT Open Gate 3.4k 28.25 × 18.17", imath.V2f( 28.25, 18.17 ), + "preset:Alexa 65 16:9 5.1k 42.24 × 23.76", imath.V2f( 42.24, 23.76 ), + "preset:Alexa 65 Open Gate 6.5k 54.12 × 25.58", imath.V2f( 54.12, 25.58 ), + "preset:RED EPIC-W 5K S35 30.72 × 18.00", imath.V2f( 30.72, 18 ), + "preset:RED EPIC-W 8K S35 29.90 × 15.77", imath.V2f( 29.9, 15.77 ), "presetsPlugValueWidget:allowCustom", True, diff --git a/python/GafferSceneUI/ShaderUI.py b/python/GafferSceneUI/ShaderUI.py index 52213c918e2..b283bf54494 100644 --- a/python/GafferSceneUI/ShaderUI.py +++ b/python/GafferSceneUI/ShaderUI.py @@ -284,10 +284,10 @@ def __shaderSubMenu( searchPaths, extensions, nodeCreator, matchExpression, sear if path in pathsVisited : continue - for root, dirs, files in os.walk( path ) : + for root, dirs, files in os.walk( path ) : for file in files : if os.path.splitext( file )[1][1:] in extensions : - shaderPath = os.path.join( root, file ).partition( path )[-1].lstrip( os.path.sep ) + shaderPath = os.path.join( root, file ).partition( path )[-1].lstrip( "/" ) if __hiddenShadersPathMatcher.match( shaderPath ) & IECore.PathMatcher.Result.ExactMatch : continue if shaderPath not in shaders and matchExpression.match( shaderPath ) : @@ -296,18 +296,18 @@ def __shaderSubMenu( searchPaths, extensions, nodeCreator, matchExpression, sear pathsVisited.add( path ) shaders = sorted( list( shaders ) ) - categorisedShaders = [ x for x in shaders if os.path.sep in x ] - uncategorisedShaders = [ x for x in shaders if os.path.sep not in x ] + categorisedShaders = [ x for x in shaders if "/" in x ] + uncategorisedShaders = [ x for x in shaders if "/" not in x ] shadersAndMenuPaths = [] for shader in categorisedShaders : - shadersAndMenuPaths.append( ( shader.replace("\\", "/"), "/" + shader.replace("\\", "/") ) ) + shadersAndMenuPaths.append( ( shader, "/" + shader ) ) for shader in uncategorisedShaders : if not categorisedShaders : - shadersAndMenuPaths.append( ( shader.replace("\\", "/"), "/" + shader.replace("\\", "/") ) ) + shadersAndMenuPaths.append( ( shader, "/" + shader ) ) else : - shadersAndMenuPaths.append( ( shader.replace("\\", "/"), "/Other/" + shader.replace("\\", "/") ) ) + shadersAndMenuPaths.append( ( shader, "/Other/" + shader ) ) result = IECore.MenuDefinition() for shader, menuPath in shadersAndMenuPaths : diff --git a/python/GafferSceneUI/StandardOptionsUI.py b/python/GafferSceneUI/StandardOptionsUI.py index d7f26b394b3..ecb220f4739 100644 --- a/python/GafferSceneUI/StandardOptionsUI.py +++ b/python/GafferSceneUI/StandardOptionsUI.py @@ -254,7 +254,7 @@ def __statisticsSummary( plug ) : sides of the rendered image. Overscan can be useful when camera shake or blur will be added - as a post-process. This plug just enables overscan as a whole \u2013 + as a post-process. This plug just enables overscan as a whole – use the _Overscan Top_, _Overscan Bottom_, _Overscan Left_ and _Overscan Right_ plugs to specify the amount of overscan on each side of the image. diff --git a/python/GafferTest/ApplicationTest.py b/python/GafferTest/ApplicationTest.py index 9c241e5268d..214409e07ba 100644 --- a/python/GafferTest/ApplicationTest.py +++ b/python/GafferTest/ApplicationTest.py @@ -36,11 +36,7 @@ import os import time -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import IECore import Gaffer diff --git a/python/GafferTest/FileSystemPathInOutNode.py b/python/GafferTest/FileSystemPathInOutNode.py deleted file mode 100644 index c2748100464..00000000000 --- a/python/GafferTest/FileSystemPathInOutNode.py +++ /dev/null @@ -1,75 +0,0 @@ -########################################################################## -# -# Copyright (c) 2012, John Haddon. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above -# copyright notice, this list of conditions and the following -# disclaimer. -# -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided with -# the distribution. -# -# * Neither the name of John Haddon nor the names of -# any other contributors to this software may be used to endorse or -# promote products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -########################################################################## - -import IECore -import Gaffer - -class FileSystemPathInOutNode( Gaffer.ComputeNode ) : - - def __init__( self, name="FileSystemPathInOutNode", defaultValue="", substitutions = Gaffer.Context.Substitutions.AllSubstitutions ) : - - Gaffer.ComputeNode.__init__( self, name ) - - self.addChild( Gaffer.FileSystemPathPlug( "in", Gaffer.Plug.Direction.In, defaultValue, substitutions = substitutions ) ) - self.addChild( Gaffer.FileSystemPathPlug( "out", Gaffer.Plug.Direction.Out ) ) - - self.numHashCalls = 0 - self.numComputeCalls = 0 - - def affects( self, input ) : - - outputs = Gaffer.ComputeNode.affects( self, input ) - - if input.isSame( self["in"] ) : - outputs.append( self["out"] ) - - return outputs - - def hash( self, output, context, h ) : - - if output.isSame( self["out"] ) : - self["in"].hash( h ) - - self.numHashCalls += 1 - - def compute( self, plug, context ) : - - if plug.isSame( self["out"] ) : - plug.setValue( self["in"].getValue() ) - - self.numComputeCalls += 1 - -IECore.registerRunTimeTyped( FileSystemPathInOutNode, typeName = "GafferTest::FileSystemPathInOutNode" ) diff --git a/python/GafferTest/FileSystemPathPlugTest.py b/python/GafferTest/FileSystemPathPlugTest.py deleted file mode 100644 index 50e9cd1f9dd..00000000000 --- a/python/GafferTest/FileSystemPathPlugTest.py +++ /dev/null @@ -1,399 +0,0 @@ -########################################################################## -# -# Copyright (c) 2012, John Haddon. All rights reserved. -# Copyright (c) 2013, Image Engine Design Inc. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above -# copyright notice, this list of conditions and the following -# disclaimer. -# -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided with -# the distribution. -# -# * Neither the name of John Haddon nor the names of -# any other contributors to this software may be used to endorse or -# promote products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -########################################################################## - -import os -import inspect -import unittest - -import IECore - -import Gaffer -import GafferTest - -class FileSystemPathPlugTest( GafferTest.TestCase ) : - - def testSlashConversion( self ) : - n = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n ) - - n["in"].setValue( "C:/path/test.exr" ) - self.assertEqual( n["out"].getValue(), os.path.join( "C:", os.sep, "path", "test.exr" ) ) - - n2 = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n2 ) - - n2["in"].setInput( n["out"] ) - self.assertEqual( n2["out"].getValue(), os.path.join( "C:", os.sep, "path", "test.exr") ) - - n3 = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n3 ) - n3["in"].setValue( "relative/path/test.exr" ) - self.assertEqual( n3["out"].getValue(), os.path.join( "relative", "path", "test.exr" ) ) - - n4 = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n4 ) - n4["in"].setValue( "C:\\backslash\\should\\work\\too.exr" ) - self.assertEqual( n4["out"].getValue(), os.path.join("C:", os.sep, "backslash", "should", "work", "too.exr")) - - def testUNC( self ) : - if os.name == "nt": - n = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n ) - - # generic starting with a single forward slash is interpreted - # as a UNC path and should start with double back slash - - n["in"].setValue( "/test.server/path/test.exr" ) - self.assertEqual( n["out"].getValue(), "\\\\test.server\\path\\test.exr" ) - - def testPosixRootPath( self ): - if os.name != "nt": - n = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n ) - - n["in"].setValue( "root/path/test.exr" ) - self.assertEqual( n["out"].getValue(), "root/path/test.exr" ) - - def testStringNodeCompatibility( self ): - n = GafferTest.FileSystemPathInOutNode() - s = GafferTest.StringInOutNode() - s["in"].setValue( "test/string.exr" ) - - - n["in"].setInput( s["out"] ) - - self.assertEqual( n["out"].getValue(), os.path.join( "test", "string.exr" ) ) - - def testExpansion( self ) : - - n = GafferTest.FileSystemPathInOutNode() - self.assertHashesValid( n ) - - # nothing should be expanded when we're in a non-computation context - n["in"].setValue( "testyTesty.##.exr" ) - self.assertEqual( n["in"].getValue(), "testyTesty.##.exr" ) - - n["in"].setValue( "${a}/$b/${a:b}" ) - self.assertEqual( n["in"].getValue(), os.path.join("${a}", "$b", "${a:b}" ) ) - - # but expansions should happen magically when the compute() - # calls getValue(). - context = Gaffer.Context() - context.setFrame( 10 ) - n["in"].setValue( "testyTesty.###.exr" ) - with context : - self.assertEqual( n["out"].getValue(), "testyTesty.010.exr" ) - - context["A"] = "apple" - n["in"].setValue( "what/a/lovely/$A" ) - with context : - self.assertEqual( n["out"].getValue(), os.path.join( "what", "a", "lovely", "apple" ) ) - n["in"].setValue( "what/a/lovely/${A}" ) - with context : - self.assertEqual( n["out"].getValue(), os.path.join( "what", "a", "lovely", "apple" ) ) - context["A"] = "peach" - with context : - self.assertEqual( n["out"].getValue(), os.path.join( "what", "a", "lovely", "peach" ) ) - - context["env:dir"] = "a/path" - n["in"].setValue( "a/${env:dir}/b" ) - with context : - self.assertEqual( n["out"].getValue(), os.path.join( "a", "a", "path", "b" ) ) - - n["in"].setValue( "$dontExist" ) - with context : - self.assertEqual( n["out"].getValue(), "" ) - - # once again, nothing should be expanded when we're in a - # non-computation context - n["in"].setValue( "testyTesty.##.exr" ) - self.assertEqual( n["in"].getValue(), "testyTesty.##.exr" ) - - def testRecursiveExpansion( self ) : - - n = GafferTest.FileSystemPathInOutNode() - n["in"].setValue( "$a" ) - - context = Gaffer.Context() - context["a"] = "a$b" - context["b"] = "b" - - with context : - self.assertEqual( n["out"].getValue(), "ab" ) - - def testRecursiveExpansionCycles( self ) : - - n = GafferTest.FileSystemPathInOutNode() - n["in"].setValue( "$a" ) - - context = Gaffer.Context() - context["a"] = "a$b" - context["b"] = "b$a" - - with context : - self.assertRaises( RuntimeError, n["out"].getValue ) - - def testDefaultValueExpansion( self ) : - - n = GafferTest.FileSystemPathInOutNode( defaultValue = "${A}" ) - context = Gaffer.Context() - context["A"] = "b" - with context : - self.assertEqual( n["out"].getValue(), "b" ) - - def testExpansionFromInputConnection( self ) : - - p = Gaffer.FileSystemPathPlug() - p.setValue( "${foo}" ) - - n = GafferTest.FileSystemPathInOutNode() - n["in"].setInput( p ) - - c = Gaffer.Context() - with c : - self.assertEqual( n["out"].getValue(), "" ) - h = n["out"].hash() - - c["foo"] = "foo" - with c : - self.assertNotEqual( n["out"].hash(), h ) - self.assertEqual( n["out"].getValue(), "foo" ) - - def testExpansionMask( self ) : - - n1 = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.AllSubstitutions ) - n2 = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.AllSubstitutions & ~Gaffer.Context.Substitutions.FrameSubstitutions ) - - n1["in"].setValue( "hello.####.${ext}" ) - n2["in"].setValue( "hello.####.${ext}" ) - self.assertEqual( n1["out"].getValue(), os.path.expanduser( "hello.0001." ) ) - self.assertEqual( n2["out"].getValue(), os.path.expanduser( "hello.####." ) ) - - c = Gaffer.Context() - c["ext"] = "cob" - c.setFrame( 10 ) - with c : - self.assertEqual( n1["out"].getValue(), os.path.expanduser( "hello.0010.cob" ) ) - self.assertEqual( n2["out"].getValue(), os.path.expanduser( "hello.####.cob" ) ) - - def testSubstitutionsSerialisation( self ) : - - s = Gaffer.ScriptNode() - s["n"] = Gaffer.Node() - s["n"]["p"] = Gaffer.FileSystemPathPlug( - "p", - flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, - substitutions = Gaffer.Context.Substitutions.AllSubstitutions & ~Gaffer.Context.Substitutions.FrameSubstitutions - ) - self.assertEqual( s["n"]["p"].substitutions(), Gaffer.Context.Substitutions.AllSubstitutions & ~Gaffer.Context.Substitutions.FrameSubstitutions ) - - s2 = Gaffer.ScriptNode() - s2.execute( s.serialise() ) - self.assertEqual( s["n"]["p"].substitutions(), s2["n"]["p"].substitutions() ) - - def testSubstitutionsRepr( self ) : - - p = Gaffer.FileSystemPathPlug( - substitutions = Gaffer.Context.Substitutions.TildeSubstitutions | Gaffer.Context.Substitutions.FrameSubstitutions - ) - - p2 = eval( repr( p ) ) - self.assertEqual( p.substitutions(), p2.substitutions() ) - - def testSubstitutionsCounterpart( self ) : - - p = Gaffer.FileSystemPathPlug( - substitutions = Gaffer.Context.Substitutions.TildeSubstitutions | Gaffer.Context.Substitutions.FrameSubstitutions - ) - - p2 = p.createCounterpart( "p2", p.Direction.In ) - self.assertEqual( p.substitutions(), p2.substitutions() ) - - def testTildeExpansion( self ) : - - n = GafferTest.FileSystemPathInOutNode() - - n["in"].setValue( "~" ) - self.assertEqual( n["out"].getValue(), os.path.expanduser( "~" ) ) - - n["in"].setValue( "~/something.tif" ) - self.assertEqual( n["out"].getValue(), os.path.join( os.path.expanduser( "~"), "something.tif" ) ) - - # ~ shouldn't be expanded unless it's at the front - it would - # be meaningless in other cases. - n["in"].setValue( "in/~1900" ) - self.assertEqual( n["out"].getValue(), os.path.join("in", "~1900" ) ) - - def testEnvironmentExpansion( self ) : - - n = GafferTest.FileSystemPathInOutNode() - - n["in"].setValue( "${NOT_AN_ENVIRONMENT_VARIABLE}" ) - h1 = n["out"].hash() - self.assertEqual( n["out"].getValue(), "" ) - - n["in"].setValue( "${GAFFER_ROOT}" ) - self.assertEqual( n["out"].getValue(), os.environ["GAFFER_ROOT"] ) - h2 = n["out"].hash() - self.assertNotEqual( h1, h2 ) - - context = Gaffer.Context() - context["GAFFER_ROOT"] = "b" - with context : - # context should win against environment - self.assertEqual( n["out"].getValue(), "b" ) - self.assertNotEqual( n["out"].hash(), h1 ) - self.assertNotEqual( n["out"].hash(), h2 ) - - def testSubstitutionsFromExpressionInput( self ) : - - s = Gaffer.ScriptNode() - - # Should output a substituted version of the input. - s["substitionsOn"] = GafferTest.FileSystemPathInOutNode() - - # Should pass through the input directly, without substitutions. - s["substitionsOff"] = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.NoSubstitutions ) - - # The third case is trickier. The "in" plug on the node - # itself requests no substitutions, but it receives its - # input via an indirect connection with substitutions - # turned on. We resolve this by defining substitutions - # to occur only when observing a value inside a compute, - # and to always be determined by the plug used to access - # the value. A chain of connections can be thought of as - # carrying an unsubstituted string all the way along - # internally, with each plug along the way determining - # the substitutions applied when peeking in to see the value - # at that point. - # - # In practice this works best because typically it is only - # nodes that know when a substitution is relevant, and the - # user shouldn't be burdened with the job of thinking about - # them when making intermediate connections to that node. - s["substitionsOnIndirectly"] = GafferTest.FileSystemPathInOutNode( substitutions = Gaffer.Context.Substitutions.NoSubstitutions ) - s["substitionsOnIndirectly"]["user"]["in"] = Gaffer.FileSystemPathPlug() - s["substitionsOnIndirectly"]["in"].setInput( s["substitionsOnIndirectly"]["user"]["in"] ) - - # All three nodes above receive their input from this expression - # which outputs a sequence value to be substituted (or not). - - s["e"] = Gaffer.Expression() - s["e"].setExpression( inspect.cleandoc( - """ - parent["substitionsOn"]["in"] = "test.#.exr" - parent["substitionsOff"]["in"] = "test.#.exr" - parent["substitionsOnIndirectly"]["user"]["in"] = "test.#.exr" - """ - ) ) - - with Gaffer.Context() as c : - - # Frame 1 - ######### - - c.setFrame( 1 ) - - # The output of the expression itself is not substituted. - # Substitutions occur only on input plugs. - - self.assertEqual( s["substitionsOn"]["in"].getInput().getValue(), "test.#.exr" ) - self.assertEqual( s["substitionsOff"]["in"].getInput().getValue(), "test.#.exr" ) - self.assertEqual( s["substitionsOnIndirectly"]["user"]["in"].getInput().getValue(), "test.#.exr" ) - - # We should get frame numbers out of the substituting node. - - self.assertEqual( s["substitionsOn"]["out"].getValue(), "test.1.exr" ) - substitutionsOnHash1 = s["substitionsOn"]["out"].hash() - self.assertEqual( s["substitionsOn"]["out"].getValue( _precomputedHash = substitutionsOnHash1 ), "test.1.exr" ) - - # We should get sequences out of the non-substituting node. - - self.assertEqual( s["substitionsOff"]["out"].getValue(), "test.#.exr" ) - substitutionsOffHash1 = s["substitionsOff"]["out"].hash() - self.assertEqual( s["substitionsOff"]["out"].getValue( _precomputedHash = substitutionsOffHash1 ), "test.#.exr" ) - self.assertNotEqual( substitutionsOnHash1, substitutionsOffHash1 ) - - # We shouldn't get frame numbers out of the third node, because the - # requirements of the node (no substitutions) trump any upstream opinions. - # Substitutions are performed by the plug during value access, and do not - # affect the actual data flow. - - self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue(), "test.#.exr" ) - substitionsOnIndirectlyHash1 = s["substitionsOnIndirectly"]["out"].hash() - self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue( _precomputedHash = substitionsOnIndirectlyHash1 ), "test.#.exr" ) - - # Frame 2 - ######### - - c.setFrame( 2 ) - - # The output of the expression itself is not substituted. - # Substitutions occur only on input plugs. - - self.assertEqual( s["substitionsOn"]["in"].getInput().getValue(), "test.#.exr" ) - self.assertEqual( s["substitionsOff"]["in"].getInput().getValue(), "test.#.exr" ) - self.assertEqual( s["substitionsOnIndirectly"]["user"]["in"].getInput().getValue(), "test.#.exr" ) - - # We should get frame numbers out of the substituting node. - # The hash must has changed to make this possible. - - self.assertEqual( s["substitionsOn"]["out"].getValue(), "test.2.exr" ) - substitutionsOnHash2 = s["substitionsOn"]["out"].hash() - self.assertEqual( s["substitionsOn"]["out"].getValue( _precomputedHash = substitutionsOnHash2 ), "test.2.exr" ) - self.assertNotEqual( substitutionsOnHash2, substitutionsOnHash1 ) - - # We should still get sequences out of the non-substituting node, - # and it should have the same output hash as it had on frame 1. - - self.assertEqual( s["substitionsOff"]["out"].getValue(), "test.#.exr" ) - substitutionsOffHash2 = s["substitionsOff"]["out"].hash() - self.assertEqual( s["substitionsOff"]["out"].getValue( _precomputedHash = substitutionsOffHash2 ), "test.#.exr" ) - self.assertEqual( substitutionsOffHash1, substitutionsOffHash2 ) - self.assertNotEqual( substitutionsOnHash2, substitutionsOffHash2 ) - - # The third node should still be non-substituting. - - self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue(), "test.#.exr" ) - substitionsOnIndirectlyHash2 = s["substitionsOnIndirectly"]["out"].hash() - self.assertEqual( s["substitionsOnIndirectly"]["out"].getValue( _precomputedHash = substitionsOnIndirectlyHash2 ), "test.#.exr" ) - self.assertEqual( substitionsOnIndirectlyHash2, substitionsOnIndirectlyHash1 ) - - - -if __name__ == "__main__": - unittest.main() diff --git a/python/GafferTest/FileSystemPathTest.py b/python/GafferTest/FileSystemPathTest.py index bb12854efc4..9011a2b1d0a 100644 --- a/python/GafferTest/FileSystemPathTest.py +++ b/python/GafferTest/FileSystemPathTest.py @@ -38,10 +38,9 @@ import unittest import time import datetime +import pwd +import grp import os -if os.name is not "nt": - import pwd - import grp import IECore @@ -79,11 +78,6 @@ def testConstructWithFilter( self ) : def testBrokenSymbolicLinks( self ) : - # Windows essentially doesn't support symbolic links (they are only able to be created by - # an administrator) - if os.name == "nt": - return - os.symlink( self.temporaryDirectory() + "/nonExistent", self.temporaryDirectory() + "/broken" ) # we do want symlinks to appear in children, even if they're broken @@ -105,11 +99,6 @@ def testBrokenSymbolicLinks( self ) : def testSymLinkInfo( self ) : - # Windows essentially doesn't support symbolic links (they are only able to be created by - # an administrator) - if os.name == "nt": - return - with open( self.temporaryDirectory() + "/a", "w" ) as f : f.write( "AAAA" ) @@ -132,13 +121,11 @@ def testCopy( self ) : self.assertEqual( p, p2 ) self.assertEqual( str( p ), str( p2 ) ) - self.assertEqual( p.nativeString(), p2.nativeString() ) def testEmptyPath( self ) : p = Gaffer.FileSystemPath() self.assertEqual( str( p ), "" ) - self.assertEqual( p.nativeString(), "" ) self.assertTrue( p.isEmpty() ) self.assertFalse( p.isValid() ) @@ -146,55 +133,26 @@ def testRelativePath( self ) : os.chdir( self.temporaryDirectory() ) - with open( os.path.join( self.temporaryDirectory(), "a" ), "w" ) as f : + with open( self.temporaryDirectory() + "/a", "w" ) as f : f.write( "AAAA" ) p = Gaffer.FileSystemPath( "a" ) self.assertEqual( str( p ), "a" ) - self.assertEqual( p.nativeString(), "a" ) self.assertFalse( p.isEmpty() ) self.assertTrue( p.isValid() ) p2 = Gaffer.FileSystemPath( "nonexistent" ) self.assertEqual( str( p2 ), "nonexistent" ) - self.assertEqual( p2.nativeString(), "nonexistent" ) self.assertFalse( p2.isEmpty() ) self.assertFalse( p2.isValid() ) - def testDriveLetterPath( self ) : - p = Gaffer.FileSystemPath( "C:\\this\\path\\does\\not\\exist.ext" ) - - self.assertEqual( str( p ), "C:/this/path/does/not/exist.ext" ) - if os.name == "nt": - self.assertEqual( p.nativeString(), "C:\\this\\path\\does\\not\\exist.ext") - self.assertFalse( p.isEmpty() ) - self.assertFalse( p.isValid() ) - - def testUNCPath( self ) : - p = Gaffer.FileSystemPath( "\\\\this.server\\path\\does\\not\\exist.ext" ) - - self.assertEqual( str( p ), "/this.server/path/does/not/exist.ext" ) - if os.name == "nt": - self.assertEqual( p.nativeString(), "\\\\this.server\\path\\does\\not\\exist.ext") - self.assertFalse( p.isEmpty() ) - self.assertFalse( p.isValid() ) - - def testPosixPath( self ) : - p = Gaffer.FileSystemPath( "/this/path/does/not/exist.ext" ) - - self.assertEqual( str( p ), "/this/path/does/not/exist.ext" ) - if os.name is not "nt": - self.assertEqual( p.nativeString(), "/this/path/does/not/exist.ext") - self.assertFalse( p.isEmpty() ) - self.assertFalse( p.isValid() ) - def testRelativePathChildren( self ) : os.chdir( self.temporaryDirectory() ) os.mkdir( "dir" ) - with open( os.path.join( self.temporaryDirectory(), "dir", "a" ), "w" ) as f : + with open( self.temporaryDirectory() + "/dir/a", "w" ) as f : f.write( "AAAA" ) p = Gaffer.FileSystemPath( "dir" ) @@ -202,10 +160,6 @@ def testRelativePathChildren( self ) : c = p.children() self.assertEqual( len( c ), 1 ) self.assertEqual( str( c[0] ), "dir/a" ) - if os.name == "nt": - self.assertEqual( c[0].nativeString(), "dir\\a" ) - else: - self.assertEqual( c[0].nativeString(), "dir/a" ) self.assertTrue( c[0].isValid() ) def testChildrenOfFile( self ) : @@ -218,7 +172,7 @@ def testModificationTimes( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) - with open( p.nativeString(), "w" ) as f : + with open( str( p ), "w" ) as f : f.write( "AAAA" ) mt = p.property( "fileSystem:modificationTime" ) @@ -227,7 +181,7 @@ def testModificationTimes( self ) : time.sleep( 1 ) - with open( p.nativeString(), "w" ) as f : + with open( str( p ), "w" ) as f : f.write( "BBBB" ) mt = p.property( "fileSystem:modificationTime" ) @@ -239,29 +193,24 @@ def testOwner( self ) : p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) - with open( p.nativeString(), "w" ) as f : + with open( str( p ), "w" ) as f : f.write( "AAAA" ) o = p.property( "fileSystem:owner" ) self.assertTrue( isinstance( o, str ) ) - - self.assertEqual( o, self.getFileOwner( p.nativeString() ) ) + self.assertEqual( o, pwd.getpwuid( os.stat( str( p ) ).st_uid ).pw_name ) def testGroup( self ) : - # Windows files do not have a separate group ownership - if os.name == "nt": - return - p = Gaffer.FileSystemPath( self.temporaryDirectory() ) p.append( "t" ) - with open( p.nativeString(), "w" ) as f : + with open( str( p ), "w" ) as f : f.write( "AAAA" ) g = p.property( "fileSystem:group" ) self.assertTrue( isinstance( g, str ) ) - self.assertEqual( g, grp.getgrgid( os.stat( p.nativeString() ).st_gid ).gr_name ) + self.assertEqual( g, grp.getgrgid( os.stat( str( p ) ).st_gid ).gr_name ) def testPropertyNames( self ) : @@ -281,9 +230,9 @@ def testPropertyNames( self ) : def testSequences( self ) : - os.mkdir( os.path.join( self.temporaryDirectory(), "dir" ) ) + os.mkdir( self.temporaryDirectory() + "/dir" ) for n in [ "singleFile.txt", "a.001.txt", "a.002.txt", "a.004.txt", "b.003.txt" ] : - with open( os.path.join( self.temporaryDirectory(), n ), "w" ) as f : + with open( self.temporaryDirectory() + "/" + n, "w" ) as f : f.write( "AAAA" ) p = Gaffer.FileSystemPath( self.temporaryDirectory(), includeSequences = True ) @@ -293,38 +242,29 @@ def testSequences( self ) : self.assertEqual( len( c ), 8 ) s = sorted( c, key=str ) - self.assertEqual( str(s[0]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.###.txt" ) - self.assertEqual( s[0].nativeString(), os.path.join( self.temporaryDirectory(), "a.###.txt" ) ) - self.assertEqual( str(s[1]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.001.txt" ) - self.assertEqual( s[1].nativeString(), os.path.join( self.temporaryDirectory(), "a.001.txt" ) ) - self.assertEqual( str(s[2]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.002.txt" ) - self.assertEqual( s[2].nativeString(), os.path.join( self.temporaryDirectory(), "a.002.txt" ) ) - self.assertEqual( str(s[3]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.004.txt" ) - self.assertEqual( s[3].nativeString(), os.path.join( self.temporaryDirectory(), "a.004.txt" ) ) - self.assertEqual( str(s[4]), self.temporaryDirectory().replace( "\\", "/" ) + "/b.###.txt" ) - self.assertEqual( s[4].nativeString(), os.path.join( self.temporaryDirectory(), "b.###.txt" ) ) - self.assertEqual( str(s[5]), self.temporaryDirectory().replace( "\\", "/" ) + "/b.003.txt" ) - self.assertEqual( s[5].nativeString(), os.path.join( self.temporaryDirectory(), "b.003.txt" ) ) - self.assertEqual( str(s[6]), self.temporaryDirectory().replace( "\\", "/" ) + "/dir" ) - self.assertEqual( s[6].nativeString(), os.path.join( self.temporaryDirectory(), "dir" ) ) - self.assertEqual( str(s[7]), self.temporaryDirectory().replace( "\\", "/" ) + "/singleFile.txt" ) - self.assertEqual( s[7].nativeString(), os.path.join( self.temporaryDirectory(), "singleFile.txt" ) ) + self.assertEqual( str(s[0]), self.temporaryDirectory() + "/a.###.txt" ) + self.assertEqual( str(s[1]), self.temporaryDirectory() + "/a.001.txt" ) + self.assertEqual( str(s[2]), self.temporaryDirectory() + "/a.002.txt" ) + self.assertEqual( str(s[3]), self.temporaryDirectory() + "/a.004.txt" ) + self.assertEqual( str(s[4]), self.temporaryDirectory() + "/b.###.txt" ) + self.assertEqual( str(s[5]), self.temporaryDirectory() + "/b.003.txt" ) + self.assertEqual( str(s[6]), self.temporaryDirectory() + "/dir" ) + self.assertEqual( str(s[7]), self.temporaryDirectory() + "/singleFile.txt" ) for x in s : self.assertTrue( x.isValid() ) - if not os.path.isdir( x.nativeString() ) : + if not os.path.isdir( str(x) ) : self.assertTrue( x.isLeaf() ) - self.assertEqual( x.property( "fileSystem:owner" ), self.getFileOwner( p.nativeString() ) ) - if os.name is not "nt": - self.assertEqual( x.property( "fileSystem:group" ), grp.getgrgid( os.stat( str( p ) ).st_gid ).gr_name ) + self.assertEqual( x.property( "fileSystem:owner" ), pwd.getpwuid( os.stat( str( p ) ).st_uid ).pw_name ) + self.assertEqual( x.property( "fileSystem:group" ), grp.getgrgid( os.stat( str( p ) ).st_gid ).gr_name ) self.assertLess( (datetime.datetime.utcnow() - x.property( "fileSystem:modificationTime" )).total_seconds(), 2 ) - if "###" not in str( x ) : + if "###" not in str(x) : self.assertFalse( x.isFileSequence() ) self.assertEqual( x.fileSequence(), None ) self.assertEqual( x.property( "fileSystem:frameRange" ), "" ) - if os.path.isdir( x.nativeString() ) : + if os.path.isdir( str(x) ) : self.assertEqual( x.property( "fileSystem:size" ), 0 ) else : self.assertEqual( x.property( "fileSystem:size" ), 4 ) @@ -354,18 +294,12 @@ def testSequences( self ) : self.assertEqual( len( c ), 6 ) s = sorted( c, key=str ) - self.assertEqual( str(s[0]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.001.txt" ) - self.assertEqual( s[0].nativeString(), os.path.join( self.temporaryDirectory(), "a.001.txt" ) ) - self.assertEqual( str(s[1]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.002.txt" ) - self.assertEqual( s[1].nativeString(), os.path.join( self.temporaryDirectory(), "a.002.txt" ) ) - self.assertEqual( str(s[2]), self.temporaryDirectory().replace( "\\", "/" ) + "/a.004.txt" ) - self.assertEqual( s[2].nativeString(), os.path.join( self.temporaryDirectory(), "a.004.txt" ) ) - self.assertEqual( str(s[3]), self.temporaryDirectory().replace( "\\", "/" ) + "/b.003.txt" ) - self.assertEqual( s[3].nativeString(), os.path.join( self.temporaryDirectory(), "b.003.txt" ) ) - self.assertEqual( str(s[4]), self.temporaryDirectory().replace( "\\", "/" ) + "/dir" ) - self.assertEqual( s[4].nativeString(), os.path.join( self.temporaryDirectory(), "dir" ) ) - self.assertEqual( str(s[5]), self.temporaryDirectory().replace( "\\", "/" ) + "/singleFile.txt" ) - self.assertEqual( s[5].nativeString(), os.path.join( self.temporaryDirectory(), "singleFile.txt" ) ) + self.assertEqual( str(s[0]), self.temporaryDirectory() + "/a.001.txt" ) + self.assertEqual( str(s[1]), self.temporaryDirectory() + "/a.002.txt" ) + self.assertEqual( str(s[2]), self.temporaryDirectory() + "/a.004.txt" ) + self.assertEqual( str(s[3]), self.temporaryDirectory() + "/b.003.txt" ) + self.assertEqual( str(s[4]), self.temporaryDirectory() + "/dir" ) + self.assertEqual( str(s[5]), self.temporaryDirectory() + "/singleFile.txt" ) # and we can include them again p.setIncludeSequences( True ) @@ -382,22 +316,9 @@ def setUp( self ) : def tearDown( self ) : - os.chdir( self.__originalCWD ) - GafferTest.TestCase.tearDown( self ) - def getFileOwner( self, filepath ): - - # Windows Python does not have a reliable native method to get the owner - # without installing the Win32 package. Since the files being tested - # are created within the test process, assume the current user is - # an acceptable standin for the file owner - if os.name is not "nt" : - return pwd.getpwuid( os.stat( filepath ).st_uid ).pw_name - else : - return os.environ["USERNAME"] - - GafferTest.TestCase.tearDown( self ) + os.chdir( self.__originalCWD ) if __name__ == "__main__": unittest.main() diff --git a/python/GafferTest/PythonApplicationTest.py b/python/GafferTest/PythonApplicationTest.py index 56c0c88f181..1688a096cda 100644 --- a/python/GafferTest/PythonApplicationTest.py +++ b/python/GafferTest/PythonApplicationTest.py @@ -35,11 +35,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import unittest import GafferTest diff --git a/python/GafferTest/ScriptNodeTest.py b/python/GafferTest/ScriptNodeTest.py index f234fa361a5..5b07adb8362 100644 --- a/python/GafferTest/ScriptNodeTest.py +++ b/python/GafferTest/ScriptNodeTest.py @@ -159,11 +159,11 @@ def testSaveAndLoad( self ) : s["a2"]["op1"].setInput( s["a1"]["sum"] ) s["a2"]["op2"].setValue( 10 ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertTrue( s2["a2"]["op1"].getInput().isSame( s2["a1"]["sum"] ) ) @@ -173,7 +173,7 @@ def testLoadClearsFirst( self ) : s = Gaffer.ScriptNode() s["a1"] = GafferTest.AddNode() - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s.load() @@ -354,11 +354,11 @@ def testFrameRangeLoadAndSave( self ) : self.assertEqual( s["frameRange"]["start"].getValue(), 110 ) self.assertEqual( s["frameRange"]["end"].getValue(), 200 ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertEqual( s2["frameRange"]["start"].getValue(), 110 ) @@ -559,11 +559,11 @@ def testDynamicPlugSaveAndLoad( self ) : s["customSetting"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["customSetting"].setValue( 100 ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertEqual( s2["customSetting"].getValue(), 100 ) @@ -764,16 +764,16 @@ def testLoadingMovedScriptDoesntKeepOldFileName( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() - shutil.move( os.path.join( self.temporaryDirectory(), "test.gfr" ), os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) + shutil.move( self.temporaryDirectory() + "/test.gfr", self.temporaryDirectory() + "/test2.gfr" ) s = Gaffer.ScriptNode() - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test2.gfr" ) s.load() - self.assertEqual( s["fileName"].getValue(), os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) + self.assertEqual( s["fileName"].getValue(), self.temporaryDirectory() + "/test2.gfr" ) def testUnsavedChanges( self ) : @@ -791,7 +791,7 @@ def testUnsavedChanges( self ) : s["node"] = GafferTest.AddNode() self.assertEqual( s["unsavedChanges"].getValue(), True ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() self.assertEqual( s["unsavedChanges"].getValue(), False ) @@ -846,20 +846,20 @@ def testSerialiseToFile( self ) : s["n2"] = GafferTest.AddNode() s["n2"]["op1"].setInput( s["n1"]["sum"] ) - s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s.serialiseToFile( self.temporaryDirectory() + "/test.gfr" ) s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertTrue( "n1" in s2 ) self.assertTrue( "n2" in s2 ) self.assertTrue( s2["n2"]["op1"].getInput().isSame( s2["n1"]["sum"] ) ) - s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ), filter = Gaffer.StandardSet( [ s["n2"] ] ) ) + s.serialiseToFile( self.temporaryDirectory() + "/test.gfr", filter = Gaffer.StandardSet( [ s["n2"] ] ) ) s3 = Gaffer.ScriptNode() - s3["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s3["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s3.load() self.assertTrue( "n1" not in s3 ) @@ -873,13 +873,13 @@ def testExecuteFile( self ) : s["n2"] = GafferTest.AddNode() s["n2"]["op1"].setInput( s["n1"]["sum"] ) - s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s.serialiseToFile( self.temporaryDirectory() + "/test.gfr" ) s2 = Gaffer.ScriptNode() self.assertRaises( RuntimeError, s2.executeFile, "thisFileDoesntExist.gfr" ) - s2.executeFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2.executeFile( self.temporaryDirectory() + "/test.gfr" ) self.assertTrue( s2["n2"]["op1"].getInput().isSame( s2["n1"]["sum"] ) ) @@ -946,11 +946,11 @@ def testCustomVariables( self ) : p["value"].setValue( 20 ) self.assertEqual( s.context().get( "test" ), 20 ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertEqual( s2["variables"][p.getName()]["value"].getValue(), 20 ) @@ -961,7 +961,7 @@ def testFileNameVariables( self ) : s = Gaffer.ScriptNode() self.assertEqual( s.context().get( "script:name" ), "" ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) self.assertEqual( s.context().get( "script:name" ), "test" ) def testReloadWithCustomVariables( self ) : @@ -969,7 +969,7 @@ def testReloadWithCustomVariables( self ) : s = Gaffer.ScriptNode() s["variables"].addChild( Gaffer.NameValuePlug( "test", IECore.IntData( 10 ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s["variables"][0]["value"].setValue( 100 ) @@ -986,11 +986,11 @@ def testLoadCustomVariablesWithDefaultValues( self ) : s["variables"].addChild( p ) self.assertEqual( s.context().get( "test" ), 10 ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertEqual( s2["variables"][p.getName()]["value"].getValue(), 10 ) @@ -1095,7 +1095,7 @@ def testErrorTolerantExecution( self ) : s["n"] = GafferTest.AddNode() with IECore.CapturingMessageHandler() as c : - s.execute( 'parent["n"]["op1"].setValue( 101 )\niWillFail()\nparent["n"]["op2"].setValue( 102 )', continueOnError=True ) + s.execute( 'parent["n"]["op1"].setValue( 101 )\niWillFail(); parent["n"]["op2"].setValue( 102 )', continueOnError=True ) self.assertEqual( s["n"]["op1"].getValue(), 101 ) self.assertEqual( s["n"]["op2"].getValue(), 102 ) @@ -1129,7 +1129,7 @@ def testFileVersioning( self ) : self.assertEqual( Gaffer.Metadata.value( s, "serialiser:minorVersion" ), None ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:patchVersion" ), None ) - s.serialiseToFile( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s.serialiseToFile( self.temporaryDirectory() + "/test.gfr" ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:milestoneVersion" ), None ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:majorVersion" ), None ) @@ -1137,7 +1137,7 @@ def testFileVersioning( self ) : self.assertEqual( Gaffer.Metadata.value( s, "serialiser:patchVersion" ), None ) s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:milestoneVersion" ), Gaffer.About.milestoneVersion() ) @@ -1145,7 +1145,7 @@ def testFileVersioning( self ) : self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:minorVersion" ), Gaffer.About.minorVersion() ) self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:patchVersion" ), Gaffer.About.patchVersion() ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2.load() @@ -1166,11 +1166,11 @@ def testFileVersioningUpdatesOnSave( self ) : self.assertEqual( Gaffer.Metadata.value( s, "serialiser:minorVersion" ), 0 ) self.assertEqual( Gaffer.Metadata.value( s, "serialiser:patchVersion" ), 0 ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s.save() s2 = Gaffer.ScriptNode() - s2["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test.gfr" ) ) + s2["fileName"].setValue( self.temporaryDirectory() + "/test.gfr" ) s2.load() self.assertEqual( Gaffer.Metadata.value( s2, "serialiser:milestoneVersion" ), Gaffer.About.milestoneVersion() ) @@ -1255,7 +1255,7 @@ def testLineNumberForExecutionSyntaxError( self ) : def testFileNameInExecutionError( self ) : - fileName = os.path.join( self.temporaryDirectory(), "test.gfr" ) + fileName = self.temporaryDirectory() + "/test.gfr" with open( fileName, "w" ) as f : f.write( "a = 10\n" ) f.write( "a = iDontExist\n" ) @@ -1299,11 +1299,10 @@ def f( script, child ) : b = Gaffer.Box.create( s, Gaffer.StandardSet( [ s["n1"] ] ) ) Gaffer.PlugAlgo.promote( b["n1"]["op1"] ) - b.exportForReference( os.path.join( self.temporaryDirectory(), "test.grf" ) ) + b.exportForReference( self.temporaryDirectory() + "/test.grf" ) s["r"] = Gaffer.Reference() - # since this will be a Gaffer native path, ensure it only has / on all OS - s["r"].load( os.path.join( self.temporaryDirectory(), "test.grf" ).replace( "\\", "/" ) ) + s["r"].load( self.temporaryDirectory() + "/test.grf" ) s["r"]["op1"].setInput( s["n"]["sum"] ) @@ -1424,7 +1423,7 @@ def testImport( self ) : s1["frameRange"]["end"].setValue( 101 ) s1["variables"].addChild( Gaffer.NameValuePlug( "test", "test" ) ) - fileName = os.path.join( self.temporaryDirectory(), "toImport.gfr" ) + fileName = self.temporaryDirectory() + "/toImport.gfr" s1.serialiseToFile( fileName ) s2 = Gaffer.ScriptNode() @@ -1439,7 +1438,7 @@ def testImport( self ) : def testReadOnlyMetadata( self ) : - fileName = os.path.join( self.temporaryDirectory(), "test.gfr" ) + fileName = self.temporaryDirectory() + "/test.gfr" s = Gaffer.ScriptNode() self.assertFalse( Gaffer.MetadataAlgo.getReadOnly( s ) ) @@ -1461,7 +1460,7 @@ def testReadOnlyMetadata( self ) : s.load() self.assertTrue( Gaffer.MetadataAlgo.getReadOnly( s ) ) - s["fileName"].setValue( os.path.join( self.temporaryDirectory(), "test2.gfr" ) ) + s["fileName"].setValue( self.temporaryDirectory() + "/test2.gfr" ) self.assertFalse( Gaffer.MetadataAlgo.getReadOnly( s ) ) def testCancellationDuringLoad( self ) : diff --git a/python/GafferTest/StatsApplicationTest.py b/python/GafferTest/StatsApplicationTest.py index 22c424624f3..c2af1410812 100644 --- a/python/GafferTest/StatsApplicationTest.py +++ b/python/GafferTest/StatsApplicationTest.py @@ -36,12 +36,7 @@ import re import unittest -import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import Gaffer import GafferTest diff --git a/python/GafferTest/__init__.py b/python/GafferTest/__init__.py index c7f48cb9ec2..a4c0db0176e 100644 --- a/python/GafferTest/__init__.py +++ b/python/GafferTest/__init__.py @@ -164,8 +164,6 @@ def inCI( platforms = set() ) : from .SpreadsheetTest import SpreadsheetTest from .ShufflePlugTest import ShufflePlugTest from .EditScopeTest import EditScopeTest -from .FileSystemPathInOutNode import FileSystemPathInOutNode -from .FileSystemPathPlugTest import FileSystemPathPlugTest from .IECorePreviewTest import * diff --git a/python/GafferUI/ApplicationMenu.py b/python/GafferUI/ApplicationMenu.py index aa5b21d06c7..ff51abad6ed 100644 --- a/python/GafferUI/ApplicationMenu.py +++ b/python/GafferUI/ApplicationMenu.py @@ -47,7 +47,7 @@ def appendDefinitions( menuDefinition, prefix ) : menuDefinition.append( prefix + "/About Gaffer...", { "command" : about } ) menuDefinition.append( prefix + "/Preferences...", { "command" : preferences } ) - menuDefinition.append( prefix + "/Documentation...", { "command" : functools.partial( GafferUI.showURL, os.path.join( os.environ["GAFFER_ROOT"], "doc", "gaffer", "html", "index.html" ) ) } ) + menuDefinition.append( prefix + "/Documentation...", { "command" : functools.partial( GafferUI.showURL, os.path.expandvars( "$GAFFER_ROOT/doc/gaffer/html/index.html" ) ) } ) menuDefinition.append( prefix + "/Quit", { "command" : quit, "shortCut" : "Ctrl+Q" } ) def quit( menu ) : diff --git a/python/GafferUI/Backups.py b/python/GafferUI/Backups.py index a9a3429d73b..a61ffda15ee 100644 --- a/python/GafferUI/Backups.py +++ b/python/GafferUI/Backups.py @@ -46,9 +46,6 @@ import stat import weakref -if os.name == "nt": - import ctypes - class Backups( object ) : def __init__( self, applicationRoot ) : @@ -98,11 +95,6 @@ def backup( self, script ) : dirName = os.path.dirname( fileName ) try : os.makedirs( dirName ) - # Avoid the win32 module dependency by using ctypes to make directory hidden - # The magic number 2 comes from https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfileattributesa - if os.name == "nt": - ctypes.windll.kernel32.SetFileAttributesW( unicode( dirName, "utf-8" ), 2 ) - except OSError : # makedirs very unhelpfully raises an exception if # the directory already exists, but it might also @@ -274,7 +266,7 @@ def __potentialFileNames( self, script ) : context = Gaffer.Context() context["script:name"] = os.path.splitext( os.path.basename( fileName ) )[0] - context["script:directory"] = os.path.dirname( os.path.abspath( fileName ) ).replace( "\\", "/" ) + context["script:directory"] = os.path.dirname( os.path.abspath( fileName ) ) pattern = self.__settings["fileName"].getValue() fileNames = [] diff --git a/python/GafferUI/DocumentationAlgo.py b/python/GafferUI/DocumentationAlgo.py index a357e8b9f0f..1da75d8306e 100644 --- a/python/GafferUI/DocumentationAlgo.py +++ b/python/GafferUI/DocumentationAlgo.py @@ -318,11 +318,6 @@ def __cmark() : return __cmarkDLL __cmarkDLL.cmark_markdown_to_html.restype = ctypes.c_char_p - # The second argument is 'size_t len', the length of the markdown string - # MSVC defines size_t as unsigned int64 - if sys == "Windows" : - __cmarkDLL.cmark_markdown_to_html.argtypes = [ctypes.c_char_p, ctypes.c_ulonglong, ctypes.c_long] - else: - __cmarkDLL.cmark_markdown_to_html.argtypes = [ctypes.c_char_p, ctypes.c_long, ctypes.c_long] + __cmarkDLL.cmark_markdown_to_html.argtypes = [ctypes.c_char_p, ctypes.c_long, ctypes.c_long] return __cmarkDLL diff --git a/python/GafferUI/FileSystemPathPlugValueWidget.py b/python/GafferUI/FileSystemPathPlugValueWidget.py index 6fe0ada2519..0a40d60a64a 100644 --- a/python/GafferUI/FileSystemPathPlugValueWidget.py +++ b/python/GafferUI/FileSystemPathPlugValueWidget.py @@ -130,5 +130,3 @@ def __metadataValue( self, name ) : v = Gaffer.Metadata.value( self.getPlug(), "fileSystemPathPlugValueWidget:" + name ) return v - -GafferUI.PlugValueWidget.registerType( Gaffer.FileSystemPathPlug, FileSystemPathPlugValueWidget ) diff --git a/python/GafferUI/GLWidget.py b/python/GafferUI/GLWidget.py index 806af0049fb..9ece1f99357 100644 --- a/python/GafferUI/GLWidget.py +++ b/python/GafferUI/GLWidget.py @@ -35,7 +35,6 @@ # ########################################################################## -import os import sys import logging import collections @@ -256,9 +255,8 @@ def resizeEvent( self, event ) : # clear any existing errors that may trigger # error checking code in _resize implementations. - if os.name == 'posix': - while GL.glGetError() : - pass + while GL.glGetError() : + pass owner._makeCurrent() diff --git a/python/GafferUI/NodeUI.py b/python/GafferUI/NodeUI.py index 93b04d13503..4c226ce3e9f 100644 --- a/python/GafferUI/NodeUI.py +++ b/python/GafferUI/NodeUI.py @@ -45,7 +45,7 @@ def __documentationURL( node ) : - fileName = os.path.join( os.environ["GAFFER_ROOT"], "doc", "gaffer", "html", "Reference", "NodeReference", node.typeName().replace( "::", os.sep ) + ".html" ) + fileName = "$GAFFER_ROOT/doc/gaffer/html/Reference/NodeReference/" + node.typeName().replace( "::", "/" ) + ".html" fileName = os.path.expandvars( fileName ) return "file://" + fileName if os.path.isfile( fileName ) else "" diff --git a/python/GafferUI/PathChooserDialogue.py b/python/GafferUI/PathChooserDialogue.py index ff051ec1fb7..db20341408e 100644 --- a/python/GafferUI/PathChooserDialogue.py +++ b/python/GafferUI/PathChooserDialogue.py @@ -120,9 +120,7 @@ def pathChooserWidget( self ) : def __result( self ) : result = self.__pathChooserWidget.pathListingWidget().getSelection() - path_root = self.__pathChooserWidget.pathListingWidget().getPath().root() - path_root = path_root if len(result.paths()) > 0 and not result.paths()[0].startswith(path_root) else "" - result = [ self.__path.copy().setFromString( path_root + x ) for x in result.paths() ] + result = [ self.__path.copy().setFromString( x ) for x in result.paths() ] if not result and not self.__allowMultipleSelection : result = [ self.__path.copy() ] return result diff --git a/python/GafferUI/PathChooserWidget.py b/python/GafferUI/PathChooserWidget.py index 7ceb13d2c90..d1a45549473 100644 --- a/python/GafferUI/PathChooserWidget.py +++ b/python/GafferUI/PathChooserWidget.py @@ -201,9 +201,7 @@ def __listingSelectionChanged( self, widget ) : return with Gaffer.BlockedConnection( self.__pathChangedConnection ) : - path_root = self.__directoryListing.getPath().root() - path_root = path_root if not selection.paths()[0].startswith(path_root) else "" - self.__path.setFromString( path_root + selection.paths()[0] ) + self.__path.setFromString( selection.paths()[0] ) # This slot is connected to the pathSelectedSignals of the children and just forwards # them to our own pathSelectedSignal. diff --git a/python/GafferUI/UserPlugs.py b/python/GafferUI/UserPlugs.py index 142cc955ae5..30de2a130fd 100644 --- a/python/GafferUI/UserPlugs.py +++ b/python/GafferUI/UserPlugs.py @@ -53,7 +53,6 @@ def appendPlugCreationMenuDefinitions( plugParent, menuDefinition, prefix = "" ) menuDefinition.append( prefix + "/NumericDivider", { "divider" : True } ) menuDefinition.append( prefix + "/String", { "command" : functools.partial( __addPlug, plugParent, Gaffer.StringPlug ), "active" : active } ) - menuDefinition.append( prefix + "/FileSystemPath", { "command" : functools.partial(__addPlug, plugParent, Gaffer.FileSystemPathPlug ), "active" : active } ) menuDefinition.append( prefix + "/StringDivider", { "divider" : True } ) menuDefinition.append( prefix + "/V2i", { "command" : functools.partial( __addPlug, plugParent, Gaffer.V2iPlug ), "active" : active } ) diff --git a/python/GafferUI/_StyleSheet.py b/python/GafferUI/_StyleSheet.py index f6f3deae5ca..6895f2f96a4 100644 --- a/python/GafferUI/_StyleSheet.py +++ b/python/GafferUI/_StyleSheet.py @@ -138,7 +138,7 @@ } substitutions = { - "GAFFER_ROOT" : os.environ["GAFFER_ROOT"] if os.name == 'posix' else os.environ["GAFFER_ROOT"].replace("\\", "/"), + "GAFFER_ROOT" : os.environ["GAFFER_ROOT"] } for k, v in _styleColors.items() : diff --git a/python/GafferVDBTest/VDBTestCase.py b/python/GafferVDBTest/VDBTestCase.py index 17fc9807ed0..c5a8d2c9242 100644 --- a/python/GafferVDBTest/VDBTestCase.py +++ b/python/GafferVDBTest/VDBTestCase.py @@ -35,11 +35,7 @@ ########################################################################## import os -import sys -if os.name == 'posix' and sys.version_info[0] < 3: - import subprocess32 as subprocess -else: - import subprocess +import subprocess32 as subprocess import IECore import GafferScene diff --git a/src/Gaffer/Context.cpp b/src/Gaffer/Context.cpp index a16e52167a7..c0201005959 100644 --- a/src/Gaffer/Context.cpp +++ b/src/Gaffer/Context.cpp @@ -47,7 +47,6 @@ #ifdef __APPLE__ #include static char **environ = *_NSGetEnviron(); -#elif _MSC_VER #else #include #endif diff --git a/src/Gaffer/FileSystemPath.cpp b/src/Gaffer/FileSystemPath.cpp index 5b997db1f7a..faf918becef 100644 --- a/src/Gaffer/FileSystemPath.cpp +++ b/src/Gaffer/FileSystemPath.cpp @@ -50,19 +50,9 @@ #include "boost/date_time/posix_time/conversion.hpp" #include "boost/filesystem.hpp" #include "boost/filesystem/operations.hpp" -#include "boost/regex.hpp" - -#ifndef _MSC_VER - #include - #include -#else -#include -#include -#include -#include "accctrl.h" -#include "aclapi.h" -#endif +#include +#include #include using namespace std; @@ -80,10 +70,6 @@ static InternedString g_modificationTimePropertyName( "fileSystem:modificationTi static InternedString g_sizePropertyName( "fileSystem:size" ); static InternedString g_frameRangePropertyName( "fileSystem:frameRange" ); -static InternedString g_windowsSeparator( "\\" ); -static InternedString g_genericSeparator( "/" ); -static InternedString g_uncPrefix( "\\\\" ); - FileSystemPath::FileSystemPath( PathFilterPtr filter, bool includeSequences ) : Path( filter ), m_includeSequences( includeSequences ) { @@ -92,7 +78,6 @@ FileSystemPath::FileSystemPath( PathFilterPtr filter, bool includeSequences ) FileSystemPath::FileSystemPath( const std::string &path, PathFilterPtr filter, bool includeSequences ) : Path( path, filter ), m_includeSequences( includeSequences ) { - setFromString( path ); } FileSystemPath::FileSystemPath( const Names &names, const IECore::InternedString &root, PathFilterPtr filter, bool includeSequences ) @@ -104,57 +89,6 @@ FileSystemPath::~FileSystemPath() { } -// Create a path that is aware of differences in OS naming schemes -// Windows separates path elements with a backlash and Linux / Mac with forward slash -// Windows also starts drive letter paths with not leading \, which looks like a relative -// path but should be treated as though the drive letter is the root of the path -// If we don't treat the drive letter as the root, there will be errors when repeatedly -// popping the last path entry and getting to the drive letter path at the start of what -// FileSystemPath thinks is a relative path - -void FileSystemPath::setFromString(const std::string &string) -{ - Names newNames; - std::string sanitizedString; - boost::regex driveLetterPattern{ "^([A-Za-z]{1}:)" }; - boost::smatch result; - - sanitizedString = string.c_str(); - if (boost::starts_with(sanitizedString, g_uncPrefix.c_str())) - { - boost::replace_first(sanitizedString, g_uncPrefix.c_str(), g_genericSeparator.c_str()); - } - boost::replace_all( sanitizedString, g_windowsSeparator.c_str(), g_genericSeparator.c_str() ); - - StringAlgo::tokenize(sanitizedString, '/', back_inserter(newNames)); - - InternedString newRoot; - if (sanitizedString.size() && sanitizedString[0] == '/') - { - newRoot = "/"; - } - else if ( newNames.size() && boost::regex_search( newNames[0].string(), result, driveLetterPattern ) ) - { - newRoot = newNames[0]; - newNames.erase( newNames.begin() ); - } - else if (newNames.size() > 1 && boost::regex_search(newNames[1].string(), result, driveLetterPattern)) - { - newRoot = newNames[1]; - newNames.erase(newNames.begin(), newNames.begin()+1); - } - - if (newRoot == this->root() && newNames == this->names() ) - { - return; - } - - set( 0, this->names().size(), newNames ); - setRoot( newRoot ); - - emitPathChanged(); -} - bool FileSystemPath::isValid() const { if( !Path::isValid() ) @@ -167,11 +101,7 @@ bool FileSystemPath::isValid() const return true; } -#ifndef _MSC_VER const file_type t = symlink_status( path( this->string() ) ).type(); -#else - const file_type t = status( path( this->string() ) ).type(); -#endif return t != status_error && t != file_not_found; } @@ -216,7 +146,7 @@ FileSequencePtr FileSystemPath::fileSequence() const } FileSequencePtr sequence = nullptr; - IECore::ls( this->nativeString(), sequence, /* minSequenceSize = */ 1 ); + IECore::ls( this->string(), sequence, /* minSequenceSize = */ 1 ); return sequence; } @@ -252,7 +182,10 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr std::map ownerCounter; for( std::vector::iterator it = files.begin(); it != files.end(); ++it ) { - std::string value = getOwner( it->c_str() ); + struct stat s; + stat( it->c_str(), &s ); + struct passwd *pw = getpwuid( s.st_uid ); + std::string value = pw ? pw->pw_name : ""; std::pair::iterator,bool> oIt = ownerCounter.insert( std::pair( value, 0 ) ); oIt.first->second++; if( oIt.first->second > maxCount ) @@ -266,15 +199,10 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr } std::string n = this->string(); - - #ifndef _MSC_VER struct stat s; - stat(n.c_str(), &s); + stat( n.c_str(), &s ); struct passwd *pw = getpwuid( s.st_uid ); return new StringData( pw ? pw->pw_name : "" ); - #else - return new StringData( getOwner( n.c_str() ) ); - #endif } else if( name == g_groupPropertyName ) { @@ -293,12 +221,8 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr { struct stat s; stat( it->c_str(), &s ); - #ifndef _MSC_VER struct group *gr = getgrgid( s.st_gid ); std::string value = gr ? gr->gr_name : ""; - #else - std::string value = ""; - #endif std::pair::iterator,bool> oIt = ownerCounter.insert( std::pair( value, 0 ) ); oIt.first->second++; if( oIt.first->second > maxCount ) @@ -314,12 +238,8 @@ IECore::ConstRunTimeTypedPtr FileSystemPath::property( const IECore::InternedStr std::string n = this->string(); struct stat s; stat( n.c_str(), &s ); - #ifndef _MSC_VER struct group *gr = getgrgid( s.st_gid ); return new StringData( gr ? gr->gr_name : "" ); - #else - return new StringData( "" ); - #endif } else if( name == g_modificationTimePropertyName ) { @@ -496,132 +416,3 @@ PathFilterPtr FileSystemPath::createStandardFilter( const std::vectorroot(); - if (boost::regex_match(result, regex_result, driveLetterPattern)) - { - result += "/"; - } - for (size_t i = 0, s = this->names().size(); i < s; ++i) - { - if (i != 0) - { - result += "/"; - } - result += this->names()[i].string(); - } - return result; -} - -std::string FileSystemPath::nativeString() const -{ - #ifdef _MSC_VER - std::string separator = g_windowsSeparator; - #else - std::string separator = g_genericSeparator; - #endif - - boost::regex driveLetterPattern{ "^([A-Za-z]{1}:)" }; - boost::smatch regex_result; - - std::string result = this->root(); - -#ifdef _MSC_VER - if( this->root() == "/" ) - { - result = g_uncPrefix; - } -#endif - - if( boost::regex_match( result, regex_result, driveLetterPattern ) ) - { - result += separator; - } - Path::Names names = this->names(); - for( size_t i = 0, s = names.size(); i < s; ++i ) - { - if( i != 0 ) - { - result += separator; - } - result += names[i].string(); - } - return result; -} - -// Windows code to get file / directory owner from https://docs.microsoft.com/en-us/windows/desktop/SecAuthZ/finding-the-owner-of-a-file-object-in-c-- -std::string FileSystemPath::getOwner( const std::string &pathString ) const -{ - std::string value; -#ifndef _MSC_VER - struct stat s; - stat(pathString.c_str(), &s); - struct passwd *pw = getpwuid(s.st_uid); - value = pw ? pw->pw_name : ""; -#else - DWORD dwRtnCode = 0; - PSID pSidOwner = NULL; - BOOL bRtnBool = TRUE; - LPTSTR AcctName = NULL; - LPTSTR DomainName = NULL; - DWORD dwAcctName = 1, dwDomainName = 1; - SID_NAME_USE eUse = SidTypeUnknown; - HANDLE hFile; - PSECURITY_DESCRIPTOR pSD = NULL; - - - // Get the handle of the file object. - hFile = CreateFile( pathString.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - - // Check GetLastError for CreateFile error code. - if (hFile == INVALID_HANDLE_VALUE) { - return ""; - } - - // Get the owner SID of the file. - dwRtnCode = GetSecurityInfo(hFile, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION, &pSidOwner, NULL, NULL, NULL, &pSD); - - CloseHandle( hFile ); - - // Check GetLastError for GetSecurityInfo error condition. - if (dwRtnCode != ERROR_SUCCESS) { - return ""; - } - - // First call to LookupAccountSid to get the buffer sizes. - bRtnBool = LookupAccountSid(NULL, pSidOwner, AcctName, (LPDWORD)&dwAcctName, DomainName, (LPDWORD)&dwDomainName, &eUse); - - // Reallocate memory for the buffers. - AcctName = (LPTSTR)GlobalAlloc(GMEM_FIXED, dwAcctName); - - // Check GetLastError for GlobalAlloc error condition. - if (AcctName == NULL) { - return ""; - } - - DomainName = (LPTSTR)GlobalAlloc(GMEM_FIXED, dwDomainName); - - // Check GetLastError for GlobalAlloc error condition. - if (DomainName == NULL) { - return ""; - } - - // Second call to LookupAccountSid to get the account name. - bRtnBool = LookupAccountSid(NULL, pSidOwner, AcctName, (LPDWORD)&dwAcctName, DomainName, (LPDWORD)&dwDomainName, &eUse); - - if (bRtnBool == FALSE) { - return ""; - } - else if (bRtnBool == TRUE) - { - value = AcctName; //let's ignore unicode considerations for now - } - -#endif - return value; -} diff --git a/src/Gaffer/FileSystemPathPlug.cpp b/src/Gaffer/FileSystemPathPlug.cpp deleted file mode 100644 index bfba68d6b62..00000000000 --- a/src/Gaffer/FileSystemPathPlug.cpp +++ /dev/null @@ -1,188 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2011-2012, John Haddon. All rights reserved. -// Copyright (c) 2011-2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#include "Gaffer/FileSystemPathPlug.h" -#include "Gaffer/FileSystemPath.h" -#include "Gaffer/PathFilter.h" - -#include "Gaffer/Context.h" -#include "Gaffer/Process.h" - -using namespace IECore; -using namespace Gaffer; - -IE_CORE_DEFINERUNTIMETYPED( FileSystemPathPlug ); - -namespace -{ - - // Before using the HashProcess/ComputeProcess classes to get a hash or - // a value, we first traverse back down the chain of input plugs to the - // start, or till we find a plug of a different type. This traversal is - /// much quicker than using the Process classes for every step in the chain - /// and avoids the creation of lots of unnecessary cache entries. - inline const ValuePlug *sourcePlug(const ValuePlug *p) - { - const IECore::TypeId typeId = p->typeId(); - - const ValuePlug *in = p->getInput(); - while (in && in->typeId() == typeId) - { - p = in; - in = p->getInput(); - } - - return p; - } - -} // namespace - -FileSystemPathPlug::FileSystemPathPlug( - const std::string &name, - Direction direction, - const std::string &defaultValue, - unsigned flags, - unsigned substitutions -) - : StringPlug( name, direction, defaultValue, flags, substitutions ) -{ -} - -FileSystemPathPlug::~FileSystemPathPlug() -{ -} - -bool FileSystemPathPlug::acceptsInput( const Plug *input ) const -{ - if( !ValuePlug::acceptsInput( input ) ) - { - return false; - } - if( input ) - { - return input->isInstanceOf( staticTypeId() ) || input->isInstanceOf( StringPlug::staticTypeId() ); - } - return true; -} - -PlugPtr FileSystemPathPlug::createCounterpart( const std::string &name, Direction direction ) const -{ - return new FileSystemPathPlug( name, direction, defaultValue(), getFlags(), substitutions() ); -} - -void FileSystemPathPlug::setValue(const std::string &value) -{ - // Set the value to the generic string representation - // This helps when calling getValue since it won't remove - // back slashes when calling substitute - setObjectValue(new StringData(Gaffer::FileSystemPath(value).string())); -} - -std::string FileSystemPathPlug::getValue( const IECore::MurmurHash *precomputedHash, const Context *context, const bool forceSubstitutions ) const -{ - if( !context ) - { - context = Context::current(); - } - IECore::ConstObjectPtr o = getObjectValue(precomputedHash); - const IECore::StringData *s = IECore::runTimeCast(o.get()); - if (!s) - { - throw IECore::Exception("FileSystemPathPlug::getObjectValue() didn't return StringData - is the hash being computed correctly?"); - } - - const bool performSubstitutions = - forceSubstitutions || - (substitutions() && - direction() == In && - Process::current() && - IECore::StringAlgo::hasSubstitutions(s->readable())); - const std::string substituted_path = performSubstitutions ? context->substitute(s->readable(), substitutions()) : s->readable(); - return Gaffer::FileSystemPath(substituted_path).nativeString(); -} - -void FileSystemPathPlug::setFrom(const ValuePlug *other) -{ - if (const FileSystemPathPlug *tOther = runTimeCast(other)) - { - setValue(tOther->getValue()); - } - else if (const StringPlug *tOther = runTimeCast(other)) - { - setValue(tOther->getValue()); - } - else - { - throw IECore::Exception("Unsupported plug type"); - } -} - -IECore::MurmurHash FileSystemPathPlug::hash() const -{ - const bool performSubstitutions = - substitutions() && - direction() == In - ; - - // We need to allow backwards compatibility with StringPlug. - // Check to see if our root plug is a StringPlug and return - // its hash. - const ValuePlug *r = sourcePlug(this); - if (const StringPlug *p = runTimeCast(r->getInput())) - { - return p->hash(); - } - if (performSubstitutions) - { - IECore::ConstObjectPtr o = getObjectValue(); - const IECore::StringData *s = IECore::runTimeCast(o.get()); - if (!s) - { - throw IECore::Exception("StringPlug::getObjectValue() didn't return StringData - is the hash being computed correctly?"); - } - - if (IECore::StringAlgo::hasSubstitutions(s->readable())) - { - IECore::MurmurHash result; - result.append(Context::current()->substitute(s->readable(), substitutions())); - return result; - } - } - - // no substitutions - return ValuePlug::hash(); -} diff --git a/src/Gaffer/NameSwitch.cpp b/src/Gaffer/NameSwitch.cpp index a48ea8b9efb..df7a85a8759 100644 --- a/src/Gaffer/NameSwitch.cpp +++ b/src/Gaffer/NameSwitch.cpp @@ -81,7 +81,7 @@ void NameSwitch::setup( const Plug *plug ) Plug::In, element, 2, - std::numeric_limits::max(), + Imath::limits::max(), Plug::Default, /* resizeWhenInputsChange = */ false ); diff --git a/src/Gaffer/Path.cpp b/src/Gaffer/Path.cpp index afbedeed723..41c5183f0f8 100644 --- a/src/Gaffer/Path.cpp +++ b/src/Gaffer/Path.cpp @@ -95,18 +95,6 @@ const IECore::InternedString &Path::root() const return m_root; } -void Path::setRoot( IECore::InternedString &newRoot ) -{ - - if ( newRoot == m_root ) - { - return; - } - - m_root = newRoot; - emitPathChanged(); -} - bool Path::isEmpty() const { return m_names.empty() && m_root.string().empty(); diff --git a/src/Gaffer/ScriptNode.cpp b/src/Gaffer/ScriptNode.cpp index 3f20a531fb6..085a16a0de3 100644 --- a/src/Gaffer/ScriptNode.cpp +++ b/src/Gaffer/ScriptNode.cpp @@ -45,7 +45,7 @@ #include "Gaffer/DependencyNode.h" #include "Gaffer/MetadataAlgo.h" #include "Gaffer/StandardSet.h" -#include "Gaffer/FileSystemPathPlug.h" +#include "Gaffer/StringPlug.h" #include "Gaffer/TypedPlug.h" #include "IECore/Exception.h" @@ -59,6 +59,8 @@ #include +#include + using namespace Gaffer; ////////////////////////////////////////////////////////////////////////// @@ -258,7 +260,7 @@ ScriptNode::ScriptNode( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new FileSystemPathPlug( "fileName", Plug::In, "", Plug::Default & ~Plug::Serialisable ) ); + addChild( new StringPlug( "fileName", Plug::In, "", Plug::Default & ~Plug::Serialisable ) ); addChild( new BoolPlug( "unsavedChanges", Plug::In, false, Plug::Default & ~Plug::Serialisable ) ); ValuePlugPtr frameRangePlug = new ValuePlug( "frameRange", Plug::In ); @@ -286,14 +288,14 @@ ScriptNode::~ScriptNode() { } -FileSystemPathPlug *ScriptNode::fileNamePlug() +StringPlug *ScriptNode::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const FileSystemPathPlug *ScriptNode::fileNamePlug() const +const StringPlug *ScriptNode::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } BoolPlug *ScriptNode::unsavedChangesPlug() @@ -827,20 +829,10 @@ void ScriptNode::plugSet( Plug *plug ) else if( plug == fileNamePlug() ) { const boost::filesystem::path fileName( fileNamePlug()->getValue() ); - context()->set( g_scriptName, fileName.stem().string() ); - - bool isReadOnly = false; - if( boost::filesystem::exists( fileName ) ) - { - std::ofstream testOpen( fileName.c_str(), std::fstream::app ); - isReadOnly = !testOpen.is_open(); - testOpen.close(); - } - MetadataAlgo::setReadOnly( this, - isReadOnly, + boost::filesystem::exists( fileName ) && 0 != access( fileName.c_str(), W_OK ), /* persistent = */ false ); } diff --git a/src/Gaffer/Switch.cpp b/src/Gaffer/Switch.cpp index dd40dc556f4..a7044ddc78d 100644 --- a/src/Gaffer/Switch.cpp +++ b/src/Gaffer/Switch.cpp @@ -89,7 +89,7 @@ void Switch::setup( const Plug *plug ) Plug::In, inElement, 0, - std::numeric_limits::max() + Imath::limits::max() ); addChild( in ); diff --git a/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp b/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp index 992b0eb8506..1fd4a63241d 100644 --- a/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp +++ b/src/GafferArnold/IECoreArnoldPreview/Renderer.cpp @@ -896,7 +896,7 @@ class ArnoldAttributes : public IECoreScenePreview::Renderer::AttributesInterfac } } - if( it->first.string() == g_arnoldLightFilterShaderAttributeName.string() ) + if( it->first.string() == g_arnoldLightFilterShaderAttributeName ) { continue; } diff --git a/src/GafferArnoldUI/ArnoldLightVisualiser.cpp b/src/GafferArnoldUI/ArnoldLightVisualiser.cpp index 9eb7a2e412f..90cb5d913a5 100644 --- a/src/GafferArnoldUI/ArnoldLightVisualiser.cpp +++ b/src/GafferArnoldUI/ArnoldLightVisualiser.cpp @@ -34,8 +34,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferArnoldUI/Export.h" - #include "GafferArnoldUI/Private/VisualiserAlgo.h" #include "GafferSceneUI/StandardLightVisualiser.h" @@ -68,7 +66,7 @@ using namespace GafferArnoldUI::Private; // Arnold shaders are present in the network, a fallback of the last image // node found will be used instead:. -namespace GafferArnoldUI +namespace { ////////////////////////////////////////////////////////////////////////// @@ -181,7 +179,7 @@ IECoreGL::RenderablePtr iesVisualisation( const std::string &filename ) // ArnoldLightVisualiser implementation ////////////////////////////////////////////////////////////////////////// -class GAFFERARNOLDUI_API ArnoldLightVisualiser : public GafferSceneUI::StandardLightVisualiser +class GAFFERSCENEUI_API ArnoldLightVisualiser : public GafferSceneUI::StandardLightVisualiser { public : @@ -293,5 +291,5 @@ IECore::DataPtr ArnoldLightVisualiser::surfaceTexture( const IECoreScene::Shader return surfaceTexture; } -} // namespace GafferArnoldUI +} diff --git a/src/GafferArnoldUI/BarndoorVisualiser.cpp b/src/GafferArnoldUI/BarndoorVisualiser.cpp index 16d1f79fa32..f5010c1725b 100644 --- a/src/GafferArnoldUI/BarndoorVisualiser.cpp +++ b/src/GafferArnoldUI/BarndoorVisualiser.cpp @@ -34,8 +34,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferArnoldUI/Export.h" - #include "GafferSceneUI/StandardLightVisualiser.h" #include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" @@ -60,26 +58,21 @@ using namespace IECoreGL; using namespace IECoreGLPreview; using namespace GafferSceneUI; -namespace BarndoorVisualiserUtils +namespace { -float parameterOrDefault(const IECore::CompoundData *data, const char *key, const float def) +enum class BarndoorLocation { Top, Right, Left, Bottom }; + +float parameterOrDefault( const IECore::CompoundData *data, const char *key, const float def ) { - ConstFloatDataPtr member = data->member(key); - if (member) + ConstFloatDataPtr member = data->member( key ); + if( member ) { return member->readable(); } return def; } -} // namespace BarndoorVisualiserUtils - -namespace GafferArnoldUI -{ - -enum class BarndoorLocation { Top, Right, Left, Bottom }; - const char *barndoorFragSource() { return @@ -154,7 +147,7 @@ void addBarndoor( IECoreGL::GroupPtr result, BarndoorLocation location, float co result->addChild( barndoorGroup ); } -class GAFFERARNOLDUI_API BarndoorVisualiser final : public LightFilterVisualiser +class BarndoorVisualiser final : public LightFilterVisualiser { public : @@ -191,17 +184,17 @@ Visualisations BarndoorVisualiser::visualise( const IECore::InternedString &attr const IECore::CompoundData *filterShaderParameters = shaderNetwork->outputShader()->parametersData(); - float topLeft = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_top_left", 0.0f ); - float topRight = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_top_right", 0.0f ); + float topLeft = parameterOrDefault( filterShaderParameters, "barndoor_top_left", 0.0f ); + float topRight = parameterOrDefault( filterShaderParameters, "barndoor_top_right", 0.0f ); - float rightTop = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_right_top", 1.0f ); - float rightBottom = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_right_bottom", 1.0f ); + float rightTop = parameterOrDefault( filterShaderParameters, "barndoor_right_top", 1.0f ); + float rightBottom = parameterOrDefault( filterShaderParameters, "barndoor_right_bottom", 1.0f ); - float bottomLeft = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_bottom_left", 1.0f ); - float bottomRight = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_bottom_right", 1.0f ); + float bottomLeft = parameterOrDefault( filterShaderParameters, "barndoor_bottom_left", 1.0f ); + float bottomRight = parameterOrDefault( filterShaderParameters, "barndoor_bottom_right", 1.0f ); - float leftTop = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_left_top", 0.0f ); - float leftBottom = BarndoorVisualiserUtils::parameterOrDefault( filterShaderParameters, "barndoor_left_bottom", 0.0f ); + float leftTop = parameterOrDefault( filterShaderParameters, "barndoor_left_top", 0.0f ); + float leftBottom = parameterOrDefault( filterShaderParameters, "barndoor_left_bottom", 0.0f ); addBarndoor( result, BarndoorLocation::Top, topLeft, topRight ); @@ -244,4 +237,4 @@ Visualisations BarndoorVisualiser::visualise( const IECore::InternedString &attr } -} // namespace GafferArnoldUI +} // namespace diff --git a/src/GafferArnoldUI/DecayVisualiser.cpp b/src/GafferArnoldUI/DecayVisualiser.cpp index 3a66743821f..6d34f7fbdf0 100644 --- a/src/GafferArnoldUI/DecayVisualiser.cpp +++ b/src/GafferArnoldUI/DecayVisualiser.cpp @@ -34,8 +34,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferArnoldUI/Export.h" - #include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" #include "IECoreGL/Group.h" @@ -56,34 +54,7 @@ using namespace IECoreScene; using namespace IECoreGL; using namespace IECoreGLPreview; -namespace DecayVisualiserUtils -{ - -// \todo These should be consolidated with the function in BarndoorVisualiser into a templatized version -// Where should that live? -float parameterOrDefault(const IECore::CompoundData *data, const char *key, const float def) -{ - ConstFloatDataPtr member = data->member(key); - if (member) - { - return member->readable(); - } - return def; -} - -bool parameterOrDefault(const IECore::CompoundData *data, const char *key, const bool def) -{ - ConstBoolDataPtr member = data->member(key); - if (member) - { - return member->readable(); - } - return def; -} - -} // namespace DecayVisualiserUtils - -namespace GafferArnoldUI +namespace { typedef std::pair Knot; typedef std::vector KnotVector; @@ -126,17 +97,39 @@ const char *knotFragSource() ; } +// \todo These should be consolidated with the function in BarndoorVisualiser into a templatized version +// Where should that live? +float parameterOrDefault( const IECore::CompoundData *data, const char *key, const float def ) +{ + ConstFloatDataPtr member = data->member( key ); + if( member ) + { + return member->readable(); + } + return def; +} + +bool parameterOrDefault( const IECore::CompoundData *data, const char *key, const bool def ) +{ + ConstBoolDataPtr member = data->member( key ); + if( member ) + { + return member->readable(); + } + return def; +} + void getKnotsToVisualize( const IECoreScene::ShaderNetwork *shaderNetwork, KnotVector &knots ) { const IECore::CompoundData *filterShaderParameters = shaderNetwork->outputShader()->parametersData(); - bool nearEnabled = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "use_near_atten", false ); - bool farEnabled = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "use_far_atten", false ); + bool nearEnabled = parameterOrDefault( filterShaderParameters, "use_near_atten", false ); + bool farEnabled = parameterOrDefault( filterShaderParameters, "use_far_atten", false ); if( nearEnabled ) { - float nearStart = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "near_start", 0.0f ); - float nearEnd = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "near_end", 0.0f ); + float nearStart = parameterOrDefault( filterShaderParameters, "near_start", 0.0f ); + float nearEnd = parameterOrDefault( filterShaderParameters, "near_end", 0.0f ); knots.push_back( Knot( nearStart, V3f( 0.0f ) ) ); knots.push_back( Knot( nearEnd, V3f( 1.0f ) ) ); @@ -144,8 +137,8 @@ void getKnotsToVisualize( const IECoreScene::ShaderNetwork *shaderNetwork, KnotV if( farEnabled ) { - float farStart = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "far_start", 0.0f ); - float farEnd = DecayVisualiserUtils::parameterOrDefault( filterShaderParameters, "far_end", 0.0f ); + float farStart = parameterOrDefault( filterShaderParameters, "far_start", 0.0f ); + float farEnd = parameterOrDefault( filterShaderParameters, "far_end", 0.0f ); knots.push_back( Knot( farStart, V3f( 1.0f ) ) ); knots.push_back( Knot( farEnd, V3f( 0.0f ) ) ); @@ -197,7 +190,7 @@ void addKnot( IECoreGL::GroupPtr group, const Knot &knot ) group->addChild( markerGroup ); } -class GAFFERARNOLDUI_API DecayVisualiser final : public LightFilterVisualiser +class DecayVisualiser final : public LightFilterVisualiser { public : @@ -252,4 +245,4 @@ Visualisations DecayVisualiser::visualise( const IECore::InternedString &attribu return { Visualisation( result, Visualisation::Scale::None ) }; } -} // namespace GafferArnoldUI +} // namespace diff --git a/src/GafferArnoldUI/Export.h b/src/GafferArnoldUI/Export.h deleted file mode 100644 index 2a9d10bae77..00000000000 --- a/src/GafferArnoldUI/Export.h +++ /dev/null @@ -1,46 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2018, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// * Neither the name of Image Engine Design nor the names of any -// other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERARNOLDUI_EXPORT_H -#define GAFFERARNOLDUI_EXPORT_H - -#include "IECore/Export.h" - -#ifdef GafferArnoldUI_EXPORTS - #define GAFFERARNOLDUI_API IECORE_EXPORT -#else - #define GAFFERARNOLDUI_API IECORE_IMPORT -#endif - -#endif // #ifndef GAFFERARNOLDUI_EXPORT_H diff --git a/src/GafferArnoldUI/GoboVisualiser.cpp b/src/GafferArnoldUI/GoboVisualiser.cpp index c1ed401d49f..98fa8ec4d50 100644 --- a/src/GafferArnoldUI/GoboVisualiser.cpp +++ b/src/GafferArnoldUI/GoboVisualiser.cpp @@ -34,8 +34,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferArnoldUI/Export.h" - #include "GafferArnoldUI/Private/VisualiserAlgo.h" #include "GafferOSL/ShadingEngineAlgo.h" @@ -113,11 +111,6 @@ T parameterOrDefault( const IECore::CompoundData *parameters, const IECore::Inte } } -} // namespace - -namespace GafferArnoldUI -{ - struct OSLTextureCacheGetterKey { @@ -194,7 +187,7 @@ const char *constantFragSource() } -class GAFFERARNOLDUI_API GoboVisualiser final : public LightFilterVisualiser +class GoboVisualiser final : public LightFilterVisualiser { public : @@ -331,4 +324,4 @@ Visualisations GoboVisualiser::visualise( const IECore::InternedString &attribut return { Visualisation::createOrnament( result, true ) }; } -} // namespace \ No newline at end of file +} // namespace diff --git a/src/GafferArnoldUI/LightBlockerVisualiser.cpp b/src/GafferArnoldUI/LightBlockerVisualiser.cpp index e2fc1ea7e71..e7eb2301375 100644 --- a/src/GafferArnoldUI/LightBlockerVisualiser.cpp +++ b/src/GafferArnoldUI/LightBlockerVisualiser.cpp @@ -34,8 +34,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include "GafferArnoldUI/Export.h" - #include "GafferScene/Private/IECoreGLPreview/LightFilterVisualiser.h" #include "Gaffer/Metadata.h" @@ -57,7 +55,7 @@ using namespace IECoreGL; using namespace IECoreGLPreview; using namespace Gaffer; -namespace GafferArnoldUI +namespace { const IECore::CompoundData *parametersAndMetadataTarget( const IECore::InternedString &attributeName, const IECoreScene::ShaderNetwork *filterShaderNetwork, InternedString &metadataTarget ) @@ -175,7 +173,7 @@ void setFalloffGroupSettings( IECoreGL::Group *group, const IECore::CompoundData // LightBlockerVisualiser implementation. ////////////////////////////////////////////////////////////////////////// -class GAFFERARNOLDUI_API LightBlockerVisualiser : public LightFilterVisualiser +class LightBlockerVisualiser : public LightFilterVisualiser { public : @@ -460,4 +458,4 @@ IECoreGL::ConstRenderablePtr LightBlockerVisualiser::planeShape( const IECore::C return group; } -} // namespace GafferArnoldUI +} // namespace diff --git a/src/GafferBindings/SignalBinding.cpp b/src/GafferBindings/SignalBinding.cpp index 38bd86822f5..edcf4774c16 100644 --- a/src/GafferBindings/SignalBinding.cpp +++ b/src/GafferBindings/SignalBinding.cpp @@ -41,8 +41,6 @@ #include "boost/signals.hpp" -#include "GafferBindings/Export.h" - using namespace boost::python; namespace GafferBindings @@ -51,7 +49,7 @@ namespace GafferBindings namespace Detail { -GAFFERBINDINGS_API boost::python::object pythonConnection( const boost::signals::connection &connection, bool scoped ) +boost::python::object pythonConnection( const boost::signals::connection &connection, bool scoped ) { if( scoped ) { diff --git a/src/GafferDispatch/Dispatcher.cpp b/src/GafferDispatch/Dispatcher.cpp index 17c5f51a098..5229ff4205d 100644 --- a/src/GafferDispatch/Dispatcher.cpp +++ b/src/GafferDispatch/Dispatcher.cpp @@ -41,7 +41,6 @@ #include "Gaffer/Process.h" #include "Gaffer/ScriptNode.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/SubGraph.h" #include "Gaffer/Switch.h" @@ -132,7 +131,7 @@ Dispatcher::Dispatcher( const std::string &name ) addChild( new IntPlug( "framesMode", Plug::In, CurrentFrame, CurrentFrame ) ); addChild( new StringPlug( "frameRange", Plug::In, "1-100x10" ) ); addChild( new StringPlug( "jobName", Plug::In, "" ) ); - addChild( new FileSystemPathPlug( "jobsDirectory", Plug::In, "" ) ); + addChild( new StringPlug( "jobsDirectory", Plug::In, "" ) ); } Dispatcher::~Dispatcher() @@ -169,14 +168,14 @@ const StringPlug *Dispatcher::jobNamePlug() const return getChild( g_firstPlugIndex + 2 ); } -FileSystemPathPlug *Dispatcher::jobsDirectoryPlug() +StringPlug *Dispatcher::jobsDirectoryPlug() { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } -const FileSystemPathPlug *Dispatcher::jobsDirectoryPlug() const +const StringPlug *Dispatcher::jobsDirectoryPlug() const { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } const std::string Dispatcher::jobDirectory() const @@ -186,7 +185,7 @@ const std::string Dispatcher::jobDirectory() const void Dispatcher::createJobDirectory( const Gaffer::ScriptNode *script, Gaffer::Context *context ) const { - boost::filesystem::path jobDirectory( jobsDirectoryPlug()->getValue(nullptr, context, true) ); + boost::filesystem::path jobDirectory( context->substitute( jobsDirectoryPlug()->getValue() ) ); jobDirectory /= context->substitute( jobNamePlug()->getValue() ); if( jobDirectory == "" ) @@ -228,7 +227,7 @@ void Dispatcher::createJobDirectory( const Gaffer::ScriptNode *script, Gaffer::C long i = -1; for( const auto &d : boost::filesystem::directory_iterator( jobDirectory ) ) { - i = std::max( i, strtol( d.path().filename().string().c_str(), nullptr, 10 ) ); + i = std::max( i, strtol( d.path().filename().c_str(), nullptr, 10 ) ); } // Now create the next directory. We do this in a loop until we diff --git a/src/GafferImage/Catalogue.cpp b/src/GafferImage/Catalogue.cpp index 2972b61ab4a..7621396e57a 100644 --- a/src/GafferImage/Catalogue.cpp +++ b/src/GafferImage/Catalogue.cpp @@ -52,7 +52,6 @@ #include "Gaffer/ParallelAlgo.h" #include "Gaffer/ScriptNode.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "boost/algorithm/string.hpp" #include "boost/bind.hpp" @@ -105,7 +104,7 @@ class Catalogue::InternalImage : public ImageNode { storeIndexOfNextChild( g_firstChildIndex ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new StringPlug( "description" ) ); // Used to load an image from disk, according to @@ -165,14 +164,14 @@ class Catalogue::InternalImage : public ImageNode } } - FileSystemPathPlug *fileNamePlug() + StringPlug *fileNamePlug() { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } - const FileSystemPathPlug *fileNamePlug() const + const StringPlug *fileNamePlug() const { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } StringPlug *descriptionPlug() @@ -188,7 +187,7 @@ class Catalogue::InternalImage : public ImageNode void copyFrom( const InternalImage *other ) { descriptionPlug()->source()->setValue( other->descriptionPlug()->getValue() ); - fileNamePlug()->source()->setValue( other->fileNamePlug()->getValue() ); + fileNamePlug()->source()->setValue( other->fileNamePlug()->getValue() ); imageSwitch()->indexPlug()->setValue( other->imageSwitch()->indexPlug()->getValue() ); text()->enabledPlug()->setValue( other->text()->enabledPlug()->getValue() ); @@ -571,7 +570,7 @@ class Catalogue::InternalImage : public ImageNode { // Set up the client to read from the saved image client->text()->enabledPlug()->setValue( false ); - client->fileNamePlug()->source()->setValue( m_writer->fileNamePlug()->getValue() ); + client->fileNamePlug()->source()->setValue( m_writer->fileNamePlug()->getValue() ); client->imageSwitch()->indexPlug()->setValue( 0 ); // But force hashChannelData and computeChannelData to be called // so that we can reuse the cache entries created by the original @@ -610,21 +609,21 @@ GAFFER_PLUG_DEFINE_TYPE( Catalogue::Image ); Catalogue::Image::Image( const std::string &name, Direction direction, unsigned flags ) : Plug( name, direction, flags ) { - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new StringPlug( "description" ) ); addChild( new StringPlug( "__name", Plug::In, name, Plug::Default & ~Plug::Serialisable ) ); nameChangedSignal().connect( boost::bind( &Image::nameChanged, this ) ); } -Gaffer::FileSystemPathPlug *Catalogue::Image::fileNamePlug() +Gaffer::StringPlug *Catalogue::Image::fileNamePlug() { - return getChild( 0 ); + return getChild( 0 ); } -const Gaffer::FileSystemPathPlug *Catalogue::Image::fileNamePlug() const +const Gaffer::StringPlug *Catalogue::Image::fileNamePlug() const { - return getChild( 0 ); + return getChild( 0 ); } Gaffer::StringPlug *Catalogue::Image::descriptionPlug() @@ -750,7 +749,7 @@ Catalogue::Catalogue( const std::string &name ) addChild( new Plug( "images" ) ); addChild( new IntPlug( "imageIndex" ) ); addChild( new StringPlug( "name" ) ); - addChild( new FileSystemPathPlug( "directory" ) ); + addChild( new StringPlug( "directory" ) ); addChild( new IntPlug( "__imageIndex", Plug::Out ) ); // Switch used to choose which image to output @@ -814,14 +813,14 @@ const Gaffer::StringPlug *Catalogue::namePlug() const return getChild( g_firstPlugIndex + 2 ); } -Gaffer::FileSystemPathPlug *Catalogue::directoryPlug() +Gaffer::StringPlug *Catalogue::directoryPlug() { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } -const Gaffer::FileSystemPathPlug *Catalogue::directoryPlug() const +const Gaffer::StringPlug *Catalogue::directoryPlug() const { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } Gaffer::IntPlug *Catalogue::internalImageIndexPlug() @@ -898,13 +897,10 @@ std::string Catalogue::generateFileName( const Image *image ) const std::string Catalogue::generateFileName( const ImagePlug *image ) const { - // Force substitutions because Process::current() is false - // and FileSystemPathPlug won't do substitutions by default string directory = directoryPlug()->getValue(); - if( const ScriptNode *script = ancestor() ) { - directory = directoryPlug()->getValue(nullptr, script->context(), true); + directory = script->context()->substitute( directory ); } else if( IECore::StringAlgo::hasSubstitutions( directory ) ) { diff --git a/src/GafferImage/FormatData.cpp b/src/GafferImage/FormatData.cpp index ea39d71e63d..a202a834be3 100644 --- a/src/GafferImage/FormatData.cpp +++ b/src/GafferImage/FormatData.cpp @@ -36,7 +36,6 @@ #include "GafferImage/FormatData.h" -#include "GafferImage/Export.h" #include "GafferImage/TypeIds.h" #include "IECore/TypedData.h" @@ -49,7 +48,7 @@ namespace IECore IECORE_RUNTIMETYPED_DEFINETEMPLATESPECIALISATION( GafferImage::FormatData, GafferImage::FormatDataTypeId ) -template<> GAFFERIMAGE_API +template<> void FormatData::save( SaveContext *context ) const { Data::save( context ); @@ -59,7 +58,7 @@ void FormatData::save( SaveContext *context ) const container->write( "pixelAspect", readable().getPixelAspect() ); } -template<> GAFFERIMAGE_API +template<> void FormatData::load( LoadContextPtr context ) { Data::load( context ); @@ -76,7 +75,7 @@ void FormatData::load( LoadContextPtr context ) writable().setPixelAspect( pixelAspect ); } -template<> GAFFERIMAGE_API +template<> void SimpleDataHolder::hash( MurmurHash &h ) const { const GafferImage::Format &f = readable(); diff --git a/src/GafferImage/ImageReader.cpp b/src/GafferImage/ImageReader.cpp index ed0e339c4c0..ebd62bbc676 100644 --- a/src/GafferImage/ImageReader.cpp +++ b/src/GafferImage/ImageReader.cpp @@ -40,7 +40,6 @@ #include "GafferImage/OpenImageIOReader.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "OpenEXR/ImathFun.h" @@ -119,7 +118,7 @@ ImageReader::ImageReader( const std::string &name ) { storeIndexOfNextChild( g_firstChildIndex ); addChild( - new FileSystemPathPlug( + new StringPlug( "fileName", Plug::In, "", /* flags */ Plug::Default, /* substitutions */ IECore::StringAlgo::AllSubstitutions & ~IECore::StringAlgo::FrameSubstitutions @@ -168,14 +167,14 @@ ImageReader::~ImageReader() { } -FileSystemPathPlug *ImageReader::fileNamePlug() +StringPlug *ImageReader::fileNamePlug() { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } -const FileSystemPathPlug *ImageReader::fileNamePlug() const +const StringPlug *ImageReader::fileNamePlug() const { - return getChild( g_firstChildIndex ); + return getChild( g_firstChildIndex ); } IntPlug *ImageReader::refreshCountPlug() diff --git a/src/GafferImage/ImageWriter.cpp b/src/GafferImage/ImageWriter.cpp index c8b6535d4d3..ca4527f7fa6 100644 --- a/src/GafferImage/ImageWriter.cpp +++ b/src/GafferImage/ImageWriter.cpp @@ -35,8 +35,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include "boost/asio/ip/host_name.hpp" - #include "GafferImage/ImageWriter.h" #include "GafferImage/BufferAlgo.h" @@ -48,7 +46,6 @@ #include "Gaffer/Context.h" #include "Gaffer/ScriptNode.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "IECoreImage/OpenImageIOAlgo.h" @@ -67,6 +64,7 @@ #include +#include #include OIIO_NAMESPACE_USING @@ -1226,15 +1224,12 @@ ImageSpec createImageSpec( const ImageWriter *node, const ImageOutput *out, cons // Add common attribs to the spec std::string software = ( boost::format( "Gaffer %d.%d.%d.%d" ) % GAFFER_MILESTONE_VERSION % GAFFER_MAJOR_VERSION % GAFFER_MINOR_VERSION % GAFFER_PATCH_VERSION ).str(); spec.attribute( "Software", software ); - - spec.attribute( "HostComputer", boost::asio::ip::host_name() ); - -#ifdef _WIN32 - const char *artist = getenv("username"); -#else - const char *artist = getenv( "USER" ); -#endif - if ( artist ) + struct utsname info; + if ( !uname( &info ) ) + { + spec.attribute( "HostComputer", info.nodename ); + } + if ( const char *artist = getenv( "USER" ) ) { spec.attribute( "Artist", artist ); } @@ -1267,7 +1262,7 @@ ImageWriter::ImageWriter( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new ImagePlug( "in" ) ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new StringPlug( "channels", Gaffer::Plug::In, "*" ) ); addChild( new StringPlug( "colorSpace" ) ); addChild( new ImagePlug( "out", Plug::Out, Plug::Default & ~Plug::Serialisable ) ); @@ -1372,14 +1367,14 @@ const GafferImage::ImagePlug *ImageWriter::inPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::FileSystemPathPlug *ImageWriter::fileNamePlug() +Gaffer::StringPlug *ImageWriter::fileNamePlug() { - return getChild( g_firstPlugIndex+1 ); + return getChild( g_firstPlugIndex+1 ); } -const Gaffer::FileSystemPathPlug *ImageWriter::fileNamePlug() const +const Gaffer::StringPlug *ImageWriter::fileNamePlug() const { - return getChild( g_firstPlugIndex+1 ); + return getChild( g_firstPlugIndex+1 ); } Gaffer::StringPlug *ImageWriter::channelsPlug() diff --git a/src/GafferImage/LUT.cpp b/src/GafferImage/LUT.cpp index c3a10d55749..c49e9cb4213 100644 --- a/src/GafferImage/LUT.cpp +++ b/src/GafferImage/LUT.cpp @@ -36,7 +36,7 @@ #include "GafferImage/LUT.h" -#include "Gaffer/FileSystemPathPlug.h" +#include "Gaffer/StringPlug.h" using namespace std; using namespace IECore; @@ -51,7 +51,7 @@ LUT::LUT( const std::string &name ) : OpenColorIOTransform( name ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new IntPlug( "interpolation", Plug::In, @@ -73,14 +73,14 @@ LUT::~LUT() { } -Gaffer::FileSystemPathPlug *LUT::fileNamePlug() +Gaffer::StringPlug *LUT::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::FileSystemPathPlug *LUT::fileNamePlug() const +const Gaffer::StringPlug *LUT::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::IntPlug *LUT::interpolationPlug() diff --git a/src/GafferImage/OpenImageIOReader.cpp b/src/GafferImage/OpenImageIOReader.cpp index 7d6bdafa6d2..bf32bd98633 100644 --- a/src/GafferImage/OpenImageIOReader.cpp +++ b/src/GafferImage/OpenImageIOReader.cpp @@ -45,7 +45,6 @@ #include "Gaffer/Context.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "IECoreImage/OpenImageIOAlgo.h" @@ -700,8 +699,7 @@ FilePtr retrieveFile( std::string &fileName, OpenImageIOReader::MissingFrameMode return nullptr; } - // All other substitutions are handled in the FileSystemPathPlug - const std::string resolvedFileName = context->substitute( fileName, IECore::StringAlgo::Substitutions::FrameSubstitutions ); + const std::string resolvedFileName = context->substitute( fileName ); FileHandleCache *cache = fileCache(); CacheEntry cacheEntry = cache->get( resolvedFileName ); @@ -763,9 +761,10 @@ OpenImageIOReader::OpenImageIOReader( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( - new FileSystemPathPlug( + new StringPlug( "fileName", Plug::In, "", - /* flags */ Plug::Default + /* flags */ Plug::Default, + /* substitutions */ IECore::StringAlgo::AllSubstitutions & ~IECore::StringAlgo::FrameSubstitutions ) ); addChild( new IntPlug( "refreshCount" ) ); @@ -780,14 +779,14 @@ OpenImageIOReader::~OpenImageIOReader() { } -Gaffer::FileSystemPathPlug *OpenImageIOReader::fileNamePlug() +Gaffer::StringPlug *OpenImageIOReader::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::FileSystemPathPlug *OpenImageIOReader::fileNamePlug() const +const Gaffer::StringPlug *OpenImageIOReader::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::IntPlug *OpenImageIOReader::refreshCountPlug() diff --git a/src/GafferImage/Text.cpp b/src/GafferImage/Text.cpp index 8b47125052e..5d8695b46c5 100644 --- a/src/GafferImage/Text.cpp +++ b/src/GafferImage/Text.cpp @@ -39,7 +39,6 @@ #include "GafferImage/BufferAlgo.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/Transform2DPlug.h" #include "Gaffer/Private/IECorePreview/LRUCache.h" @@ -215,7 +214,7 @@ Text::Text( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new StringPlug( "text", Plug::In, "Hello World" ) ); - addChild( new FileSystemPathPlug( "font", Plug::In, "Vera.ttf" ) ); + addChild( new StringPlug( "font", Plug::In, "Vera.ttf" ) ); addChild( new V2iPlug( "size", Plug::In, V2i( 50 ), V2i( 0 ) ) ); addChild( new Box2iPlug( "area" ) ); addChild( new IntPlug( "horizontalAlignment", Plug::In, Left, Left, HorizontalCenter ) ); @@ -238,14 +237,14 @@ const Gaffer::StringPlug *Text::textPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::FileSystemPathPlug *Text::fontPlug() +Gaffer::StringPlug *Text::fontPlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const Gaffer::FileSystemPathPlug *Text::fontPlug() const +const Gaffer::StringPlug *Text::fontPlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } Gaffer::V2iPlug *Text::sizePlug() diff --git a/src/GafferImageModule/CatalogueBinding.cpp b/src/GafferImageModule/CatalogueBinding.cpp index 1c33c3ba10b..a172537b6fe 100644 --- a/src/GafferImageModule/CatalogueBinding.cpp +++ b/src/GafferImageModule/CatalogueBinding.cpp @@ -126,7 +126,7 @@ void GafferImageModule::bindCatalogue() { scope s = GafferBindings::DependencyNodeClass() - .def( "setDriver", &Display::setDriver, ( boost::python::arg_( "driver" ), boost::python::arg_( "copy" ) = false ) ) + .def( "setDriver", &Display::setDriver, ( arg( "driver" ), arg( "copy" ) = false ) ) .def( "getDriver", (IECoreImage::DisplayDriver *(Display::*)())&Display::getDriver, return_value_policy() ) .def( "driverCreatedSignal", &Display::driverCreatedSignal, return_value_policy() ).staticmethod( "driverCreatedSignal" ) .def( "imageReceivedSignal", &Display::imageReceivedSignal, return_value_policy() ).staticmethod( "imageReceivedSignal" ) diff --git a/src/GafferImageModule/CoreBinding.cpp b/src/GafferImageModule/CoreBinding.cpp index 799443c4dcc..a1397229d06 100644 --- a/src/GafferImageModule/CoreBinding.cpp +++ b/src/GafferImageModule/CoreBinding.cpp @@ -275,13 +275,13 @@ void GafferImageModule::bindCore() init< const std::string &, Gaffer::Plug::Direction, unsigned > ( ( - boost::python::arg_( "name" ) = Gaffer::GraphComponent::defaultName(), - boost::python::arg_( "direction" ) = Gaffer::Plug::In, - boost::python::arg_( "flags" ) = Gaffer::Plug::Default + arg( "name" ) = Gaffer::GraphComponent::defaultName(), + arg( "direction" ) = Gaffer::Plug::In, + arg( "flags" ) = Gaffer::Plug::Default ) ) ) - .def( "channelData", &channelData, ( boost::python::arg_( "_copy" ) = true ) ) + .def( "channelData", &channelData, ( arg( "_copy" ) = true ) ) .def( "channelDataHash", &channelDataHash ) .def( "format", &format ) .def( "formatHash", &formatHash ) @@ -413,7 +413,7 @@ void GafferImageModule::bindCore() init ( ( - boost::python::arg_( "boundingMode" ) = Sampler::Black + arg( "boundingMode" ) = Sampler::Black ) ) ) diff --git a/src/GafferImageModule/FilterAlgoBinding.cpp b/src/GafferImageModule/FilterAlgoBinding.cpp index fa8f9e7c94f..4dd87d6062f 100644 --- a/src/GafferImageModule/FilterAlgoBinding.cpp +++ b/src/GafferImageModule/FilterAlgoBinding.cpp @@ -55,9 +55,9 @@ namespace return GafferImage::FilterAlgo::sampleParallelogram( sampler, p, dpdx, dpdy, f ); } - boost::python::list filterNamesWrapper() + list filterNamesWrapper() { - boost::python::list result; + list result; const std::vector &filters = GafferImage::FilterAlgo::filterNames(); for ( unsigned i=0; i < filters.size(); i++ ) { diff --git a/src/GafferImageModule/ImageProcessorBinding.cpp b/src/GafferImageModule/ImageProcessorBinding.cpp index e9f18125fe6..a0531045151 100644 --- a/src/GafferImageModule/ImageProcessorBinding.cpp +++ b/src/GafferImageModule/ImageProcessorBinding.cpp @@ -32,8 +32,6 @@ // ////////////////////////////////////////////////////////////////////////// -#include - #include "boost/python.hpp" #include "ImageProcessorBinding.h" @@ -64,9 +62,9 @@ void GafferImageModule::bindImageProcessor() GafferBindings::DependencyNodeClass() .def( init( ( - boost::python::arg_( "name" ) = GraphComponent::defaultName(), - boost::python::arg_( "minInputs" ), - boost::python::arg_( "maxInputs" ) = std::numeric_limits::max() + arg( "name" ) = GraphComponent::defaultName(), + arg( "minInputs" ), + arg( "maxInputs" ) = Imath::limits::max() ) ) ) diff --git a/src/GafferImageUI/ImageView.cpp b/src/GafferImageUI/ImageView.cpp index b044e08ca82..34bc4aeb91a 100644 --- a/src/GafferImageUI/ImageView.cpp +++ b/src/GafferImageUI/ImageView.cpp @@ -353,7 +353,7 @@ class ImageView::ColorInspector : public boost::signals::trackable GAFFER_NODE_DEFINE_TYPE( ImageView ); -GAFFERIMAGEUI_API ImageView::ViewDescription ImageView::g_viewDescription( GafferImage::ImagePlug::staticTypeId() ); +ImageView::ViewDescription ImageView::g_viewDescription( GafferImage::ImagePlug::staticTypeId() ); ImageView::ImageView( const std::string &name ) : View( name, new GafferImage::ImagePlug() ), diff --git a/src/GafferModule/ArrayPlugBinding.cpp b/src/GafferModule/ArrayPlugBinding.cpp index ca7aedc0546..f6b4e215dc5 100644 --- a/src/GafferModule/ArrayPlugBinding.cpp +++ b/src/GafferModule/ArrayPlugBinding.cpp @@ -68,7 +68,7 @@ std::string repr( const ArrayPlug *plug ) result += boost::str( boost::format( "minSize = %d, " ) % plug->minSize() ); } - if( plug->maxSize() != std::numeric_limits::max() ) + if( plug->maxSize() != Imath::limits::max() ) { result += boost::str( boost::format( "maxSize = %d, " ) % plug->maxSize() ); } @@ -144,7 +144,7 @@ void GafferModule::bindArrayPlug() arg( "direction" ) = Plug::In, arg( "element" ) = PlugPtr(), arg( "minSize" ) = 1, - arg( "maxSize" ) = std::numeric_limits::max(), + arg( "maxSize" ) = Imath::limits::max(), arg( "flags" ) = Plug::Default, arg( "resizeWhenInputsChange" ) = true ) diff --git a/src/GafferModule/FileSystemPathPlugBinding.cpp b/src/GafferModule/FileSystemPathPlugBinding.cpp deleted file mode 100644 index d3016551dcb..00000000000 --- a/src/GafferModule/FileSystemPathPlugBinding.cpp +++ /dev/null @@ -1,153 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#include "FileSystemPathPlugBinding.h" - -#include "GafferBindings/ValuePlugBinding.h" - -#include "Gaffer/FileSystemPathPlug.h" - -#include "IECorePython/ScopedGILRelease.h" - -#include "IECore/StringAlgo.h" - -using namespace boost::python; -using namespace Gaffer; -using namespace GafferBindings; - -namespace -{ - -void setValue( FileSystemPathPlug *plug, const std::string& value ) -{ - // we use a GIL release here to prevent a lock in the case where this triggers a graph - // evaluation which decides to go back into python on another thread: - IECorePython::ScopedGILRelease r; - plug->setValue( value ); -} - -std::string getValue( const FileSystemPathPlug *plug, const IECore::MurmurHash *precomputedHash ) -{ - // Must release GIL in case computation spawns threads which need - // to reenter Python. - IECorePython::ScopedGILRelease r; - return plug->getValue( precomputedHash ); -} - -std::string substitutionsRepr( unsigned substitutions ) -{ - static const IECore::StringAlgo::Substitutions values[] = { IECore::StringAlgo::FrameSubstitutions, IECore::StringAlgo::VariableSubstitutions, IECore::StringAlgo::EscapeSubstitutions, IECore::StringAlgo::TildeSubstitutions,IECore::StringAlgo::NoSubstitutions }; - static const char *names[] = { "FrameSubstitutions", "VariableSubstitutions", "EscapeSubstitutions", "TildeSubstitutions", nullptr }; - - if( substitutions == IECore::StringAlgo::AllSubstitutions ) - { - return "Gaffer.Context.Substitutions.AllSubstitutions"; - } - else if( substitutions == IECore::StringAlgo::NoSubstitutions ) - { - return "Gaffer.Context.Substitutions.NoSubstitutions"; - } - - std::string result; - for( int i = 0; names[i]; ++i ) - { - if( substitutions & values[i] ) - { - if( result.size() ) - { - result += " | "; - } - result += "Gaffer.Context.Substitutions." + std::string( names[i] ); - } - } - - return result; -} - -std::string serialisationRepr( const Gaffer::FileSystemPathPlug *plug, const Serialisation *serialisation ) -{ - std::string extraArguments; - if( plug->substitutions() != IECore::StringAlgo::AllSubstitutions ) - { - extraArguments = "substitutions = " + substitutionsRepr( plug->substitutions() ); - } - return ValuePlugSerialiser::repr( plug, extraArguments, serialisation ); -} - -std::string repr( const Gaffer::FileSystemPathPlug *plug ) -{ - return serialisationRepr( plug, nullptr ); -} - -class FileSystemPathPlugSerialiser : public ValuePlugSerialiser -{ - - public : - - std::string constructor( const Gaffer::GraphComponent *graphComponent, const Serialisation &serialisation ) const override - { - return serialisationRepr( static_cast( graphComponent ), &serialisation ); - } - -}; - -} // namespace - -void GafferModule::bindFileSystemPathPlug() -{ - - PlugClass() - .def( - boost::python::init( - ( - boost::python::arg_( "name" )=Gaffer::GraphComponent::defaultName(), - boost::python::arg_( "direction" )=Gaffer::Plug::In, - boost::python::arg_( "defaultValue" )="", - boost::python::arg_( "flags" )=Gaffer::Plug::Default, - boost::python::arg_( "substitutions" )=IECore::StringAlgo::AllSubstitutions - ) - ) - ) - .def( "__repr__", &repr ) - .def( "substitutions", &FileSystemPathPlug::substitutions ) - .def( "defaultValue", &FileSystemPathPlug::defaultValue, return_value_policy() ) - .def( "setValue", &setValue ) - .def( "getValue", &getValue, ( boost::python::arg( "_precomputedHash" ) = object() ) ) - ; - - Serialisation::registerSerialiser( FileSystemPathPlug::staticTypeId(), new FileSystemPathPlugSerialiser ); - -} diff --git a/src/GafferModule/FileSystemPathPlugBinding.h b/src/GafferModule/FileSystemPathPlugBinding.h deleted file mode 100644 index 1cdb5fac44b..00000000000 --- a/src/GafferModule/FileSystemPathPlugBinding.h +++ /dev/null @@ -1,47 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2015, Image Engine Design Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided with -// the distribution. -// -// * Neither the name of John Haddon nor the names of -// any other contributors to this software may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////// - -#ifndef GAFFERMODULE_FILESYSTEMPATHPLUGBINDING_H -#define GAFFERMODULE_FILESYSTEMPATHPLUGBINDING_H - -namespace GafferModule -{ - -void bindFileSystemPathPlug(); - -} // namespace GafferModule - -#endif // GAFFERMODULE_STRINGPLUGBINDING_H diff --git a/src/GafferModule/GafferModule.cpp b/src/GafferModule/GafferModule.cpp index e2f61a5d9cb..81e22df3800 100644 --- a/src/GafferModule/GafferModule.cpp +++ b/src/GafferModule/GafferModule.cpp @@ -48,7 +48,6 @@ #include "DirtyPropagationScopeBinding.h" #include "DotBinding.h" #include "ExpressionBinding.h" -#include "FileSystemPathPlugBinding.h" #include "GraphComponentBinding.h" #include "ProcessMessageHandlerBinding.h" #include "MetadataAlgoBinding.h" @@ -108,8 +107,6 @@ bool isDebug() #endif } -#ifndef _WIN32 - int g_argc = 0; char **g_argv = nullptr; @@ -169,15 +166,12 @@ void clobberArgv() g_argv[g_argc-1] = c; memset( c, 0, end - c ); } -#endif void nameProcess() { // Some things (for instance, `ps` in default mode) look at `argv` to get // the name. -#ifndef _WIN32 clobberArgv(); -#endif // Others (for instance, `top` in default mode) use other methods. // Cater to everyone as best we can. #ifdef __linux__ @@ -246,7 +240,6 @@ BOOST_PYTHON_MODULE( _Gaffer ) bindNodeAlgo(); bindShuffles(); bindMessages(); - bindFileSystemPathPlug(); NodeClass(); diff --git a/src/GafferModule/PathBinding.cpp b/src/GafferModule/PathBinding.cpp index b2f7f0fd369..0dc55a03b29 100644 --- a/src/GafferModule/PathBinding.cpp +++ b/src/GafferModule/PathBinding.cpp @@ -503,7 +503,6 @@ void GafferModule::bindPath() arg( "includeSequenceFilter" ) = false ) ) - .def( "nativeString", &FileSystemPath::nativeString ) .staticmethod( "createStandardFilter" ) ; diff --git a/src/GafferModule/ScriptNodeBinding.cpp b/src/GafferModule/ScriptNodeBinding.cpp index 4a0184830cf..d3fea12d300 100644 --- a/src/GafferModule/ScriptNodeBinding.cpp +++ b/src/GafferModule/ScriptNodeBinding.cpp @@ -56,19 +56,52 @@ #include "IECore/MessageHandler.h" -#include "boost/algorithm/string/classification.hpp" -#include "boost/algorithm/string/find_iterator.hpp" #include "boost/algorithm/string/replace.hpp" #include "boost/lexical_cast.hpp" #include "boost/regex.hpp" #include -using namespace std; -using namespace boost; using namespace Gaffer; using namespace GafferBindings; +////////////////////////////////////////////////////////////////////////// +// Access to Python AST +////////////////////////////////////////////////////////////////////////// + +extern "C" +{ + +// Essential to include this last, since it defines macros which +// clash with other headers. +#include "Python-ast.h" + +#if PY_MAJOR_VERSION >= 3 +/// \todo The already esoteric AST API appears to be even more obscure +/// in Python 3, and it has never been available on Windows. We would do +/// well to avoid it entirely. One simple alternative is implemented in +/// https://github.com/johnhaddon/gaffer/tree/simpleTolerantExec, but +/// initial benchmarking suggested that performance was worse. +#include "asdl.h" +#undef arg +#define asdl_seq_new _Py_asdl_seq_new +#endif + +}; + +namespace boost { +namespace python { + +// Specialisation to allow use of handle +template<> +struct base_type_traits +{ + typedef PyObject type; +}; + +} // namespace python +} // namespace boost + ////////////////////////////////////////////////////////////////////////// // Serialisation ////////////////////////////////////////////////////////////////////////// @@ -89,30 +122,75 @@ const std::string formattedErrorContext( int lineNumber, const std::string &cont // Execute the script one top level statement at a time, // reporting errors that occur, but otherwise continuing // with execution. -bool tolerantExec( const string &pythonScript, boost::python::object globals, boost::python::object locals, const std::string &context ) +bool tolerantExec( const char *pythonScript, boost::python::object globals, boost::python::object locals, const std::string &context ) { + // The python parsing framework uses an arena to simplify memory allocation, + // which is handy for us, since we're going to manipulate the AST a little. + std::unique_ptr arena( PyArena_New(), PyArena_Free ); + + // Parse the whole script, getting an abstract syntax tree for a + // module which would execute everything. + mod_ty mod = PyParser_ASTFromString( + pythonScript, + "", + Py_file_input, + nullptr, + arena.get() + ); + + if( !mod ) + { + int lineNumber = 0; + std::string message = IECorePython::ExceptionAlgo::formatPythonException( /* withTraceback = */ false, &lineNumber ); + IECore::msg( IECore::Msg::Error, formattedErrorContext( lineNumber, context ), message ); + return false; + } + const IECore::Canceller *canceller = Context::current()->canceller(); IECore::Canceller::check( canceller ); + assert( mod->kind == Module_kind ); + + // Loop over the top-level statements in the module body, + // executing one at a time. bool result = false; - int lineNumber = 1; - auto it = make_split_iterator( pythonScript, token_finder( is_any_of( "\n" ) ) ); - while( it != split_iterator() ) + int numStatements = asdl_seq_LEN( mod->v.Module.body ); + for( int i=0; ibegin(), it->end() ); - try - { - exec( line.c_str(), globals, locals ); - } - catch( const boost::python::error_already_set &e ) + + // Make a new module containing just this one statement. + asdl_seq *newBody = asdl_seq_new( 1, arena.get() ); + asdl_seq_SET( newBody, 0, asdl_seq_GET( mod->v.Module.body, i ) ); + mod_ty newModule = Module( + newBody, + arena.get() + ); + + // Compile it. + boost::python::handle code( PyAST_Compile( newModule, "", nullptr, arena.get() ) ); + + // And execute it. + boost::python::handle<> v( boost::python::allow_null( + PyEval_EvalCode( +#if PY_MAJOR_VERSION >= 3 + (PyObject *)code.get(), +#else + code.get(), +#endif + globals.ptr(), + locals.ptr() + ) + ) ); + + // Report any errors. + if( v == nullptr) { - const string message = IECorePython::ExceptionAlgo::formatPythonException( /* withTraceback = */ false ); + int lineNumber = 0; + std::string message = IECorePython::ExceptionAlgo::formatPythonException( /* withTraceback = */ false, &lineNumber ); IECore::msg( IECore::Msg::Error, formattedErrorContext( lineNumber, context ), message ); result = true; } - ++it; ++lineNumber; } return result; @@ -264,7 +342,7 @@ bool execute( ScriptNode *script, const std::string &serialisation, Node *parent } else { - result = tolerantExec( toExecute, e, e, context ); + result = tolerantExec( toExecute.c_str(), e, e, context ); } } catch( boost::python::error_already_set &e ) diff --git a/src/GafferOSL/OSLCode.cpp b/src/GafferOSL/OSLCode.cpp index 43189d813bb..e9ba6e8dcc8 100644 --- a/src/GafferOSL/OSLCode.cpp +++ b/src/GafferOSL/OSLCode.cpp @@ -51,8 +51,6 @@ #include "boost/bind.hpp" #include "boost/filesystem.hpp" -#include "boost/algorithm/string/replace.hpp" - #include using namespace std; @@ -265,7 +263,6 @@ boost::filesystem::path compile( const std::string &shaderName, const std::strin // Write the source code out. const std::string tempOSLFileName = ( tempDirectory / ( shaderName + ".osl" ) ).string(); - std::ofstream f( tempOSLFileName.c_str() ); if( !f.good() ) { @@ -286,11 +283,7 @@ boost::filesystem::path compile( const std::string &shaderName, const std::strin vector options; if( const char *includePaths = getenv( "OSL_SHADER_PATHS" ) ) { - #ifdef _MSC_VER - StringAlgo::tokenize( includePaths, ';', options ); - #else - StringAlgo::tokenize( includePaths, ':', options ); - #endif + StringAlgo::tokenize( includePaths, ':', options ); for( vector::iterator it = options.begin(), eIt = options.end(); it != eIt; ++it ) { it->insert( 0, "-I" ); @@ -333,9 +326,7 @@ class CompileProcess : public Gaffer::Process string shaderName; string shaderSource = generate( oslCode, shaderName ); boost::filesystem::path shaderFile = compile( shaderName, shaderSource ); - std::string shaderFileString = shaderFile.replace_extension().string(); - boost::replace_all( shaderFileString, "\\", "/" ); // Convert \ from Windows paths so shader can be found - oslCode->namePlug()->setValue( shaderFileString ); + oslCode->namePlug()->setValue( shaderFile.replace_extension().string() ); oslCode->typePlug()->setValue( "osl:shader" ); } catch( ... ) diff --git a/src/GafferOSL/OSLExpressionEngine.cpp b/src/GafferOSL/OSLExpressionEngine.cpp index 62ff1a06ae3..e1984395d0a 100644 --- a/src/GafferOSL/OSLExpressionEngine.cpp +++ b/src/GafferOSL/OSLExpressionEngine.cpp @@ -759,11 +759,7 @@ class OSLExpressionEngine : public Gaffer::Expression::Engine // prepend it to the source. shaderName = "oslExpression" + MurmurHash().append( result ).toString(); - #ifdef _MSC_VER - result = "#include \"GafferOSL\\Expression.h\"\n\nshader " + shaderName + " " + result; - #else - result = "#include \"GafferOSL/Expression.h\"\n\nshader " + shaderName + " " + result; - #endif + result = "#include \"GafferOSL/Expression.h\"\n\nshader " + shaderName + " " + result; return result; } @@ -791,11 +787,7 @@ class OSLExpressionEngine : public Gaffer::Expression::Engine vector options; if( const char *includePaths = getenv( "OSL_SHADER_PATHS" ) ) { - #ifdef _MSC_VER - StringAlgo::tokenize( includePaths, ';', options ); - #else - StringAlgo::tokenize( includePaths, ':', options ); - #endif + StringAlgo::tokenize( includePaths, ':', options ); for( vector::iterator it = options.begin(), eIt = options.end(); it != eIt; ++it ) { it->insert( 0, "-I" ); diff --git a/src/GafferOSLModule/GafferOSLModule.cpp b/src/GafferOSLModule/GafferOSLModule.cpp index 3bda0806620..d2d52b8ceab 100644 --- a/src/GafferOSLModule/GafferOSLModule.cpp +++ b/src/GafferOSLModule/GafferOSLModule.cpp @@ -113,8 +113,8 @@ IECore::CompoundDataPtr shadeWrapper( ShadingEngine &shadingEngine, const IECore { ShadingEngine::Transforms transforms; - boost::python::list values = pythonTransforms.values(); - boost::python::list keys = pythonTransforms.keys(); + list values = pythonTransforms.values(); + list keys = pythonTransforms.keys(); for (int i = 0; i < boost::python::len( keys ); i++) { @@ -169,9 +169,9 @@ BOOST_PYTHON_MODULE( _GafferOSL ) PlugClass() .def( init( ( - boost::python::arg( "name" ) = Gaffer::GraphComponent::defaultName(), - boost::python::arg( "direction" ) = Gaffer::Plug::In, - boost::python::arg( "flags" ) = Gaffer::Plug::Default + arg( "name" ) = Gaffer::GraphComponent::defaultName(), + arg( "direction" ) = Gaffer::Plug::In, + arg( "flags" ) = Gaffer::Plug::Default ) ) ) diff --git a/src/GafferScene/ExternalProcedural.cpp b/src/GafferScene/ExternalProcedural.cpp index fe15acc5616..390b7fa859b 100644 --- a/src/GafferScene/ExternalProcedural.cpp +++ b/src/GafferScene/ExternalProcedural.cpp @@ -36,7 +36,7 @@ #include "GafferScene/ExternalProcedural.h" -#include "Gaffer/FileSystemPathPlug.h" +#include "Gaffer/StringPlug.h" #include "IECoreScene/ExternalProcedural.h" @@ -52,7 +52,7 @@ ExternalProcedural::ExternalProcedural( const std::string &name ) : ObjectSource( name, "procedural" ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new Box3fPlug( "bound", Plug::In, Box3f( V3f( -0.5 ), V3f( 0.5 ) ) ) ); addChild( new CompoundDataPlug( "parameters" ) ); } @@ -61,14 +61,14 @@ ExternalProcedural::~ExternalProcedural() { } -Gaffer::FileSystemPathPlug *ExternalProcedural::fileNamePlug() +Gaffer::StringPlug *ExternalProcedural::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::FileSystemPathPlug *ExternalProcedural::fileNamePlug() const +const Gaffer::StringPlug *ExternalProcedural::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::Box3fPlug *ExternalProcedural::boundPlug() diff --git a/src/GafferScene/InteractiveRender.cpp b/src/GafferScene/InteractiveRender.cpp index 601ae308960..76b44aeae3d 100644 --- a/src/GafferScene/InteractiveRender.cpp +++ b/src/GafferScene/InteractiveRender.cpp @@ -326,7 +326,7 @@ void InteractiveRender::update() m_controller.reset( new RenderController( adaptedInPlug(), effectiveContext(), m_renderer ) ); - m_controller->setMinimumExpansionDepth( numeric_limits::max() ); + m_controller->setMinimumExpansionDepth( limits::max() ); m_controller->updateRequiredSignal().connect( boost::bind( &InteractiveRender::update, this ) ); diff --git a/src/GafferScene/Outputs.cpp b/src/GafferScene/Outputs.cpp index a941e96ddb2..6bb554a0ea0 100644 --- a/src/GafferScene/Outputs.cpp +++ b/src/GafferScene/Outputs.cpp @@ -39,7 +39,6 @@ #include "Gaffer/CompoundDataPlug.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "boost/multi_index/member.hpp" #include "boost/multi_index/ordered_index.hpp" @@ -133,7 +132,7 @@ Gaffer::ValuePlug *Outputs::addOutput( const std::string &name, const IECoreScen activePlug->setFlags( Plug::Dynamic, true ); outputPlug->addChild( activePlug ); - FileSystemPathPlugPtr fileNamePlug = new FileSystemPathPlug( "fileName" ); + StringPlugPtr fileNamePlug = new StringPlug( "fileName" ); fileNamePlug->setValue( output->getName() ); fileNamePlug->setFlags( Plug::Dynamic, true ); outputPlug->addChild( fileNamePlug ); diff --git a/src/GafferScene/Render.cpp b/src/GafferScene/Render.cpp index 92e661a5d5a..19a41ade755 100644 --- a/src/GafferScene/Render.cpp +++ b/src/GafferScene/Render.cpp @@ -108,7 +108,7 @@ Render::Render( const IECore::InternedString &rendererType, const std::string &n addChild( new ScenePlug( "in" ) ); addChild( new StringPlug( rendererType.string().empty() ? "renderer" : "__renderer", Plug::In, rendererType.string() ) ); addChild( new IntPlug( "mode", Plug::In, RenderMode, RenderMode, SceneDescriptionMode ) ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new ScenePlug( "out", Plug::Out, Plug::Default & ~Plug::Serialisable ) ); addChild( new ScenePlug( "__adaptedIn", Plug::In, Plug::Default & ~Plug::Serialisable ) ); @@ -154,14 +154,14 @@ const Gaffer::IntPlug *Render::modePlug() const return getChild( g_firstPlugIndex + 2 ); } -Gaffer::FileSystemPathPlug *Render::fileNamePlug() +Gaffer::StringPlug *Render::fileNamePlug() { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } -const Gaffer::FileSystemPathPlug *Render::fileNamePlug() const +const Gaffer::StringPlug *Render::fileNamePlug() const { - return getChild( g_firstPlugIndex + 3 ); + return getChild( g_firstPlugIndex + 3 ); } ScenePlug *Render::outPlug() diff --git a/src/GafferScene/SceneReader.cpp b/src/GafferScene/SceneReader.cpp index 0a57fcfd72d..ec6e49221f5 100644 --- a/src/GafferScene/SceneReader.cpp +++ b/src/GafferScene/SceneReader.cpp @@ -38,7 +38,6 @@ #include "Gaffer/Context.h" #include "Gaffer/StringPlug.h" -#include "Gaffer/FileSystemPathPlug.h" #include "Gaffer/TransformPlug.h" #include "IECoreScene/SceneCache.h" @@ -72,7 +71,7 @@ SceneReader::SceneReader( const std::string &name ) : SceneNode( name ) { storeIndexOfNextChild( g_firstPlugIndex ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new IntPlug( "refreshCount" ) ); addChild( new StringPlug( "tags" ) ); addChild( new TransformPlug( "transform" ) ); @@ -85,14 +84,14 @@ SceneReader::~SceneReader() { } -Gaffer::FileSystemPathPlug *SceneReader::fileNamePlug() +Gaffer::StringPlug *SceneReader::fileNamePlug() { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } -const Gaffer::FileSystemPathPlug *SceneReader::fileNamePlug() const +const Gaffer::StringPlug *SceneReader::fileNamePlug() const { - return getChild( g_firstPlugIndex ); + return getChild( g_firstPlugIndex ); } Gaffer::IntPlug *SceneReader::refreshCountPlug() diff --git a/src/GafferScene/SceneWriter.cpp b/src/GafferScene/SceneWriter.cpp index 3acba3bfba9..8dd0040425d 100644 --- a/src/GafferScene/SceneWriter.cpp +++ b/src/GafferScene/SceneWriter.cpp @@ -39,7 +39,7 @@ #include "GafferScene/SceneAlgo.h" #include "Gaffer/Context.h" -#include "Gaffer/FileSystemPathPlug.h" +#include "Gaffer/StringPlug.h" #include "IECoreScene/SceneInterface.h" @@ -160,7 +160,7 @@ SceneWriter::SceneWriter( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new ScenePlug( "in", Plug::In ) ); - addChild( new FileSystemPathPlug( "fileName" ) ); + addChild( new StringPlug( "fileName" ) ); addChild( new ScenePlug( "out", Plug::Out, Plug::Default & ~Plug::Serialisable ) ); outPlug()->setInput( inPlug() ); } @@ -179,14 +179,14 @@ const ScenePlug *SceneWriter::inPlug() const return getChild( g_firstPlugIndex ); } -FileSystemPathPlug *SceneWriter::fileNamePlug() +StringPlug *SceneWriter::fileNamePlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const FileSystemPathPlug *SceneWriter::fileNamePlug() const +const StringPlug *SceneWriter::fileNamePlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } ScenePlug *SceneWriter::outPlug() diff --git a/src/GafferScene/Text.cpp b/src/GafferScene/Text.cpp index a72d761f4eb..4d99b7c6048 100644 --- a/src/GafferScene/Text.cpp +++ b/src/GafferScene/Text.cpp @@ -38,7 +38,6 @@ #include "Gaffer/StringPlug.h" #include "Gaffer/Private/IECorePreview/LRUCache.h" -#include "Gaffer/FileSystemPathPlug.h" #include "IECoreScene/Font.h" #include "IECoreScene/MeshPrimitive.h" @@ -101,7 +100,7 @@ Text::Text( const std::string &name ) { storeIndexOfNextChild( g_firstPlugIndex ); addChild( new StringPlug( "text", Plug::In, "Hello World" ) ); - addChild( new FileSystemPathPlug( "font", Plug::In, "Vera.ttf" ) ); + addChild( new StringPlug( "font", Plug::In, "Vera.ttf" ) ); } Text::~Text() @@ -118,14 +117,14 @@ const Gaffer::StringPlug *Text::textPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::FileSystemPathPlug *Text::fontPlug() +Gaffer::StringPlug *Text::fontPlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const Gaffer::FileSystemPathPlug *Text::fontPlug() const +const Gaffer::StringPlug *Text::fontPlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } void Text::affects( const Plug *input, AffectedPlugsContainer &outputs ) const diff --git a/src/GafferSceneModule/CoreBinding.cpp b/src/GafferSceneModule/CoreBinding.cpp index bc45e3b37d9..010c999fd29 100644 --- a/src/GafferSceneModule/CoreBinding.cpp +++ b/src/GafferSceneModule/CoreBinding.cpp @@ -399,7 +399,7 @@ void GafferSceneModule::bindCore() ( arg( "name" ) = GraphComponent::defaultName(), arg( "minInputs" ), - arg( "maxInputs" ) = std::numeric_limits::max() + arg( "maxInputs" ) = Imath::limits::max() ) ) ) diff --git a/src/GafferSceneUI/CameraVisualiser.cpp b/src/GafferSceneUI/CameraVisualiser.cpp index f86c9402304..9e0d6e75f6c 100644 --- a/src/GafferSceneUI/CameraVisualiser.cpp +++ b/src/GafferSceneUI/CameraVisualiser.cpp @@ -44,15 +44,6 @@ #include "IECore/AngleConversion.h" #include "IECore/SimpleTypedData.h" -#ifdef _MSC_VER -#ifdef near -#undef near -#endif -#ifdef far -#undef far -#endif -#endif - using namespace std; using namespace Imath; using namespace IECoreGLPreview; diff --git a/src/GafferSceneUI/ContextAlgo.cpp b/src/GafferSceneUI/ContextAlgo.cpp index 058933234cd..b0100eaadef 100644 --- a/src/GafferSceneUI/ContextAlgo.cpp +++ b/src/GafferSceneUI/ContextAlgo.cpp @@ -42,10 +42,6 @@ #include "IECore/VectorTypedData.h" -#include "GafferSceneUI/ContextAlgo.h" - -#include "GafferSceneUI/ContextAlgo.h" - using namespace IECore; using namespace Gaffer; using namespace GafferScene; diff --git a/src/GafferSceneUI/UVView.cpp b/src/GafferSceneUI/UVView.cpp index 8c99bda3b8e..925334ab775 100644 --- a/src/GafferSceneUI/UVView.cpp +++ b/src/GafferSceneUI/UVView.cpp @@ -101,7 +101,7 @@ class UVView::UVScene : public SceneProcessor addChild( new StringVectorDataPlug( "visiblePaths", Plug::In, new StringVectorData ) ); addChild( new StringPlug( "uvSet", Plug::In, "uv" ) ); - addChild( new FileSystemPathPlug( "textureFileName", Plug::In, "" ) ); + addChild( new StringPlug( "textureFileName", Plug::In, "" ) ); addChild( new CompoundObjectPlug( "textures", Plug::Out, new CompoundObject ) ); addChild( new StringVectorDataPlug( "__udimQueryPaths", Plug::Out, new StringVectorData ) ); @@ -169,14 +169,14 @@ class UVView::UVScene : public SceneProcessor return getChild( g_firstPlugIndex + 1 ); } - FileSystemPathPlug *textureFileNamePlug() + StringPlug *textureFileNamePlug() { - return getChild( g_firstPlugIndex + 2 ); + return getChild( g_firstPlugIndex + 2 ); } - const FileSystemPathPlug *textureFileNamePlug() const + const StringPlug *textureFileNamePlug() const { - return getChild( g_firstPlugIndex + 2 ); + return getChild( g_firstPlugIndex + 2 ); } CompoundObjectPlug *texturesPlug() @@ -611,7 +611,7 @@ UVView::UVView( const std::string &name ) storeIndexOfNextChild( g_firstPlugIndex ); addChild( new StringPlug( "uvSet", Plug::In, "uv" ) ); - addChild( new FileSystemPathPlug( "textureFileName" ) ); + addChild( new StringPlug( "textureFileName" ) ); addChild( new StringPlug( "displayTransform", Plug::In, "Default" ) ); addChild( new CompoundObjectPlug( "__textures", Plug::In, new CompoundObject ) ); @@ -678,14 +678,14 @@ const Gaffer::StringPlug *UVView::uvSetPlug() const return getChild( g_firstPlugIndex ); } -Gaffer::FileSystemPathPlug *UVView::textureFileNamePlug() +Gaffer::StringPlug *UVView::textureFileNamePlug() { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } -const Gaffer::FileSystemPathPlug *UVView::textureFileNamePlug() const +const Gaffer::StringPlug *UVView::textureFileNamePlug() const { - return getChild( g_firstPlugIndex + 1 ); + return getChild( g_firstPlugIndex + 1 ); } Gaffer::StringPlug *UVView::displayTransformPlug() diff --git a/src/GafferUI/GraphGadget.cpp b/src/GafferUI/GraphGadget.cpp index 0729667477d..1b7f0ec83b4 100644 --- a/src/GafferUI/GraphGadget.cpp +++ b/src/GafferUI/GraphGadget.cpp @@ -1212,7 +1212,7 @@ bool GraphGadget::dragMove( GadgetPtr gadget, const DragDropEvent &event ) const std::vector &snapOffsets = m_dragSnapOffsets[axis]; float offset = pos[axis] - m_dragStartPosition[axis]; - float snappedDist = std::numeric_limits::max(); + float snappedDist = Imath::limits::max(); float snappedOffset = offset; vector::const_iterator it = lower_bound( snapOffsets.begin(), snapOffsets.end(), offset ); if( it != snapOffsets.end() ) diff --git a/src/GafferUI/ImageGadget.cpp b/src/GafferUI/ImageGadget.cpp index 34e9845a254..64f6c31d637 100644 --- a/src/GafferUI/ImageGadget.cpp +++ b/src/GafferUI/ImageGadget.cpp @@ -64,7 +64,7 @@ namespace Box3f boundGetter( const std::string &fileName, size_t &cost ) { const char *s = getenv( "GAFFERUI_IMAGE_PATHS" ); - IECore::SearchPath sp( s ? s : "", ENVSEP ); + IECore::SearchPath sp( s ? s : "" ); boost::filesystem::path path = sp.find( fileName ); if( path.empty() ) @@ -170,7 +170,7 @@ IECoreGL::TextureLoader *ImageGadget::textureLoader() if( !loader ) { const char *s = getenv( "GAFFERUI_IMAGE_PATHS" ); - IECore::SearchPath sp( s ? s : "", ENVSEP ); + IECore::SearchPath sp( s ? s : "" ); loader = new TextureLoader( sp ); } return loader.get(); diff --git a/src/GafferUI/StandardGraphLayout.cpp b/src/GafferUI/StandardGraphLayout.cpp index 175d6afa970..c589df947f8 100644 --- a/src/GafferUI/StandardGraphLayout.cpp +++ b/src/GafferUI/StandardGraphLayout.cpp @@ -1473,7 +1473,7 @@ size_t StandardGraphLayout::unconnectedInputPlugs( NodeGadget *nodeGadget, std:: plugs.clear(); for( RecursiveInputPlugIterator it( nodeGadget->node() ); !it.done(); it++ ) { - if( (*it)->getInput() == nullptr && nodeGadget->nodule( it->get() ) ) + if( (*it)->getInput() == nullptr and nodeGadget->nodule( it->get() ) ) { plugs.push_back( it->get() ); } diff --git a/src/GafferUIModule/GraphGadgetBinding.cpp b/src/GafferUIModule/GraphGadgetBinding.cpp index bd0cc07dd42..a21c305f794 100644 --- a/src/GafferUIModule/GraphGadgetBinding.cpp +++ b/src/GafferUIModule/GraphGadgetBinding.cpp @@ -232,9 +232,9 @@ void GafferUIModule::bindGraphGadget() .def( "connectionGadgets", &connectionGadgets1, ( arg_( "plug" ), arg_( "excludedNodes" ) = object() ) ) .def( "connectionGadgets", &connectionGadgets2, ( arg_( "node" ), arg_( "excludedNodes" ) = object() ) ) .def( "auxiliaryConnectionsGadget", (AuxiliaryConnectionsGadget *(GraphGadget::*)())&GraphGadget::auxiliaryConnectionsGadget, return_value_policy() ) - .def( "upstreamNodeGadgets", &upstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = std::numeric_limits::max() ) ) - .def( "downstreamNodeGadgets", &downstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = std::numeric_limits::max() ) ) - .def( "connectedNodeGadgets", &connectedNodeGadgets, ( arg( "node" ), arg( "direction" ) = Gaffer::Plug::Invalid, arg( "degreesOfSeparation" ) = std::numeric_limits::max() ) ) + .def( "upstreamNodeGadgets", &upstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = Imath::limits::max() ) ) + .def( "downstreamNodeGadgets", &downstreamNodeGadgets, ( arg( "node" ), arg( "degreesOfSeparation" ) = Imath::limits::max() ) ) + .def( "connectedNodeGadgets", &connectedNodeGadgets, ( arg( "node" ), arg( "direction" ) = Gaffer::Plug::Invalid, arg( "degreesOfSeparation" ) = Imath::limits::max() ) ) .def( "unpositionedNodeGadgets", &unpositionedNodeGadgets ) .def( "setNodePosition", &setNodePosition ) .def( "getNodePosition", &GraphGadget::getNodePosition ) diff --git a/src/GafferUIModule/PathListingWidgetBinding.cpp b/src/GafferUIModule/PathListingWidgetBinding.cpp index 7fcb57b225f..d2f5984aa62 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.cpp +++ b/src/GafferUIModule/PathListingWidgetBinding.cpp @@ -257,7 +257,7 @@ class IconColumn : public Column static QVariant iconGetter( const std::string &fileName, size_t &cost ) { const char *s = getenv( "GAFFERUI_IMAGE_PATHS" ); - IECore::SearchPath sp( s ? s : "", ENVSEP ); + IECore::SearchPath sp( s ? s : "" ); boost::filesystem::path path = sp.find( fileName ); if( path.empty() ) @@ -508,7 +508,7 @@ class PathModel : public QAbstractItemModel QModelIndex index( int row, int column, const QModelIndex &parentIndex = QModelIndex() ) const override { Item *item = parentIndex.isValid() ? static_cast( parentIndex.internalPointer() ) : m_rootItem; - if( row >=0 && row < (int)item->childItems( this ).size() && column >=0 && column < (int)m_columns.size() ) + if( row >=0 and row < (int)item->childItems( this ).size() and column >=0 and column < (int)m_columns.size() ) { return createIndex( row, column, item->childItems( this )[row] ); } diff --git a/src/GafferUIModule/PathListingWidgetBinding.h b/src/GafferUIModule/PathListingWidgetBinding.h index 2f2d9d8a9fb..e7a6574487d 100644 --- a/src/GafferUIModule/PathListingWidgetBinding.h +++ b/src/GafferUIModule/PathListingWidgetBinding.h @@ -37,12 +37,6 @@ #ifndef GAFFERUIMODULE_PATHLISTINGWIDGETBINDING_H #define GAFFERUIMODULE_PATHLISTINGWIDGETBINDING_H -#ifdef _WIN32 - #define ENVSEP ";" -#else - #define ENVSEP ":" -#endif - namespace GafferUIModule { diff --git a/startup/GafferScene/usd.py b/startup/GafferScene/usd.py index 6f2b4735424..9ea3562f344 100644 --- a/startup/GafferScene/usd.py +++ b/startup/GafferScene/usd.py @@ -57,13 +57,11 @@ # > https://github.com/ImageEngine/cortex/pull/810. try : - if os.name != "nt" : - originalDLOpenFlags = sys.getdlopenflags() - sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) + originalDLOpenFlags = sys.getdlopenflags() + sys.setdlopenflags( originalDLOpenFlags & ~ctypes.RTLD_GLOBAL ) from pxr import Usd finally : - if os.name != "nt" : - sys.setdlopenflags( originalDLOpenFlags ) + sys.setdlopenflags( originalDLOpenFlags ) # Import IECoreUSD so that we get the USD SceneInterface registered, # providing USD functionality to both the SceneReader and SceneWriter. diff --git a/startup/GafferUI/layoutCompatibility.py b/startup/GafferUI/layoutCompatibility.py deleted file mode 100644 index e3319c0bdba..00000000000 --- a/startup/GafferUI/layoutCompatibility.py +++ /dev/null @@ -1,77 +0,0 @@ -########################################################################## -# -# Copyright (c) 2019, Cinesite VFX Ltd. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above -# copyright notice, this list of conditions and the following -# disclaimer. -# -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided with -# the distribution. -# -# * Neither the name of John Haddon nor the names of -# any other contributors to this software may be used to endorse or -# promote products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -########################################################################## - -import re - -import Gaffer -import GafferUI - -import imath - -if Gaffer.About.compatibilityVersion() < 54 : - - # Remove new kwargs introduced to store positions/detached panels - def __initWrapper( originalInit ) : - - def init( self, *args, **kwargs ) : - for kw in ( "windowState", "detachedPanels" ) : - if kw in kwargs : - del kwargs[kw] - originalInit( self, *args, **kwargs ) - - return init - - GafferUI.CompoundEditor.__init__ = __initWrapper( GafferUI.CompoundEditor.__init__ ) - - # windowState requires imath, so we need to modify the eval environment - def __create( self, name, scriptNode ) : - - layout = self._Layouts__namedLayouts[name] - - # first try to import the modules the layout needs - contextDict = { "scriptNode" : scriptNode, "imath" : imath } - imported = set() - classNameRegex = re.compile( r"[a-zA-Z]*Gaffer[^(,]*\(" ) - for className in classNameRegex.findall( layout.repr ) : - moduleName = className.partition( "." )[0] - if moduleName not in imported : - exec( "import %s" % moduleName, contextDict, contextDict ) - imported.add( moduleName ) - - return eval( layout.repr, contextDict, contextDict ) - - GafferUI.Layouts.create = __create - diff --git a/startup/gui/menus.py b/startup/gui/menus.py index 12084ae9f89..0bf6b0a4849 100644 --- a/startup/gui/menus.py +++ b/startup/gui/menus.py @@ -412,48 +412,45 @@ def __shaderNodeCreator( nodeName, shaderName ) : return node - # Appleseed comes with a library of OSL shaders which we put - # on the OSL_SHADER_PATHS, but we don't want to show them in - # this menu, because we show them in the Appleseed menu instead. - # Likewise, 3Delight comes with a library of shaders that we - # show in the 3Delight menu and don't want to show here. - # - # The OSLCode node also generates a great many shaders behind - # the scenes that we don't want to place in the menus. Typically - # these aren't on the OSL_SHADER_PATHS anyway because they are - # given to the renderer via absolute paths, but at the time of - # writing it is necessary to place them on the OSL_SHADER_PATHS - # in order to use them in Arnold. We don't enable this by default - # because it causes Arnold to potentially load a huge number of - # shader plugins at startup, but we hide any oslCode shaders here - # in case someone else enables it. - # - # This match expression filters these categories of shader out - # as follows : - # - # - (?!__) asserts that the shader does not begin with double underscore. - # - (^|.*/) matches any number (including zero) of directory - # names preceding the shader name. - # - (? Date: Fri, 19 Nov 2021 09:04:05 -0800 Subject: [PATCH 226/243] IE Configs : Limit builds to Arnold 6 --- config/ie/installAll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/ie/installAll b/config/ie/installAll index a6e31ff4390..a5847f582c2 100644 --- a/config/ie/installAll +++ b/config/ie/installAll @@ -67,8 +67,8 @@ defaultCompilerVersion = IEEnv.registry["platformDefaults"][platform]["compilerV cortexInfo = { x : IEEnv.registry["libraries"]["cortex"][x][platform] for x in IEEnv.activeVersions( IEEnv.registry["libraries"]["cortex"] ) } # fetch at least one active version of each renderer -aiVersion = IEEnv.activeVersions( IEEnv.registry["apps"]["arnold"] )[-1] -dlVersion = ( IEEnv.activeVersions( IEEnv.registry["apps"]["3delight"] ) or [ "UNDEFINED" ] )[-1] +aiVersion = IEEnv.activeAppVersions( "arnold", maximumVersion = "6" )[-1] +dlVersion = "UNDEFINED" # find a specific appleseed version per compiler per cortex version appleseedCompilerMap = { x : {} for x in IEEnv.activeVersions( IEEnv.registry["compilers"]["gcc"] ) } From ea903de99aa077a015ce5e25a1e5d80c87c7be97 Mon Sep 17 00:00:00 2001 From: Andrew Kaufman Date: Fri, 19 Nov 2021 09:13:31 -0800 Subject: [PATCH 227/243] IE Configs : Add DRYRUN arg to help with debugging --- config/ie/installAll | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/ie/installAll b/config/ie/installAll index a5847f582c2..2646971a0d0 100644 --- a/config/ie/installAll +++ b/config/ie/installAll @@ -53,6 +53,9 @@ def build( extraArgs = [] ) : buildArgs.extend( sys.argv[1:] ) print( " ".join( buildArgs ) ) + if "DRYRUN=1" in sys.argv : + return + if subprocess.call( buildArgs ) != 0 : raise RuntimeError( "Error : " + " ".join( buildArgs ) ) print( "Build succeeded: " + " ".join( buildArgs ) + "\n" ) From a8354ba6d1bfed3a8e996582e0b2ee8f026ed074 Mon Sep 17 00:00:00 2001 From: John Haddon Date: Mon, 22 Nov 2021 11:58:27 +0000 Subject: [PATCH 228/243] OSLCode : Check for empty `.oso` files Despite https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1360, we have still seen one example of an empty `.oso` file being produced in production. Adding further checks will hopefully help us get to the bottom of it if it happens again. --- Changes.md | 8 ++++++++ src/GafferOSL/OSLCode.cpp | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Changes.md b/Changes.md index a95281dc367..05dc0c10782 100644 --- a/Changes.md +++ b/Changes.md @@ -1,3 +1,11 @@ +0.61.x.x (relative to 0.61.0.0) +======== + +Improvements +------------ + +- OSLCode : Improved error reporting for cases where empty `.oso` files are produced. + 0.61.0.0 ======== diff --git a/src/GafferOSL/OSLCode.cpp b/src/GafferOSL/OSLCode.cpp index 27f96cb4b2a..3c9e0e75f21 100644 --- a/src/GafferOSL/OSLCode.cpp +++ b/src/GafferOSL/OSLCode.cpp @@ -306,10 +306,26 @@ boost::filesystem::path compile( const std::string &shaderName, const std::strin } } + if( !boost::filesystem::file_size( tempOSLFileName ) ) + { + // Belt and braces. `compiler.compile()` should be reporting all errors, + // but on rare occasions we have still seen empty `.oso` files being + // produced. Detect this and warn so we can get to the bottom of it. + throw IECore::Exception( "Empty file after compilation : \"" + tempOSLFileName + "\"" ); + } + // Move temp file where we really want it, and clean up. boost::filesystem::rename( tempOSOFileName, osoFileName ); + if( !boost::filesystem::file_size( osoFileName ) ) + { + // Belt and braces. `rename()` should be reporting all errors, + // but on rare occasions we have still seen empty `.oso` files being + // produced. Detect this and warn so we can get to the bottom of it. + throw IECore::Exception( "Empty file after rename : \"" + osoFileName.string() + "\"" ); + } + return osoFileName; } From 9543ac2d34167616e544e47d1d40722f8b4b2ed4 Mon Sep 17 00:00:00 2001 From: John Haddon Date: Mon, 22 Nov 2021 16:20:41 +0000 Subject: [PATCH 229/243] BranchCreator : Fix unnecessary input bounds evaluation We were doing a complete (and completely unnecessary) recursive bounds evaluation of `/GAFFERBOT` when creating a branch at `/children`. In this case, `branchesData->locationOrAncestor( "/GAFFERBOT" )` correctly returned the root location, but we incorrectly interpreted that as meaning that `/GAFFERBOT` was an ancestor of the branch. If `path` is deeper than `location`, then path _cannot_ be the ancestor of a branch. --- Changes.md | 8 ++++++ python/GafferSceneTest/ParentTest.py | 40 ++++++++++++++++++++++++++++ src/GafferScene/BranchCreator.cpp | 6 ++--- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/Changes.md b/Changes.md index 8b934517b0d..1d310430dae 100644 --- a/Changes.md +++ b/Changes.md @@ -1,3 +1,11 @@ +0.60.12.x (relative to 0.60.12.0) +========= + +Fixes +----- + +- BranchCreator : Fixed bug in bounding box computation which could cause excessive evaluation of the input scene. + 0.60.12.0 (relative to 0.60.11.0) ========= diff --git a/python/GafferSceneTest/ParentTest.py b/python/GafferSceneTest/ParentTest.py index 8dc058f8e4f..3af392af360 100644 --- a/python/GafferSceneTest/ParentTest.py +++ b/python/GafferSceneTest/ParentTest.py @@ -876,5 +876,45 @@ def testMultipleNewDestinationsBelowOneParent( self ) : IECore.InternedStringVectorData( [ "sphere", "cube", "childrenOfRoundThings", "childrenOfSquareThings" ] ) ) + def testNoUnwantedBoundEvaluations( self ) : + + reader = GafferScene.SceneReader() + reader["fileName"].setValue( "${GAFFER_ROOT}/resources/gafferBot/caches/gafferBot.scc" ) + + group = GafferScene.Group() + + parent = GafferScene.Parent() + parent["in"].setInput( reader["out"] ) + parent["children"][0].setInput( group["out"] ) + parent["parent"].setValue( "/" ) + parent["destination"].setValue( "/children" ) + + # Computing the root bound should not require more than the bounds + # of `/` and `/GAFFERBOT` to be queried from the input scene. + + with Gaffer.ContextMonitor( reader["out"]["bound"] ) as contextMonitor : + parent["out"].bound( "/" ) + + self.assertEqual( contextMonitor.combinedStatistics().numUniqueContexts(), 2 ) + + # If we parent to `/GAFFERBOT/children` then computing the bound of `/GAFFERBOT` + # should only query `/GAFFERBOT` and `/GAFFERBOT/C_torso_GRP` from the input. + + Gaffer.ValuePlug.clearCache() + Gaffer.ValuePlug.clearHashCache() + + parent["destination"].setValue( "/GAFFERBOT/children" ) + with Gaffer.ContextMonitor( reader["out"]["bound"] ) as contextMonitor : + parent["out"].bound( "/GAFFERBOT" ) + + self.assertEqual( contextMonitor.combinedStatistics().numUniqueContexts(), 2 ) + + # The bounds for children of `/GAFFERBOT` should be perfect pass throughs. + + self.assertEqual( + parent["out"].boundHash( "/GAFFERBOT/C_torso_GRP" ), + parent["in"].boundHash( "/GAFFERBOT/C_torso_GRP" ) + ) + if __name__ == "__main__": unittest.main() diff --git a/src/GafferScene/BranchCreator.cpp b/src/GafferScene/BranchCreator.cpp index cc4f10239ff..0e88dc1e89b 100644 --- a/src/GafferScene/BranchCreator.cpp +++ b/src/GafferScene/BranchCreator.cpp @@ -1218,13 +1218,13 @@ BranchCreator::LocationType BranchCreator::sourceAndBranchPaths( const ScenePath } } - if( location->children.empty() ) + if( path.size() == location->depth && !location->children.empty() ) { - return PassThrough; + return location->exists ? Ancestor : NewAncestor; } else { - return location->exists ? Ancestor : NewAncestor; + return PassThrough; } } From 4ae5832193b1a79ceb7f9f6a326461f98e8af884 Mon Sep 17 00:00:00 2001 From: Andrew Kaufman Date: Tue, 23 Nov 2021 15:48:33 -0800 Subject: [PATCH 230/243] Install : Allow updating an existing install tree At IE we often re-run an installation script and run into failures because the top level directory exists. This has been an annoyance in the past, but now that Arnold installs to subdirectories this becomes more problematic. --- SConstruct | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/SConstruct b/SConstruct index d407bd0c309..be7914e703e 100644 --- a/SConstruct +++ b/SConstruct @@ -39,12 +39,9 @@ import os import re import sys import glob -import shutil -import fnmatch -import functools import platform -import py_compile import subprocess +import distutils.dir_util ############################################################################################### # Version @@ -1584,7 +1581,7 @@ for f in exampleFiles : def installer( target, source, env ) : - shutil.copytree( str( source[0] ), str( target[0] ), symlinks=True ) + distutils.dir_util.copy_tree( str( source[0] ), str( target[0] ), preserve_symlinks=True, update=True ) if env.subst( "$PACKAGE_FILE" ).endswith( ".dmg" ) : From 694a9ede030210f2ca58e0e04f80726bda01c066 Mon Sep 17 00:00:00 2001 From: Andrew Kaufman Date: Tue, 23 Nov 2021 15:48:55 -0800 Subject: [PATCH 231/243] IE Configs : Fix postInstall script logic --- config/ie/postInstall | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/config/ie/postInstall b/config/ie/postInstall index 8a8d42c155f..6e7c4943ca4 100644 --- a/config/ie/postInstall +++ b/config/ie/postInstall @@ -42,11 +42,10 @@ def __link( source, target ) : if source == target : return - if os.path.isdir( target ) : - if os.path.islink( target ) : - os.unlink( target ) - else : - shutil.rmtree( target ) + if os.path.islink( target ) : + os.unlink( target ) + elif os.path.isdir( target ) : + shutil.rmtree( target ) os.symlink( os.path.relpath( source, os.path.dirname( target ) ), From 53ab0eb49e04892fdb8f97dfcccf7085e14af07c Mon Sep 17 00:00:00 2001 From: John Haddon Date: Wed, 24 Nov 2021 11:20:37 +0000 Subject: [PATCH 232/243] GadgetWidget : Don't steal wheel events from overlay widgets --- Changes.md | 5 +++++ python/GafferUI/GadgetWidget.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Changes.md b/Changes.md index 05dc0c10782..375aebb7f56 100644 --- a/Changes.md +++ b/Changes.md @@ -6,6 +6,11 @@ Improvements - OSLCode : Improved error reporting for cases where empty `.oso` files are produced. +Fixes +----- + +- Viewer : Fixed scroll wheel handling for overlay widgets. In particular this means that the mouse wheel can now be used to scroll through the parameters of the scene inspector. + 0.61.0.0 ======== diff --git a/python/GafferUI/GadgetWidget.py b/python/GafferUI/GadgetWidget.py index f9993b0d3fa..3b32d3c2209 100644 --- a/python/GafferUI/GadgetWidget.py +++ b/python/GafferUI/GadgetWidget.py @@ -291,6 +291,11 @@ def __wheel( self, widget, event ) : if not self._makeCurrent() : return False + # We get given wheel events before they're given to the overlay items, + # so we must ignore them so they can be used by the overlay. + if self._qtWidget().itemAt( event.line.p0.x, event.line.p0.y ) is not None : + return False + return self.__viewportGadget.wheelSignal()( self.__viewportGadget, event ) def __visibilityChanged( self, widget ) : From 6ac471250772dc161c41f2801373f32eb7c9cfd5 Mon Sep 17 00:00:00 2001 From: John Haddon Date: Wed, 24 Nov 2021 16:15:57 +0000 Subject: [PATCH 233/243] PathListingWidget : Add `columnAt()` method --- Changes.md | 5 +++++ python/GafferUI/PathListingWidget.py | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/Changes.md b/Changes.md index 375aebb7f56..5597f3822d9 100644 --- a/Changes.md +++ b/Changes.md @@ -11,6 +11,11 @@ Fixes - Viewer : Fixed scroll wheel handling for overlay widgets. In particular this means that the mouse wheel can now be used to scroll through the parameters of the scene inspector. +API +--- + +- PathListingWidget : Added `columnAt()` method. + 0.61.0.0 ======== diff --git a/python/GafferUI/PathListingWidget.py b/python/GafferUI/PathListingWidget.py index 265c360fe0b..e70e2618ec1 100644 --- a/python/GafferUI/PathListingWidget.py +++ b/python/GafferUI/PathListingWidget.py @@ -187,6 +187,17 @@ def pathAt( self, position ) : return self.__pathForIndex( index ) + ## Returns the column being displayed at the specified + # position within the widget. + def columnAt( self, position ) : + + point = self._qtWidget().viewport().mapFrom( + self._qtWidget(), + QtCore.QPoint( position.x, position.y ) + ) + + return self.getColumns()[self._qtWidget().columnAt( point.x())] + ## Sets which paths are currently expanded # using an `IECore.PathMatcher` object. def setExpansion( self, paths ) : From bc493bfb6f5d015ebe94e0c8df765b73c01ecf68 Mon Sep 17 00:00:00 2001 From: Daniel Dresser Date: Fri, 26 Nov 2021 20:10:18 -0800 Subject: [PATCH 234/243] StandardNodeGadget : Add error handling for possible focus hover crash --- src/GafferUI/StandardNodeGadget.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/GafferUI/StandardNodeGadget.cpp b/src/GafferUI/StandardNodeGadget.cpp index 78fc1fb6d7a..a56afebe4ce 100644 --- a/src/GafferUI/StandardNodeGadget.cpp +++ b/src/GafferUI/StandardNodeGadget.cpp @@ -208,6 +208,11 @@ class FocusGadget : public Gadget if( g_pendingHoveredFocus ) { StandardNodeGadget* parentNodeGadget = static_cast( g_pendingHoveredFocus->parent() ); + if( !parentNodeGadget ) + { + IECore::msg( IECore::Msg::Error, "FocusGadget::nodeMouseEntered", "Focus gadget hover timer triggered on unparented FocusGadget" ); + return; + } g_hoveredFocus = g_pendingHoveredFocus; g_hoveredFocusNodePosition = parentNodeGadget->getTransform(); g_pendingHoveredFocus->dirty( DirtyType::Render ); From b002ed2a7a0dc134e9e0f71227c3d9bfa71b5aeb Mon Sep 17 00:00:00 2001 From: John Haddon Date: Mon, 29 Nov 2021 10:47:55 +0000 Subject: [PATCH 235/243] PathListingWidget : Fix unwanted expansion when clicking to select --- Changes.md | 1 + python/GafferUI/PathListingWidget.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index 5597f3822d9..9ade2e0ba12 100644 --- a/Changes.md +++ b/Changes.md @@ -9,6 +9,7 @@ Improvements Fixes ----- +- HierarchyView : Fixed unwanted expansion when an item is selected. - Viewer : Fixed scroll wheel handling for overlay widgets. In particular this means that the mouse wheel can now be used to scroll through the parameters of the scene inspector. API diff --git a/python/GafferUI/PathListingWidget.py b/python/GafferUI/PathListingWidget.py index e70e2618ec1..92d9de67269 100644 --- a/python/GafferUI/PathListingWidget.py +++ b/python/GafferUI/PathListingWidget.py @@ -592,7 +592,7 @@ def __buttonPress( self, widget, event ) : if not selected : self._qtWidget().setCurrentIndex( index ) - self.setSelection( IECore.PathMatcher( [ path ] ) ) + self.setSelection( IECore.PathMatcher( [ path ] ), scrollToFirst=False, expandNonLeaf=False ) return True # The item is selected, Return True so that we have the option of From 92d0eb5db436a0dff37e6d9a4465d0c334a1b6f4 Mon Sep 17 00:00:00 2001 From: Daniel Dresser Date: Fri, 26 Nov 2021 20:10:50 -0800 Subject: [PATCH 236/243] GraphGadget : Handle promoted array plugs while finding active nodes --- Changes.md | 1 + python/GafferUITest/GraphGadgetTest.py | 12 ++++++++++++ src/GafferUI/GraphGadget.cpp | 4 +++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index 5597f3822d9..8e59d31e9c7 100644 --- a/Changes.md +++ b/Changes.md @@ -10,6 +10,7 @@ Fixes ----- - Viewer : Fixed scroll wheel handling for overlay widgets. In particular this means that the mouse wheel can now be used to scroll through the parameters of the scene inspector. +- GraphEditor : Fixed highlighting of input connections for promoted ArrayPlugs. API --- diff --git a/python/GafferUITest/GraphGadgetTest.py b/python/GafferUITest/GraphGadgetTest.py index 270e1063657..c00377e671a 100644 --- a/python/GafferUITest/GraphGadgetTest.py +++ b/python/GafferUITest/GraphGadgetTest.py @@ -1631,6 +1631,18 @@ def testActivePlugsAndNodes( self ) : self.assertEqual( set( nodes ), set( [ box, s["add2"], box["BoxOut1"]["__switch"], box["BoxOut1"] ] ) ) + # Test a box with promoted array plug + s["add7"] = GafferTest.AddNode() + s["add1"]["op1"].setInput( s["add7"]["sum"] ) + box2 = Gaffer.Box.create( s, Gaffer.StandardSet( [ s["add7"] ] ) ) + box2["add7"]["arrayInput"] = Gaffer.ArrayPlug( "arrayInput", Gaffer.Plug.Direction.In, Gaffer.FloatPlug() ) + box2.promotePlug( box2["add7"]["arrayInput"] ) + box2["arrayInput"][0].setInput( s["add5"]["sum"] ) + box2["arrayInput"][1].setInput( s["add6"]["sum"] ) + plugs, nodes = GafferUI.GraphGadget._activePlugsAndNodes( s["add1"]["sum"], c ) + self.assertEqual( set( plugs ), set( [ s["add1"]["op1"], box2["sum"], box2["add7"]["arrayInput"], box2["arrayInput"][0], box2["arrayInput"][1] ] ) ) + self.assertEqual( set( nodes ), set( [ s["add1"], box2, box2["add7"], s["add5"], s["add6"] ] ) ) + # Test Loop s["loopSwitch"] = Gaffer.Switch() diff --git a/src/GafferUI/GraphGadget.cpp b/src/GafferUI/GraphGadget.cpp index 990623dee41..7e65de892b9 100644 --- a/src/GafferUI/GraphGadget.cpp +++ b/src/GafferUI/GraphGadget.cpp @@ -310,7 +310,9 @@ void activeWalkOutput( { if( connectionStart->direction() != Gaffer::Plug::Direction::Out ) { - // An input plug with no input connections isn't affected by anything + // The only possible connections to an input plug with no input connections is if its + // children are connected + activeWalkInput( connectionStart, true, context, canceller, activePlugs, activeNodes, plugContextsVisited ); return; } } From a4e005b5a9240d620021049ef53cf63ec82f04c2 Mon Sep 17 00:00:00 2001 From: John Haddon Date: Mon, 29 Nov 2021 17:46:53 +0000 Subject: [PATCH 237/243] Bump version to 0.60.12.1 --- Changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index 1d310430dae..1cf8f9806ff 100644 --- a/Changes.md +++ b/Changes.md @@ -1,4 +1,4 @@ -0.60.12.x (relative to 0.60.12.0) +0.60.12.1 (relative to 0.60.12.0) ========= Fixes From 35491ada4f8ea9be92e77e12645c8d811dcd028d Mon Sep 17 00:00:00 2001 From: John Haddon Date: Mon, 29 Nov 2021 17:59:35 +0000 Subject: [PATCH 238/243] Bump version to 0.61.1.0 --- Changes.md | 2 +- SConstruct | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Changes.md b/Changes.md index 75400b71be4..a9ab03a46a9 100644 --- a/Changes.md +++ b/Changes.md @@ -1,4 +1,4 @@ -0.61.x.x (relative to 0.61.0.0) +0.61.1.0 (relative to 0.61.0.0) ======== Improvements diff --git a/SConstruct b/SConstruct index 3c435937d34..7ed1299bab2 100644 --- a/SConstruct +++ b/SConstruct @@ -49,7 +49,7 @@ import distutils.dir_util gafferMilestoneVersion = 0 # for announcing major milestones - may contain all of the below gafferMajorVersion = 61 # backwards-incompatible changes -gafferMinorVersion = 0 # new backwards-compatible features +gafferMinorVersion = 1 # new backwards-compatible features gafferPatchVersion = 0 # bug fixes # All of the following must be considered when determining From 562ba67596a5fc8240fd0e54590d2221ec590a8a Mon Sep 17 00:00:00 2001 From: Andrew Kaufman Date: Tue, 30 Nov 2021 11:25:49 -0800 Subject: [PATCH 239/243] Fixed patch version This should have been bumped _before_ 0.60.12.1 was tagged. Not sure if we want to force re-tag or release 0.60.12.2 (making this commit a bit silly) --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index be7914e703e..e25babe4eb1 100644 --- a/SConstruct +++ b/SConstruct @@ -50,7 +50,7 @@ import distutils.dir_util gafferMilestoneVersion = 0 # for announcing major milestones - may contain all of the below gafferMajorVersion = 60 # backwards-incompatible changes gafferMinorVersion = 12 # new backwards-compatible features -gafferPatchVersion = 0 # bug fixes +gafferPatchVersion = 1 # bug fixes # All of the following must be considered when determining # whether or not a change is backwards-compatible From baa41ccfbe98de57d320f275d14336067f6427dc Mon Sep 17 00:00:00 2001 From: John Haddon Date: Wed, 1 Dec 2021 09:36:05 +0000 Subject: [PATCH 240/243] CI : Check SConstruct version matches tag version --- .github/workflows/main/setBuildVars.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/main/setBuildVars.py b/.github/workflows/main/setBuildVars.py index 7d61d5a5b3b..6f72be2b78a 100755 --- a/.github/workflows/main/setBuildVars.py +++ b/.github/workflows/main/setBuildVars.py @@ -113,6 +113,23 @@ releaseId = r.id break +if releaseId : + + # Check that the version specified by the SConstruct matches the + # version in the tag. + versions = {} + versionRe = re.compile( r"^gaffer(.*)Version = (\d+)") + with open( "SConstruct" ) as sconstruct : + for line in sconstruct.readlines() : + versionMatch = versionRe.match( line ) + if versionMatch : + versions[versionMatch.group( 1 )] = versionMatch.group( 2 ) + + version = "{Milestone}.{Major}.{Minor}.{Patch}".format( **versions ) + if version != tag : + sys.stderr.write( "Tag \"{}\" does not match SConstruct version \"{}\"\n".format( tag, version ) ) + sys.exit( 1 ) + ## Build Name # We have a couple of naming conventions for builds, depending on the nature of the trigger. From 74b8f9ccadbc611afe99adc9034b82fe10b9064e Mon Sep 17 00:00:00 2001 From: John Haddon Date: Wed, 1 Dec 2021 10:16:30 +0000 Subject: [PATCH 241/243] Arnold Renderer : Destroy AOV shaders before universe We had been getting away with this up till now, but Arnold 7 is less forgiving and crashes when a node is destroyed after its universe. Strangely, our existing `RendererTest.testAOVShaders` didn't catch this crash, but it reproduced every time when rendering via the GUI. --- Changes.md | 8 ++++++++ src/IECoreArnold/Renderer.cpp | 1 + 2 files changed, 9 insertions(+) diff --git a/Changes.md b/Changes.md index a9ab03a46a9..1fc290e25ee 100644 --- a/Changes.md +++ b/Changes.md @@ -1,3 +1,11 @@ +0.61.x.x (relative to 0.61.1.0) +======== + +Fixes +----- + +- InteractiveArnoldRender : Fixed Arnold 7 crash when stopping a render with global AOV shaders. + 0.61.1.0 (relative to 0.61.0.0) ======== diff --git a/src/IECoreArnold/Renderer.cpp b/src/IECoreArnold/Renderer.cpp index be77835eafe..3e935d97d32 100644 --- a/src/IECoreArnold/Renderer.cpp +++ b/src/IECoreArnold/Renderer.cpp @@ -3106,6 +3106,7 @@ class ArnoldGlobals // Delete nodes we own before universe is destroyed. m_shaderCache.reset(); m_outputs.clear(); + m_aovShaders.clear(); m_colorManager.reset(); m_atmosphere.reset(); m_background.reset(); From 49b6772e0602fc3e06f8dd6417325c5edaafbbf9 Mon Sep 17 00:00:00 2001 From: Daniel Dresser Date: Fri, 3 Dec 2021 19:28:14 -0800 Subject: [PATCH 242/243] Doc : ControlsAndShortcuts : Add doc for Luminance hotkey --- doc/source/Interface/ControlsAndShortcuts/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/Interface/ControlsAndShortcuts/index.md b/doc/source/Interface/ControlsAndShortcuts/index.md index e9c539f8d86..defd3d87e3a 100644 --- a/doc/source/Interface/ControlsAndShortcuts/index.md +++ b/doc/source/Interface/ControlsAndShortcuts/index.md @@ -365,6 +365,7 @@ Isolate red channel :kbd:`R` Isolate green channel :kbd:`G` Isolate blue channel :kbd:`B` Isolate alpha channel :kbd:`A` +View luminance of RGB :kbd:`L` Previous layer :kbd:`PgDn` Next layer :kbd:`PgUp` Center image at 1:1 scale :kbd:`Home` From 4c7596f522294cada5aa4d9a93c759419ef5e53b Mon Sep 17 00:00:00 2001 From: John Haddon Date: Tue, 7 Dec 2021 09:58:04 +0000 Subject: [PATCH 243/243] Bump version to 0.61.1.1 --- Changes.md | 2 +- SConstruct | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Changes.md b/Changes.md index 1fc290e25ee..99d93696d9a 100644 --- a/Changes.md +++ b/Changes.md @@ -1,4 +1,4 @@ -0.61.x.x (relative to 0.61.1.0) +0.61.1.1 (relative to 0.61.1.0) ======== Fixes diff --git a/SConstruct b/SConstruct index 7ed1299bab2..9f0625601dd 100644 --- a/SConstruct +++ b/SConstruct @@ -50,7 +50,7 @@ import distutils.dir_util gafferMilestoneVersion = 0 # for announcing major milestones - may contain all of the below gafferMajorVersion = 61 # backwards-incompatible changes gafferMinorVersion = 1 # new backwards-compatible features -gafferPatchVersion = 0 # bug fixes +gafferPatchVersion = 1 # bug fixes # All of the following must be considered when determining # whether or not a change is backwards-compatible

    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�=~u7{;5RY>bLIHy9b0N`1J{XP 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�=~u7{;5RY>bLIHy9b0N`1J{XP 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