diff options
Diffstat (limited to 'src/aftereffects')
37 files changed, 12261 insertions, 0 deletions
diff --git a/src/aftereffects/DrawbotBot.cpp b/src/aftereffects/DrawbotBot.cpp new file mode 100644 index 0000000..3d6cee6 --- /dev/null +++ b/src/aftereffects/DrawbotBot.cpp @@ -0,0 +1,239 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "DrawbotBot.h" + + +DrawbotBot::DrawbotBot(struct SPBasicSuite *pica_basicP, PF_ContextH contextH, A_long appl_id) : + suites(pica_basicP), + _appl_id(appl_id), + _suiteP(NULL), + _drawbot_ref(NULL), + _supplier_ref(NULL), + _surface_ref(NULL) +{ + suites.EffectCustomUISuite1()->PF_GetDrawingReference(contextH, &_drawbot_ref); + + _suiteP = suites.SupplierSuiteCurrent(); + + suites.DrawbotSuiteCurrent()->GetSupplier(_drawbot_ref, &_supplier_ref); + suites.DrawbotSuiteCurrent()->GetSurface(_drawbot_ref, &_surface_ref); + + _brush_pos.x = 0.f; + _brush_pos.y = 0.f; + + SetColor(PF_App_Color_TEXT); + + _suiteP->GetDefaultFontSize(_supplier_ref, &_font_size); +} + + +DrawbotBot::~DrawbotBot() +{ + +} + + +void DrawbotBot::SetColor(PF_App_ColorType color, float a) +{ + if(_appl_id == 'FXTC') + { + PF_App_Color app_color; + + suites.AppSuite4()->PF_AppGetColor(color, &app_color); + + _brush_color.red = (float)app_color.red / (float)PF_MAX_CHAN16; + _brush_color.green = (float)app_color.green / (float)PF_MAX_CHAN16; + _brush_color.blue = (float)app_color.blue / (float)PF_MAX_CHAN16; + } + else + { + // Premiere isn't doing this properly, so I'll have to. + // Only supporting the colors I'm actually using at the moment. + switch(color) + { + case PF_App_Color_BLACK: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.f; + break; + + case PF_App_Color_WHITE: + _brush_color.red = _brush_color.green = _brush_color.blue = 1.f; + break; + + case PF_App_Color_RED: + _brush_color.red = 1.f; + _brush_color.green = _brush_color.blue = 0.f; + break; + + case PF_App_Color_TEXT_DISABLED: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.6f; + break; + + case PF_App_Color_SHADOW: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.3f; + break; + + case PF_App_Color_HILITE: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.8f; + break; + + case PF_App_Color_LIGHT_TINGE: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.7f; + break; + + case PF_App_Color_BUTTON_FILL: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.5f; + break; + + case PF_App_Color_BUTTON_PRESSED_FILL: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.3f; + break; + + case PF_App_Color_PANEL_BACKGROUND: + { + PF_App_Color app_color; + suites.AppSuite4()->PF_AppGetBgColor(&app_color); + + _brush_color.red = (float)app_color.red / (float)65535; + _brush_color.green = (float)app_color.green / (float)65535; + _brush_color.blue = (float)app_color.blue / (float)65535; + } + break; + + default: + _brush_color.red = _brush_color.green = _brush_color.blue = 0.9f; + break; + } + } + + _brush_color.alpha = a; +} + + +void DrawbotBot::DrawLineTo(float x, float y, float brush_size) +{ + DRAWBOT_PathP pathP(_suiteP, _supplier_ref); + DRAWBOT_PenP penP(_suiteP, _supplier_ref, &_brush_color, brush_size); + + suites.PathSuiteCurrent()->MoveTo(pathP.Get(), _brush_pos.x, _brush_pos.y); + + suites.PathSuiteCurrent()->LineTo(pathP.Get(), x, y); + + suites.SurfaceSuiteCurrent()->StrokePath(_surface_ref, penP.Get(), pathP.Get()); + + MoveTo(x, y); +} + + +void DrawbotBot::DrawRect(float w, float h, float brush_size) const +{ + DRAWBOT_PathP pathP(_suiteP, _supplier_ref); + DRAWBOT_PenP penP(_suiteP, _supplier_ref, &_brush_color, brush_size); + + DRAWBOT_RectF32 rect; + + rect.left = _brush_pos.x - 0.5f; + rect.top = _brush_pos.y - 0.5f; + rect.width = w; + rect.height = h; + + suites.PathSuiteCurrent()->AddRect(pathP.Get(), &rect); + + suites.SurfaceSuiteCurrent()->StrokePath(_surface_ref, penP.Get(), pathP.Get()); +} + +void DrawbotBot::PaintRect(float w, float h) const +{ + DRAWBOT_RectF32 rect; + + rect.left = _brush_pos.x; + rect.top = _brush_pos.y; + rect.width = w; + rect.height = h; + + suites.SurfaceSuiteCurrent()->PaintRect(_surface_ref, &_brush_color, &rect); +} + + +void DrawbotBot::PaintTriangle(float w, float h) const +{ + DRAWBOT_PathP pathP(_suiteP, _supplier_ref); + DRAWBOT_BrushP brushP(_suiteP, _supplier_ref, &_brush_color); + + suites.PathSuiteCurrent()->MoveTo(pathP.Get(), _brush_pos.x, _brush_pos.y); + + suites.PathSuiteCurrent()->LineTo(pathP.Get(), _brush_pos.x + w, _brush_pos.y); + + suites.PathSuiteCurrent()->LineTo(pathP.Get(), _brush_pos.x + (w / 2.f), + _brush_pos.y + h); + + suites.PathSuiteCurrent()->Close(pathP.Get()); + + suites.SurfaceSuiteCurrent()->FillPath(_surface_ref, brushP.Get(), pathP.Get(), + kDRAWBOT_FillType_Default); +} + + +void DrawbotBot::DrawString( + const DRAWBOT_UTF16Char *str, + DRAWBOT_TextAlignment align, + DRAWBOT_TextTruncation truncate, + float truncation_width) const +{ + DRAWBOT_BrushP brushP(_suiteP, _supplier_ref, &_brush_color); + DRAWBOT_FontP fontP(_suiteP, _supplier_ref, _font_size); + + suites.SurfaceSuiteCurrent()->DrawString(_surface_ref, brushP.Get(), fontP.Get(), str, + &_brush_pos, align, truncate, truncation_width); +} + + +void DrawbotBot::DrawString( + const char *str, + DRAWBOT_TextAlignment align, + DRAWBOT_TextTruncation truncate, + float truncation_width) const +{ + DRAWBOT_UTF16Char u_str[256] = {'\0'}; + + DRAWBOT_UTF16Char *u = u_str; + const char *c = str; + + if(*c != '\0') + { + do{ + *u++ = *c++; + + }while(*c != '\0'); + + *u = '\0'; + } + + DrawString(u_str, align, truncate, truncation_width); +}
\ No newline at end of file diff --git a/src/aftereffects/DrawbotBot.h b/src/aftereffects/DrawbotBot.h new file mode 100644 index 0000000..bd55ace --- /dev/null +++ b/src/aftereffects/DrawbotBot.h @@ -0,0 +1,89 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 _DRAWBOTBOT_H_ +#define _DRAWBOTBOT_H_ + +#include "AEGP_SuiteHandler.h" + + +class DrawbotBot +{ + public: + + DrawbotBot(struct SPBasicSuite *pica_basicP, PF_ContextH contextH, A_long appl_id); + ~DrawbotBot(); + + void MoveTo(DRAWBOT_PointF32 pos) { _brush_pos = pos; } + void MoveTo(float x, float y) { _brush_pos.x = x; _brush_pos.y = y; } + void Move(float x = 0, float y = 0) { _brush_pos.x += x; _brush_pos.y += y; } + + void SetColor(PF_App_ColorType color, float a = 1.f); + void SetColor(DRAWBOT_ColorRGBA color) { _brush_color = color; } + void SetColor(float r, float g, float b, float a = 1.f) + { _brush_color.red = r; _brush_color.green = g; + _brush_color.blue = b; _brush_color.alpha = a; } + + DRAWBOT_PointF32 Pos() const { return _brush_pos; } + float FontSize() const { return _font_size; } + + void DrawLineTo(float x, float y, float brush_size = 0.5f); + + void DrawRect(float w, float h, float brush_size = 0.5f) const; + void PaintRect(float w, float h) const; + + void PaintTriangle(float w, float h) const; + + void DrawString(const DRAWBOT_UTF16Char *str, + DRAWBOT_TextAlignment align = kDRAWBOT_TextAlignment_Default, + DRAWBOT_TextTruncation truncate = kDRAWBOT_TextTruncation_None, + float truncation_width = 0.f) const; + void DrawString(const char *str, + DRAWBOT_TextAlignment align = kDRAWBOT_TextAlignment_Default, + DRAWBOT_TextTruncation truncate = kDRAWBOT_TextTruncation_None, + float truncation_width = 0.f) const; + + + private: + AEGP_SuiteHandler suites; + A_long _appl_id; + + DRAWBOT_SupplierSuiteCurrent *_suiteP; + + DRAWBOT_DrawRef _drawbot_ref; + DRAWBOT_SupplierRef _supplier_ref; + DRAWBOT_SurfaceRef _surface_ref; + + DRAWBOT_PointF32 _brush_pos; + DRAWBOT_ColorRGBA _brush_color; + float _font_size; +}; + + +#endif // _DRAWBOTBOT_H_
\ No newline at end of file diff --git a/src/aftereffects/OpenColorIO_AE.cpp b/src/aftereffects/OpenColorIO_AE.cpp new file mode 100755 index 0000000..cd89091 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE.cpp @@ -0,0 +1,1133 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE.h" + +#include "OpenColorIO_AE_Context.h" +#include "OpenColorIO_AE_Dialogs.h" + +#include "AEGP_SuiteHandler.h" + +// this lives in OpenColorIO_AE_UI.cpp +std::string GetProjectDir(PF_InData *in_data); + + +static PF_Err About( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + PF_SPRINTF( out_data->return_msg, + "OpenColorIO\r\r" + "opencolorio.org\r" + "version %s", + OCIO::GetVersion() ); + + return PF_Err_NONE; +} + + +static PF_Err GlobalSetup( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + out_data->my_version = PF_VERSION( MAJOR_VERSION, + MINOR_VERSION, + BUG_VERSION, + STAGE_VERSION, + BUILD_VERSION); + + out_data->out_flags = PF_OutFlag_DEEP_COLOR_AWARE | + PF_OutFlag_PIX_INDEPENDENT | + PF_OutFlag_CUSTOM_UI | + PF_OutFlag_USE_OUTPUT_EXTENT | + PF_OutFlag_I_HAVE_EXTERNAL_DEPENDENCIES; + + out_data->out_flags2 = PF_OutFlag2_PARAM_GROUP_START_COLLAPSED_FLAG | + PF_OutFlag2_SUPPORTS_SMART_RENDER | + PF_OutFlag2_FLOAT_COLOR_AWARE | + PF_OutFlag2_PPRO_DO_NOT_CLONE_SEQUENCE_DATA_FOR_RENDER; + + + GlobalSetup_GL(); + + + if(in_data->appl_id == 'PrMr') + { + PF_PixelFormatSuite1 *pfS = NULL; + + in_data->pica_basicP->AcquireSuite(kPFPixelFormatSuite, + kPFPixelFormatSuiteVersion1, + (const void **)&pfS); + + if(pfS) + { + pfS->ClearSupportedPixelFormats(in_data->effect_ref); + + pfS->AddSupportedPixelFormat(in_data->effect_ref, + PrPixelFormat_BGRA_4444_32f_Linear); + + in_data->pica_basicP->ReleaseSuite(kPFPixelFormatSuite, + kPFPixelFormatSuiteVersion1); + } + } + + return PF_Err_NONE; +} + + +static PF_Err GlobalSetdown( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + GlobalSetdown_GL(); + + return PF_Err_NONE; +} + + +static PF_Err ParamsSetup( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output) +{ + PF_Err err = PF_Err_NONE; + PF_ParamDef def; + + + // readout + AEFX_CLR_STRUCT(def); + // we can time_vary once we're willing to print and scan ArbData text + def.flags = PF_ParamFlag_CANNOT_TIME_VARY; + + ArbNewDefault(in_data, out_data, NULL, &def.u.arb_d.dephault); + + PF_ADD_ARBITRARY("OCIO", + UI_CONTROL_WIDTH, + UI_CONTROL_HEIGHT, + PF_PUI_CONTROL, + def.u.arb_d.dephault, + OCIO_DATA, + NULL); + + + AEFX_CLR_STRUCT(def); + PF_ADD_CHECKBOX("", + "Use GPU", + FALSE, + 0, + OCIO_GPU_ID); + + + out_data->num_params = OCIO_NUM_PARAMS; + + // register custom UI + if (!err) + { + PF_CustomUIInfo ci; + + AEFX_CLR_STRUCT(ci); + + ci.events = PF_CustomEFlag_EFFECT; + + ci.comp_ui_width = ci.comp_ui_height = 0; + ci.comp_ui_alignment = PF_UIAlignment_NONE; + + ci.layer_ui_width = 0; + ci.layer_ui_height = 0; + ci.layer_ui_alignment = PF_UIAlignment_NONE; + + ci.preview_ui_width = 0; + ci.preview_ui_height = 0; + ci.layer_ui_alignment = PF_UIAlignment_NONE; + + err = (*(in_data->inter.register_ui))(in_data->effect_ref, &ci); + } + + + return err; +} + +static PF_Err SequenceSetup( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + PF_Err err = PF_Err_NONE; + + SequenceData *seq_data = NULL; + + // set up sequence data + if( (in_data->sequence_data == NULL) ) + { + out_data->sequence_data = PF_NEW_HANDLE( sizeof(SequenceData) ); + + seq_data = (SequenceData *)PF_LOCK_HANDLE(out_data->sequence_data); + + seq_data->path[0] = '\0'; + seq_data->relative_path[0] = '\0'; + } + else // reset pre-existing sequence data + { + if( PF_GET_HANDLE_SIZE(in_data->sequence_data) != sizeof(SequenceData) ) + { + PF_RESIZE_HANDLE(sizeof(SequenceData), &in_data->sequence_data); + } + + seq_data = (SequenceData *)PF_LOCK_HANDLE(in_data->sequence_data); + } + + + seq_data->status = STATUS_UNKNOWN; + seq_data->gpu_err = GPU_ERR_NONE; + seq_data->prem_status = PREMIERE_UNKNOWN; + seq_data->context = NULL; + + + PF_UNLOCK_HANDLE(in_data->sequence_data); + + return err; +} + + +static PF_Err SequenceSetdown( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + PF_Err err = PF_Err_NONE; + + if(in_data->sequence_data) + { + SequenceData *seq_data = (SequenceData *)PF_LOCK_HANDLE(out_data->sequence_data); + + if(seq_data->context) + { + delete seq_data->context; + + seq_data->status = STATUS_UNKNOWN; + seq_data->gpu_err = GPU_ERR_NONE; + seq_data->prem_status = PREMIERE_UNKNOWN; + seq_data->context = NULL; + } + + PF_DISPOSE_HANDLE(in_data->sequence_data); + } + + return err; +} + + +static PF_Err SequenceFlatten( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + PF_Err err = PF_Err_NONE; + + if(in_data->sequence_data) + { + SequenceData *seq_data = (SequenceData *)PF_LOCK_HANDLE(in_data->sequence_data); + + if(seq_data->context) + { + delete seq_data->context; + + seq_data->status = STATUS_UNKNOWN; + seq_data->gpu_err = GPU_ERR_NONE; + seq_data->prem_status = PREMIERE_UNKNOWN; + seq_data->context = NULL; + } + + PF_UNLOCK_HANDLE(in_data->sequence_data); + } + + return err; +} + + + +static PF_Boolean IsEmptyRect(const PF_LRect *r){ + return (r->left >= r->right) || (r->top >= r->bottom); +} + +#ifndef mmin + #define mmin(a,b) ((a) < (b) ? (a) : (b)) + #define mmax(a,b) ((a) > (b) ? (a) : (b)) +#endif + + +static void UnionLRect(const PF_LRect *src, PF_LRect *dst) +{ + if (IsEmptyRect(dst)) { + *dst = *src; + } else if (!IsEmptyRect(src)) { + dst->left = mmin(dst->left, src->left); + dst->top = mmin(dst->top, src->top); + dst->right = mmax(dst->right, src->right); + dst->bottom = mmax(dst->bottom, src->bottom); + } +} + + +static PF_Err PreRender( + PF_InData *in_data, + PF_OutData *out_data, + PF_PreRenderExtra *extra) +{ + PF_Err err = PF_Err_NONE; + PF_RenderRequest req = extra->input->output_request; + PF_CheckoutResult in_result; + + req.preserve_rgb_of_zero_alpha = TRUE; + + ERR(extra->cb->checkout_layer( in_data->effect_ref, + OCIO_INPUT, + OCIO_INPUT, + &req, + in_data->current_time, + in_data->time_step, + in_data->time_scale, + &in_result)); + + + UnionLRect(&in_result.result_rect, &extra->output->result_rect); + UnionLRect(&in_result.max_result_rect, &extra->output->max_result_rect); + + return err; +} + +#pragma mark- + + +template <typename InFormat, typename OutFormat> +static inline OutFormat Convert(InFormat in); + +template <> +static inline float Convert<A_u_char, float>(A_u_char in) +{ + return (float)in / (float)PF_MAX_CHAN8; +} + +template <> +static inline float Convert<A_u_short, float>(A_u_short in) +{ + return (float)in / (float)PF_MAX_CHAN16; +} + +template <> +static inline float Convert<float, float>(float in) +{ + return in; +} + +static inline float Clamp(float in) +{ + return (in > 1.f ? 1.f : in < 0.f ? 0.f : in); +} + +template <> +static inline A_u_char Convert<float, A_u_char>(float in) +{ + return ( Clamp(in) * (float)PF_MAX_CHAN8 ) + 0.5f; +} + +template <> +static inline A_u_short Convert<float, A_u_short>(float in) +{ + return ( Clamp(in) * (float)PF_MAX_CHAN16 ) + 0.5f; +} + + + +typedef struct { + PF_InData *in_data; + void *in_buffer; + A_long in_rowbytes; + void *out_buffer; + A_long out_rowbytes; + int width; +} IterateData; + +template <typename InFormat, typename OutFormat> +static PF_Err CopyWorld_Iterate( + void *refconPV, + A_long thread_indexL, + A_long i, + A_long iterationsL) +{ + PF_Err err = PF_Err_NONE; + + IterateData *i_data = (IterateData *)refconPV; + PF_InData *in_data = i_data->in_data; + + InFormat *in_pix = (InFormat *)((char *)i_data->in_buffer + (i * i_data->in_rowbytes)); + OutFormat *out_pix = (OutFormat *)((char *)i_data->out_buffer + (i * i_data->out_rowbytes)); + +#ifdef NDEBUG + if(thread_indexL == 0) + err = PF_ABORT(in_data); +#endif + + for(int x=0; x < i_data->width; x++) + { + *out_pix++ = Convert<InFormat, OutFormat>( *in_pix++ ); + } + + return err; +} + + +typedef struct { + PF_InData *in_data; + void *in_buffer; + A_long in_rowbytes; + int width; +} SwapData; + +static PF_Err Swap_Iterate( + void *refconPV, + A_long thread_indexL, + A_long i, + A_long iterationsL) +{ + PF_Err err = PF_Err_NONE; + + SwapData *i_data = (SwapData *)refconPV; + PF_InData *in_data = i_data->in_data; + + PF_PixelFloat *pix = (PF_PixelFloat *)((char *)i_data->in_buffer + (i * i_data->in_rowbytes)); + +#ifdef NDEBUG + if(thread_indexL == 0) + err = PF_ABORT(in_data); +#endif + + for(int x=0; x < i_data->width; x++) + { + float temp; + + // BGRA -> ARGB + temp = pix->alpha; // BGRA temp B + pix->alpha = pix->blue; // AGRA temp B + pix->blue = temp; // AGRB temp B + temp = pix->red; // AGRB temp G + pix->red = pix->green; // ARRB temp G + pix->green = temp; // ARGB temp G + + pix++; + } + + return err; +} + + +typedef struct { + PF_InData *in_data; + void *buffer; + A_long rowbytes; + int width; + OpenColorIO_AE_Context *context; +} ProcessData; + +static PF_Err Process_Iterate( + void *refconPV, + A_long thread_indexL, + A_long i, + A_long iterationsL) +{ + PF_Err err = PF_Err_NONE; + + ProcessData *i_data = (ProcessData *)refconPV; + PF_InData *in_data = i_data->in_data; + + PF_PixelFloat *pix = (PF_PixelFloat *)((char *)i_data->buffer + (i * i_data->rowbytes)); + +#ifdef NDEBUG + if(thread_indexL == 0) + err = PF_ABORT(in_data); +#endif + + try + { + float *rOut = &pix->red; + + OCIO::PackedImageDesc img(rOut, i_data->width, 1, 4); + + i_data->context->processor()->apply(img); + } + catch(...) + { + err = PF_Err_INTERNAL_STRUCT_DAMAGED; + } + + + return err; +} + + +// two functions below to get Premiere to run my functions multi-threaded +// because they couldn't bother to give me PF_Iterate8Suite1->iterate_generic + +typedef PF_Err (*GenericIterator)(void *refconPV, + A_long thread_indexL, + A_long i, + A_long iterationsL); + +typedef struct { + PF_InData *in_data; + GenericIterator fn_func; + void *refconPV; + A_long height; +} FakeData; + +static PF_Err MyFakeIterator( + void *refcon, + A_long x, + A_long y, + PF_Pixel *in, + PF_Pixel *out) +{ + PF_Err err = PF_Err_NONE; + + FakeData *i_data = (FakeData *)refcon; + PF_InData *in_data = i_data->in_data; + + err = i_data->fn_func(i_data->refconPV, 1, y, i_data->height); + + return err; +} + +typedef PF_Err (*GenericIterateFunc)( + A_long iterationsL, + void *refconPV, + GenericIterator fn_func); + +static PF_Err MyGenericIterateFunc( + A_long iterationsL, + void *refconPV, + GenericIterator fn_func) +{ + PF_Err err = PF_Err_NONE; + + PF_InData **in_dataH = (PF_InData **)refconPV; // always put PF_InData first + PF_InData *in_data = *in_dataH; + + PF_Iterate8Suite1 *i8sP = NULL; + in_data->pica_basicP->AcquireSuite(kPFIterate8Suite, kPFIterate8SuiteVersion1, (const void **)&i8sP); + + if(i8sP && i8sP->iterate) + { + PF_EffectWorld fake_world; + PF_NEW_WORLD(1, iterationsL, PF_NewWorldFlag_NONE, &fake_world); + + + FakeData i_data = { in_data, fn_func, refconPV, iterationsL }; + + err = i8sP->iterate(in_data, 0, iterationsL, &fake_world, NULL, + (void *)&i_data, MyFakeIterator, &fake_world); + + + PF_DISPOSE_WORLD(&fake_world); + + in_data->pica_basicP->ReleaseSuite(kPFIterate8Suite, kPFIterate8SuiteVersion1); + } + else + { + for(int i=0; i < iterationsL && !err; i++) + { + err = fn_func(refconPV, 0, i, iterationsL); + } + } + + return err; +} + + +static PF_Err DoRender( + PF_InData *in_data, + PF_EffectWorld *input, + PF_ParamDef *OCIO_data, + PF_ParamDef *OCIO_gpu, + PF_OutData *out_data, + PF_EffectWorld *output) +{ + PF_Err err = PF_Err_NONE; + + AEGP_SuiteHandler suites(in_data->pica_basicP); + + PF_PixelFormatSuite1 *pfS = NULL; + PF_WorldSuite2 *wsP = NULL; + + err = in_data->pica_basicP->AcquireSuite(kPFPixelFormatSuite, kPFPixelFormatSuiteVersion1, (const void **)&pfS); + err = in_data->pica_basicP->AcquireSuite(kPFWorldSuite, kPFWorldSuiteVersion2, (const void **)&wsP); + + if(!err) + { + ArbitraryData *arb_data = (ArbitraryData *)PF_LOCK_HANDLE(OCIO_data->u.arb_d.value); + SequenceData *seq_data = (SequenceData *)PF_LOCK_HANDLE(in_data->sequence_data); + + try + { + seq_data->status = STATUS_OK; + + std::string dir = GetProjectDir(in_data); + + // must always verify that our context lines up with the parameters + // things like undo can change them without notice + if(seq_data->context != NULL) + { + bool verified = seq_data->context->Verify(arb_data, dir); + + if(!verified) + { + delete seq_data->context; + + seq_data->status = STATUS_UNKNOWN; + seq_data->context = NULL; + } + } + + + if(arb_data->action == OCIO_ACTION_NONE) + { + seq_data->status = STATUS_NO_FILE; + } + else if(seq_data->context == NULL) + { + seq_data->source = arb_data->source; + + if(arb_data->source == OCIO_SOURCE_ENVIRONMENT) + { + char *file = std::getenv("OCIO"); + + if(file == NULL) + seq_data->status = STATUS_FILE_MISSING; + } + else if(arb_data->source == OCIO_SOURCE_STANDARD) + { + std::string path = GetStdConfigPath(arb_data->path); + + if( path.empty() ) + { + seq_data->status = STATUS_FILE_MISSING; + } + else + { + strncpy(seq_data->path, arb_data->path, ARB_PATH_LEN); + strncpy(seq_data->relative_path, arb_data->relative_path, ARB_PATH_LEN); + } + } + else if(arb_data->source == OCIO_SOURCE_CUSTOM) + { + Path absolute_path(arb_data->path, dir); + Path relative_path(arb_data->relative_path, dir); + Path seq_absolute_path(seq_data->path, dir); + Path seq_relative_path(seq_data->relative_path, dir); + + if( absolute_path.exists() ) + { + seq_data->status = STATUS_USING_ABSOLUTE; + + strncpy(seq_data->path, absolute_path.full_path().c_str(), ARB_PATH_LEN); + strncpy(seq_data->relative_path, absolute_path.relative_path(false).c_str(), ARB_PATH_LEN); + } + else if( relative_path.exists() ) + { + seq_data->status = STATUS_USING_RELATIVE; + + strncpy(seq_data->path, relative_path.full_path().c_str(), ARB_PATH_LEN); + strncpy(seq_data->relative_path, relative_path.relative_path(false).c_str(), ARB_PATH_LEN); + } + else if( seq_absolute_path.exists() ) + { + // In some cases, we may have a good path in sequence options but not in + // the arbitrary parameter. An alert will not be provided because it is the + // sequence options that get checked. Therefore, we have to use the sequence + // options as a last resort. We copy the path back to arb data, but the change + // should not stick. + seq_data->status = STATUS_USING_ABSOLUTE; + + strncpy(arb_data->path, seq_absolute_path.full_path().c_str(), ARB_PATH_LEN); + strncpy(arb_data->relative_path, seq_absolute_path.relative_path(false).c_str(), ARB_PATH_LEN); + } + else if( seq_relative_path.exists() ) + { + seq_data->status = STATUS_USING_RELATIVE; + + strncpy(arb_data->path, seq_relative_path.full_path().c_str(), ARB_PATH_LEN); + strncpy(arb_data->relative_path, seq_relative_path.relative_path(false).c_str(), ARB_PATH_LEN); + } + else + seq_data->status = STATUS_FILE_MISSING; + } + + + if(seq_data->status != STATUS_FILE_MISSING) + { + seq_data->context = new OpenColorIO_AE_Context(arb_data, dir); + } + } + } + catch(...) + { + seq_data->status = STATUS_OCIO_ERROR; + } + + + if(seq_data->status == STATUS_FILE_MISSING || seq_data->status == STATUS_OCIO_ERROR) + { + err = PF_Err_INTERNAL_STRUCT_DAMAGED; + } + + + if(!err) + { + if(seq_data->context == NULL || seq_data->context->processor()->isNoOp()) + { + err = PF_COPY(input, output, NULL, NULL); + } + else + { + GenericIterateFunc iterate_generic = suites.Iterate8Suite1()->iterate_generic; + + if(iterate_generic == NULL) + iterate_generic = MyGenericIterateFunc; // thanks a lot, Premiere + + // OpenColorIO only does float worlds + // might have to create one + PF_EffectWorld *float_world = NULL; + + PF_EffectWorld temp_world_data; + PF_EffectWorld *temp_world = NULL; + PF_Handle temp_worldH = NULL; + + + PF_PixelFormat format; + wsP->PF_GetPixelFormat(output, &format); + + if(in_data->appl_id == 'PrMr' && pfS) + { + // the regular world suite function will give a bogus value for Premiere + pfS->GetPixelFormat(output, (PrPixelFormat *)&format); + + seq_data->prem_status = (format == PrPixelFormat_BGRA_4444_32f_Linear ? + PREMIERE_LINEAR : PREMIERE_NON_LINEAR); + } + + + A_Boolean use_gpu = OCIO_gpu->u.bd.value; + seq_data->gpu_err = GPU_ERR_NONE; + A_long non_padded_rowbytes = sizeof(PF_PixelFloat) * output->width; + + + if(format == PF_PixelFormat_ARGB128 && + (!use_gpu || output->rowbytes == non_padded_rowbytes)) // GPU doesn't do padding + { + err = PF_COPY(input, output, NULL, NULL); + + float_world = output; + } + else + { + temp_worldH = PF_NEW_HANDLE(non_padded_rowbytes * (output->height + 1)); // little extra because we go over by a channel + + if(temp_worldH) + { + temp_world_data.data = (PF_PixelPtr)PF_LOCK_HANDLE(temp_worldH); + + temp_world_data.width = output->width; + temp_world_data.height = output->height; + temp_world_data.rowbytes = non_padded_rowbytes; + + float_world = temp_world = &temp_world_data; + + // convert to new temp float world + IterateData i_data = { in_data, input->data, input->rowbytes, + float_world->data, float_world->rowbytes, + float_world->width * 4 }; + + if(format == PF_PixelFormat_ARGB32 || format == PrPixelFormat_BGRA_4444_8u) + { + err = iterate_generic(float_world->height, &i_data, + CopyWorld_Iterate<A_u_char, float>); + } + else if(format == PF_PixelFormat_ARGB64) + { + err = iterate_generic(float_world->height, &i_data, + CopyWorld_Iterate<A_u_short, float>); + } + else if(format == PF_PixelFormat_ARGB128 || + format == PrPixelFormat_BGRA_4444_32f || + format == PrPixelFormat_BGRA_4444_32f_Linear) + { + err = iterate_generic(float_world->height, &i_data, + CopyWorld_Iterate<float, float>); + } + + // switch BGRA to ARGB for premiere + if(!err && + (format == PrPixelFormat_BGRA_4444_8u || + format == PrPixelFormat_BGRA_4444_32f_Linear || + format == PrPixelFormat_BGRA_4444_32f)) + { + SwapData s_data = { in_data, float_world->data, + float_world->rowbytes, float_world->width }; + + err = iterate_generic(float_world->height, &s_data, + Swap_Iterate); + } + } + else + err = PF_Err_OUT_OF_MEMORY; + } + + + if(!err) + { + bool gpu_rendered = false; + + // OpenColorIO processing + if(use_gpu) + { + if( HaveOpenGL() ) + { + gpu_rendered = seq_data->context->ProcessWorldGL(float_world); + + if(!gpu_rendered) + seq_data->gpu_err = GPU_ERR_RENDER_ERR; + } + else + seq_data->gpu_err = GPU_ERR_INSUFFICIENT; + } + + if(!gpu_rendered) + { + ProcessData p_data = { in_data, + float_world->data, + float_world->rowbytes, + float_world->width, + seq_data->context }; + + err = iterate_generic(float_world->height, &p_data, Process_Iterate); + } + } + + + // copy back to non-float world and dispose + if(temp_world) + { + if(!err && + (format == PrPixelFormat_BGRA_4444_8u || + format == PrPixelFormat_BGRA_4444_32f_Linear || + format == PrPixelFormat_BGRA_4444_32f)) + { + SwapData s_data = { in_data, float_world->data, + float_world->rowbytes, float_world->width }; + + err = iterate_generic(float_world->height, &s_data, Swap_Iterate); + } + + if(!err) + { + IterateData i_data = { in_data, float_world->data, + float_world->rowbytes, output->data, + output->rowbytes, output->width * 4 }; + + if(format == PF_PixelFormat_ARGB32 || format == PrPixelFormat_BGRA_4444_8u) + { + err = iterate_generic(output->height, &i_data, + CopyWorld_Iterate<float, A_u_char>); + } + else if(format == PF_PixelFormat_ARGB64) + { + err = iterate_generic(output->height, &i_data, + CopyWorld_Iterate<float, A_u_short>); + } + else if(format == PF_PixelFormat_ARGB128 || + format == PrPixelFormat_BGRA_4444_32f || + format == PrPixelFormat_BGRA_4444_32f_Linear) + { + err = iterate_generic(output->height, &i_data, + CopyWorld_Iterate<float, float>); + } + + } + + PF_DISPOSE_HANDLE(temp_worldH); + } + + + PF_UNLOCK_HANDLE(OCIO_data->u.arb_d.value); + PF_UNLOCK_HANDLE(in_data->sequence_data); + + + if(seq_data->gpu_err == GPU_ERR_INSUFFICIENT) + { + suites.AdvAppSuite2()->PF_AppendInfoText("OpenColorIO: GPU Insufficient"); + } + else if(seq_data->gpu_err == GPU_ERR_RENDER_ERR) + { + suites.AdvAppSuite2()->PF_AppendInfoText("OpenColorIO: GPU Render Error"); + } + } + } + } + + if(pfS) + in_data->pica_basicP->ReleaseSuite(kPFPixelFormatSuite, kPFPixelFormatSuiteVersion1); + + if(wsP) + in_data->pica_basicP->ReleaseSuite(kPFWorldSuite, kPFWorldSuiteVersion2); + + + + return err; +} + + +static PF_Err SmartRender( + PF_InData *in_data, + PF_OutData *out_data, + PF_SmartRenderExtra *extra) + +{ + PF_Err err = PF_Err_NONE, + err2 = PF_Err_NONE; + + PF_EffectWorld *input, *output; + + PF_ParamDef OCIO_data, OCIO_gpu; + + // zero-out parameters + AEFX_CLR_STRUCT(OCIO_data); + AEFX_CLR_STRUCT(OCIO_gpu); + + + // checkout input & output buffers. + ERR( extra->cb->checkout_layer_pixels( in_data->effect_ref, OCIO_INPUT, &input) ); + ERR( extra->cb->checkout_output( in_data->effect_ref, &output) ); + + + // bail before param checkout + if(err) + return err; + +#define PF_CHECKOUT_PARAM_NOW( PARAM, DEST ) \ + PF_CHECKOUT_PARAM( in_data, (PARAM), in_data->current_time,\ + in_data->time_step, in_data->time_scale, DEST ) + + // checkout the required params + ERR( PF_CHECKOUT_PARAM_NOW( OCIO_DATA, &OCIO_data ) ); + ERR( PF_CHECKOUT_PARAM_NOW( OCIO_GPU, &OCIO_gpu ) ); + + ERR(DoRender( in_data, + input, + &OCIO_data, + &OCIO_gpu, + out_data, + output)); + + // Always check in, no matter what the error condition! + ERR2( PF_CHECKIN_PARAM(in_data, &OCIO_data ) ); + ERR2( PF_CHECKIN_PARAM(in_data, &OCIO_gpu ) ); + + + return err; + +} + + +static PF_Err Render( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output ) +{ + return DoRender(in_data, + ¶ms[OCIO_INPUT]->u.ld, + params[OCIO_DATA], + params[OCIO_GPU], + out_data, + output); +} + + +static PF_Err GetExternalDependencies( + PF_InData *in_data, + PF_OutData *out_data, + PF_ExtDependenciesExtra *extra) + +{ + PF_Err err = PF_Err_NONE; + + SequenceData *seq_data = (SequenceData *)PF_LOCK_HANDLE(in_data->sequence_data); + + if(seq_data == NULL) + return PF_Err_BAD_CALLBACK_PARAM; + + + std::string dependency; + + if(seq_data->source == OCIO_SOURCE_ENVIRONMENT) + { + if(extra->check_type == PF_DepCheckType_ALL_DEPENDENCIES) + { + dependency = "$OCIO environment variable"; + } + else if(extra->check_type == PF_DepCheckType_MISSING_DEPENDENCIES) + { + char *file = std::getenv("OCIO"); + + if(!file) + dependency = "$OCIO environment variable"; + } + } + else if(seq_data->source == OCIO_SOURCE_STANDARD) + { + if(extra->check_type == PF_DepCheckType_ALL_DEPENDENCIES) + { + dependency = "OCIO configuration " + std::string(seq_data->path); + } + else if(extra->check_type == PF_DepCheckType_MISSING_DEPENDENCIES) + { + std::string path = GetStdConfigPath(seq_data->path); + + if( path.empty() ) + dependency = "OCIO configuration " + std::string(seq_data->path); + } + } + else if(seq_data->source == OCIO_SOURCE_CUSTOM && seq_data->path[0] != '\0') + { + std::string dir = GetProjectDir(in_data); + + Path absolute_path(seq_data->path, ""); + Path relative_path(seq_data->relative_path, dir); + + if(extra->check_type == PF_DepCheckType_ALL_DEPENDENCIES) + { + if( !absolute_path.exists() && relative_path.exists() ) + { + dependency = relative_path.full_path(); + } + else + dependency = absolute_path.full_path(); + } + else if(extra->check_type == PF_DepCheckType_MISSING_DEPENDENCIES && + !absolute_path.exists() && !relative_path.exists() ) + { + dependency = absolute_path.full_path(); + } + } + + + if( !dependency.empty() ) + { + extra->dependencies_strH = PF_NEW_HANDLE(sizeof(char) * (dependency.size() + 1)); + + char *p = (char *)PF_LOCK_HANDLE(extra->dependencies_strH); + + strcpy(p, dependency.c_str()); + } + + + PF_UNLOCK_HANDLE(in_data->sequence_data); + + return err; +} + + +DllExport PF_Err PluginMain( + PF_Cmd cmd, + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + void *extra) +{ + PF_Err err = PF_Err_NONE; + + try { + switch(cmd) { + case PF_Cmd_ABOUT: + err = About(in_data,out_data,params,output); + break; + case PF_Cmd_GLOBAL_SETUP: + err = GlobalSetup(in_data,out_data,params,output); + break; + case PF_Cmd_GLOBAL_SETDOWN: + err = GlobalSetdown(in_data,out_data,params,output); + break; + case PF_Cmd_PARAMS_SETUP: + err = ParamsSetup(in_data,out_data,params,output); + break; + case PF_Cmd_SEQUENCE_SETUP: + case PF_Cmd_SEQUENCE_RESETUP: + err = SequenceSetup(in_data, out_data, params, output); + break; + case PF_Cmd_SEQUENCE_FLATTEN: + err = SequenceFlatten(in_data, out_data, params, output); + break; + case PF_Cmd_SEQUENCE_SETDOWN: + err = SequenceSetdown(in_data, out_data, params, output); + break; + case PF_Cmd_SMART_PRE_RENDER: + err = PreRender(in_data, out_data, (PF_PreRenderExtra*)extra); + break; + case PF_Cmd_SMART_RENDER: + err = SmartRender(in_data, out_data, (PF_SmartRenderExtra*)extra); + break; + case PF_Cmd_RENDER: + err = Render(in_data, out_data, params, output); + break; + case PF_Cmd_EVENT: + err = HandleEvent(in_data, out_data, params, output, (PF_EventExtra *)extra); + break; + case PF_Cmd_ARBITRARY_CALLBACK: + err = HandleArbitrary(in_data, out_data, params, output, (PF_ArbParamsExtra *)extra); + break; + case PF_Cmd_GET_EXTERNAL_DEPENDENCIES: + err = GetExternalDependencies(in_data, out_data, (PF_ExtDependenciesExtra *)extra); + break; + } + } + catch(PF_Err &thrown_err) { err = thrown_err; } + catch(...) { err = PF_Err_INTERNAL_STRUCT_DAMAGED; } + + return err; +} diff --git a/src/aftereffects/OpenColorIO_AE.h b/src/aftereffects/OpenColorIO_AE.h new file mode 100755 index 0000000..98eb314 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE.h @@ -0,0 +1,227 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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. +*/ + +#pragma once + +#ifndef _OPENCOLORIO_AE_H_ +#define _OPENCOLORIO_AE_H_ + + +//#define PF_DEEP_COLOR_AWARE 1 // do we really still need this? + +#include "AEConfig.h" +#include "entry.h" +#include "SPTypes.h" +#include "PrSDKAESupport.h" +#include "AE_Macros.h" +#include "Param_Utils.h" +#include "AE_Effect.h" +#include "AE_EffectUI.h" +#include "AE_EffectCB.h" + + +#ifdef MSWindows + #include <Windows.h> +#else + #ifndef __MACH__ + #include "string.h" + #endif +#endif + + +// Versioning information +#define MAJOR_VERSION 1 +#define MINOR_VERSION 0 +#define BUG_VERSION 0 +#define STAGE_VERSION PF_Stage_RELEASE +#define BUILD_VERSION 0 + +// Paramater constants +enum { + OCIO_INPUT = 0, + OCIO_DATA, + OCIO_GPU, + + OCIO_NUM_PARAMS +}; + +enum { + OCIO_DATA_ID = 1, + OCIO_GPU_ID +}; + + +// Our Arbitrary Data struct + +#define CURRENT_ARB_VERSION 1 +#define ARB_PATH_LEN 255 +#define ARB_SPACE_LEN 63 + +enum { + OCIO_ACTION_NONE = 0, + OCIO_ACTION_LUT, + OCIO_ACTION_CONVERT, + OCIO_ACTION_DISPLAY +}; +typedef A_u_char OCIO_Action; + +enum { + OCIO_STORAGE_NONE = 0, + OCIO_STORAGE_ZIP_FILE +}; +typedef A_u_char OCIO_Storage; + +enum { + OCIO_SOURCE_NONE = 0, + OCIO_SOURCE_ENVIRONMENT, + OCIO_SOURCE_STANDARD, + OCIO_SOURCE_CUSTOM +}; +typedef A_u_char OCIO_Source; + +enum { + OCIO_INTERP_UNKNOWN = 0, + OCIO_INTERP_NEAREST = 1, + OCIO_INTERP_LINEAR = 2, + OCIO_INTERP_TETRAHEDRAL = 3, + OCIO_INTERP_BEST = 255 +}; +typedef A_u_char OCIO_Interp; + +typedef struct { + A_u_char version; // version of this data structure + OCIO_Action action; + A_Boolean invert; // only used for LUTs + OCIO_Storage storage; // storage not used...yet + A_u_long storage_size; + OCIO_Source source; + OCIO_Interp interpolation; + A_u_char reserved[54]; // 64 pre-path bytes + char path[ARB_PATH_LEN+1]; + char relative_path[ARB_PATH_LEN+1]; + char input[ARB_SPACE_LEN+1]; + char output[ARB_SPACE_LEN+1]; + char transform[ARB_SPACE_LEN+1]; + char device[ARB_SPACE_LEN+1]; + char look[ARB_SPACE_LEN+1]; // not used currently + A_u_char storage_buf[1]; +} ArbitraryData; + + +#ifdef __cplusplus + +class OpenColorIO_AE_Context; + +enum { + STATUS_UNKNOWN = 0, + STATUS_OK, + STATUS_NO_FILE, + STATUS_USING_ABSOLUTE, + STATUS_USING_RELATIVE, + STATUS_FILE_MISSING, + STATUS_OCIO_ERROR +}; +typedef A_u_char FileStatus; + +enum { + GPU_ERR_NONE = 0, + GPU_ERR_INSUFFICIENT, + GPU_ERR_RENDER_ERR +}; +typedef A_u_char GPUErr; + +enum { + PREMIERE_UNKNOWN = 0, + PREMIERE_LINEAR, + PREMIERE_NON_LINEAR +}; +typedef A_u_char PremiereStatus; + +typedef struct { + FileStatus status; + GPUErr gpu_err; + PremiereStatus prem_status; + OCIO_Source source; + OpenColorIO_AE_Context *context; + char path[ARB_PATH_LEN+1]; + char relative_path[ARB_PATH_LEN+1]; +} SequenceData; + +#endif + + + +#define UI_CONTROL_HEIGHT 200 +#define UI_CONTROL_WIDTH 500 + + +#ifdef __cplusplus + extern "C" { +#endif + + +// Prototypes + +DllExport PF_Err PluginMain( + PF_Cmd cmd, + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + void *extra) ; + + +PF_Err HandleEvent( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *extra ); + + +PF_Err ArbNewDefault( // needed by ParamSetup() + PF_InData *in_data, + PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH *arbPH); + +PF_Err HandleArbitrary( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_ArbParamsExtra *extra); + + +#ifdef __cplusplus + } +#endif + + + +#endif // _OPENCOLORIO_AE_H_
\ No newline at end of file diff --git a/src/aftereffects/OpenColorIO_AE_ArbData.cpp b/src/aftereffects/OpenColorIO_AE_ArbData.cpp new file mode 100644 index 0000000..0e55541 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_ArbData.cpp @@ -0,0 +1,408 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE.h" + +#include "OpenColorIO_AE_Context.h" + +#include <assert.h> + + +PF_Err ArbNewDefault(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH *arbPH) +{ + PF_Err err = PF_Err_NONE; + + if(arbPH) + { + *arbPH = PF_NEW_HANDLE( sizeof(ArbitraryData) ); + + if(*arbPH) + { + ArbitraryData *arb_data = (ArbitraryData *)PF_LOCK_HANDLE(*arbPH); + + // set up defaults + arb_data->version = CURRENT_ARB_VERSION; + + arb_data->action = OCIO_ACTION_NONE; + arb_data->invert = FALSE; + + arb_data->storage = OCIO_STORAGE_NONE; + arb_data->storage_size = 0; + arb_data->source = OCIO_SOURCE_NONE; + arb_data->interpolation = OCIO_INTERP_LINEAR; + + arb_data->path[0] = '\0'; + arb_data->relative_path[0] = '\0'; + + arb_data->input[0] = '\0'; + arb_data->output[0] = '\0'; + arb_data->transform[0] = '\0'; + arb_data->device[0] = '\0'; + arb_data->look[0] = '\0'; + + + // set default with environment variable if it's set + char *file = std::getenv("OCIO"); + + if(file) + { + try + { + OpenColorIO_AE_Context context(file, OCIO_SOURCE_ENVIRONMENT); + + strncpy(arb_data->path, file, ARB_PATH_LEN); + + arb_data->action = context.getAction(); + arb_data->source = OCIO_SOURCE_ENVIRONMENT; + + if(arb_data->action != OCIO_ACTION_LUT) + { + strncpy(arb_data->input, context.getInput().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->output, context.getOutput().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->transform, context.getTransform().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->device, context.getDevice().c_str(), ARB_SPACE_LEN); + } + } + catch(...) {} + } + + + PF_UNLOCK_HANDLE(*arbPH); + } + } + + return err; +} + + +static PF_Err ArbDispose(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH arbH) +{ + if(arbH) + PF_DISPOSE_HANDLE(arbH); + + return PF_Err_NONE; +} + + +static void CopyArbData(ArbitraryData *out_arb_data, ArbitraryData *in_arb_data) +{ + // copy contents + out_arb_data->version = in_arb_data->version; + + out_arb_data->action = in_arb_data->action; + + out_arb_data->invert = in_arb_data->invert; + + out_arb_data->storage = in_arb_data->storage; + out_arb_data->storage_size = in_arb_data->storage_size; + + out_arb_data->source = in_arb_data->source; + + out_arb_data->interpolation = in_arb_data->interpolation; + + strcpy(out_arb_data->path, in_arb_data->path); + strcpy(out_arb_data->relative_path, in_arb_data->relative_path); + + strcpy(out_arb_data->input, in_arb_data->input); + strcpy(out_arb_data->output, in_arb_data->output); + strcpy(out_arb_data->transform, in_arb_data->transform); + strcpy(out_arb_data->device, in_arb_data->device); + strcpy(out_arb_data->look, in_arb_data->look); +} + + +static PF_Err ArbCopy(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH src_arbH, + PF_ArbitraryH *dst_arbPH) +{ + PF_Err err = PF_Err_NONE; + + if(src_arbH && dst_arbPH) + { + // allocate using the creation function + err = ArbNewDefault(in_data, out_data, refconPV, dst_arbPH); + + if(!err) + { + ArbitraryData *in_arb_data = (ArbitraryData *)PF_LOCK_HANDLE(src_arbH), + *out_arb_data = (ArbitraryData *)PF_LOCK_HANDLE(*dst_arbPH); + + CopyArbData(out_arb_data, in_arb_data); + + PF_UNLOCK_HANDLE(src_arbH); + PF_UNLOCK_HANDLE(*dst_arbPH); + } + } + + return err; +} + + +static PF_Err ArbFlatSize(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH arbH, + A_u_long *flat_data_sizePLu) +{ + // flat is the same size as inflated + if(arbH) + *flat_data_sizePLu = PF_GET_HANDLE_SIZE(arbH); + + return PF_Err_NONE; +} + + +static void SwapArbData(ArbitraryData *arb_data) +{ + +} + + +static PF_Err ArbFlatten(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH arbH, + A_u_long buf_sizeLu, + void *flat_dataPV) +{ + PF_Err err = PF_Err_NONE; + + if(arbH && flat_dataPV) + { + // they provide the buffer, we just move data + ArbitraryData *in_arb_data = (ArbitraryData *)PF_LOCK_HANDLE(arbH), + *out_arb_data = (ArbitraryData *)flat_dataPV; + + assert(buf_sizeLu >= PF_GET_HANDLE_SIZE(arbH)); + + CopyArbData(out_arb_data, in_arb_data); + + #ifdef AE_BIG_ENDIAN + // not that we're doing a PPC version of this... + SwapArbData(out_arb_data); + #endif + + PF_UNLOCK_HANDLE(arbH); + } + + return err; +} + + +static PF_Err ArbUnFlatten(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + A_u_long buf_sizeLu, + const void *flat_dataPV, + PF_ArbitraryH *arbPH) +{ + PF_Err err = PF_Err_NONE; + + if(arbPH && flat_dataPV) + { + // they provide a flat buffer, we have to make the handle + err = ArbNewDefault(in_data, out_data, refconPV, arbPH); + + if(!err && *arbPH) + { + ArbitraryData *in_arb_data = (ArbitraryData *)flat_dataPV, + *out_arb_data = (ArbitraryData *)PF_LOCK_HANDLE(*arbPH); + + assert(buf_sizeLu <= PF_GET_HANDLE_SIZE(*arbPH)); + + CopyArbData(out_arb_data, in_arb_data); + + #ifdef AE_BIG_ENDIAN + SwapArbData(out_arb_data); + #endif + + PF_UNLOCK_HANDLE(*arbPH); + } + } + + return err; +} + +static PF_Err ArbInterpolate(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH left_arbH, + PF_ArbitraryH right_arbH, + PF_FpLong tF, + PF_ArbitraryH *interpPH) +{ + PF_Err err = PF_Err_NONE; + + assert(FALSE); // we shouldn't be doing this + + if(left_arbH && right_arbH && interpPH) + { + // allocate using our own func + err = ArbNewDefault(in_data, out_data, refconPV, interpPH); + + if(!err && *interpPH) + { + // we're just going to copy the left_data + ArbitraryData *in_arb_data = (ArbitraryData *)PF_LOCK_HANDLE(left_arbH), + *out_arb_data = (ArbitraryData *)PF_LOCK_HANDLE(*interpPH); + + CopyArbData(out_arb_data, in_arb_data); + + PF_UNLOCK_HANDLE(left_arbH); + PF_UNLOCK_HANDLE(*interpPH); + } + } + + return err; +} + + +static PF_Err ArbCompare(PF_InData *in_data, PF_OutData *out_data, + void *refconPV, + PF_ArbitraryH a_arbH, + PF_ArbitraryH b_arbH, + PF_ArbCompareResult *compareP) +{ + PF_Err err = PF_Err_NONE; + + if(a_arbH && b_arbH) + { + ArbitraryData *a_data = (ArbitraryData *)PF_LOCK_HANDLE(a_arbH), + *b_data = (ArbitraryData *)PF_LOCK_HANDLE(b_arbH); + + + if( a_data->version == b_data->version && + a_data->action == b_data->action && + a_data->invert == b_data->invert && + a_data->source == b_data->source && + a_data->interpolation == b_data->interpolation && + !strcmp(a_data->path, b_data->path) && + !strcmp(a_data->input, b_data->input) && + !strcmp(a_data->output, b_data->output) && + !strcmp(a_data->transform, b_data->transform) && + !strcmp(a_data->device, b_data->device) && + !strcmp(a_data->look, b_data->look) ) + { + *compareP = PF_ArbCompare_EQUAL; + } + else + { + *compareP = PF_ArbCompare_NOT_EQUAL; + } + + + PF_UNLOCK_HANDLE(a_arbH); + PF_UNLOCK_HANDLE(b_arbH); + } + + return err; +} + + +PF_Err HandleArbitrary( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_ArbParamsExtra *extra) +{ + PF_Err err = PF_Err_NONE; + + if(extra->id == OCIO_DATA_ID) + { + switch(extra->which_function) + { + case PF_Arbitrary_NEW_FUNC: + err = ArbNewDefault(in_data, out_data, + extra->u.new_func_params.refconPV, + extra->u.new_func_params.arbPH); + break; + case PF_Arbitrary_DISPOSE_FUNC: + err = ArbDispose(in_data, out_data, + extra->u.dispose_func_params.refconPV, + extra->u.dispose_func_params.arbH); + break; + case PF_Arbitrary_COPY_FUNC: + err = ArbCopy(in_data, out_data, extra->u.copy_func_params.refconPV, + extra->u.copy_func_params.src_arbH, + extra->u.copy_func_params.dst_arbPH); + break; + case PF_Arbitrary_FLAT_SIZE_FUNC: + err = ArbFlatSize(in_data, out_data, + extra->u.flat_size_func_params.refconPV, + extra->u.flat_size_func_params.arbH, + extra->u.flat_size_func_params.flat_data_sizePLu); + break; + case PF_Arbitrary_FLATTEN_FUNC: + err = ArbFlatten(in_data, out_data, + extra->u.flatten_func_params.refconPV, + extra->u.flatten_func_params.arbH, + extra->u.flatten_func_params.buf_sizeLu, + extra->u.flatten_func_params.flat_dataPV); + break; + case PF_Arbitrary_UNFLATTEN_FUNC: + err = ArbUnFlatten(in_data, out_data, + extra->u.unflatten_func_params.refconPV, + extra->u.unflatten_func_params.buf_sizeLu, + extra->u.unflatten_func_params.flat_dataPV, + extra->u.unflatten_func_params.arbPH); + break; + case PF_Arbitrary_INTERP_FUNC: + err = ArbInterpolate(in_data, out_data, + extra->u.interp_func_params.refconPV, + extra->u.interp_func_params.left_arbH, + extra->u.interp_func_params.right_arbH, + extra->u.interp_func_params.tF, + extra->u.interp_func_params.interpPH); + break; + case PF_Arbitrary_COMPARE_FUNC: + err = ArbCompare(in_data, out_data, + extra->u.compare_func_params.refconPV, + extra->u.compare_func_params.a_arbH, + extra->u.compare_func_params.b_arbH, + extra->u.compare_func_params.compareP); + break; + // these are necessary for copying and pasting keyframes + // for now, we better not be called to do this + case PF_Arbitrary_PRINT_SIZE_FUNC: + assert(FALSE); + break; + case PF_Arbitrary_PRINT_FUNC: + assert(FALSE); + break; + case PF_Arbitrary_SCAN_FUNC: + assert(FALSE); + break; + } + } + + + return err; +} diff --git a/src/aftereffects/OpenColorIO_AE_Context.cpp b/src/aftereffects/OpenColorIO_AE_Context.cpp new file mode 100644 index 0000000..1da7ee8 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_Context.cpp @@ -0,0 +1,1051 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_Context.h" + +#include <fstream> +#include <map> +#include <sstream> + +#include "ocioicc.h" + +#include "OpenColorIO_AE_Dialogs.h" + + + + +static const char mac_delimiter = '/'; +static const char win_delimiter = '\\'; + +#ifdef WIN_ENV +static const char delimiter = win_delimiter; +#else +static const char delimiter = mac_delimiter; +#endif + +static const int LUT3D_EDGE_SIZE = 32; + + +Path::Path(const std::string &path, const std::string &dir) : + _path(path), + _dir(dir) +{ + +} + + +Path::Path(const Path &path) +{ + _path = path._path; + _dir = path._dir; +} + + +std::string Path::full_path() const +{ + if( is_relative(_path) && !_dir.empty() ) + { + std::vector<std::string> path_vec = components( convert_delimiters(_path) ); + std::vector<std::string> dir_vec = components(_dir); + + int up_dirs = 0; + int down_dirs = 0; + + while(down_dirs < path_vec.size() - 1 && + (path_vec[down_dirs] == ".." || path_vec[down_dirs] == ".") ) + { + down_dirs++; + + if(path_vec[down_dirs] == "..") + up_dirs++; + } + + + std::string path; + + if(path_type(_dir) == TYPE_MAC) + path += mac_delimiter; + + for(int i=0; i < dir_vec.size() - up_dirs; i++) + { + path += dir_vec[i] + delimiter; + } + + for(int i = down_dirs; i < path_vec.size() - 1; i++) + { + path += path_vec[i] + delimiter; + } + + path += path_vec.back(); + + return path; + } + else + { + return _path; + } +} + + +std::string Path::relative_path(bool force) const +{ + if( is_relative(_path) || _dir.empty() || _path.empty() ) + { + return _path; + } + else + { + std::vector<std::string> path_vec = components(_path); + std::vector<std::string> dir_vec = components(_dir); + + int match_idx = 0; + + while(match_idx < path_vec.size() && + match_idx < dir_vec.size() && + path_vec[match_idx] == dir_vec[match_idx]) + match_idx++; + + if(match_idx == 0) + { + // can't do relative path + if(force) + return _path; + else + return ""; + } + else + { + std::string rel_path; + + // is the file in a folder below or actually inside the dir? + if(match_idx == dir_vec.size()) + { + rel_path += std::string(".") + delimiter; + } + else + { + for(int i = match_idx; i < dir_vec.size(); i++) + { + rel_path += std::string("..") + delimiter; + } + } + + for(int i = match_idx; i < path_vec.size() - 1; i++) + { + rel_path += path_vec[i] + delimiter; + } + + rel_path += path_vec.back(); + + return rel_path; + } + } +} + + +bool Path::exists() const +{ + std::string path = full_path(); + + if(path.empty()) + return false; + + std::ifstream f( path.c_str() ); + + return !!f; +} + + +Path::PathType Path::path_type(std::string path) +{ + if( path.empty() ) + { + return TYPE_UNKNOWN; + } + if(path[0] == mac_delimiter) + { + return TYPE_MAC; + } + else if(path[1] == ':' && path[2] == win_delimiter) + { + return TYPE_WIN; + } + else if(path[0] == win_delimiter && path[1] == win_delimiter) + { + return TYPE_WIN; + } + else + { + size_t mac_pos = path.find(mac_delimiter); + size_t win_pos = path.find(win_delimiter); + + if(mac_pos != std::string::npos && win_pos == std::string::npos) + { + return TYPE_MAC; + } + else if(mac_pos == std::string::npos && win_pos != std::string::npos) + { + return TYPE_WIN; + } + else if(mac_pos == std::string::npos && win_pos == std::string::npos) + { + return TYPE_UNKNOWN; + } + else // neither npos? + { + if(mac_pos < win_pos) + return TYPE_MAC; + else + return TYPE_WIN; + } + } +} + + +bool Path::is_relative(std::string path) +{ + Path::PathType type = path_type(path); + + if(type == TYPE_MAC) + { + return (path[0] != mac_delimiter); + } + else if(type == TYPE_WIN) + { + return !( (path[1] == ':' && path[2] == win_delimiter) || + (path[0] == win_delimiter && path[1] == win_delimiter) ); + } + else + { // TYPE_UNKNOWN + + // just a filename perhaps? + // should never have this: even a file in the same directory will be ./file.ocio + // we'll assume it's relative, but raise a stink during debugging + assert(type != TYPE_UNKNOWN); + + return true; + } +} + + +std::string Path::convert_delimiters(std::string path) +{ +#ifdef WIN_ENV + char search = mac_delimiter; + char replace = win_delimiter; +#else + char search = win_delimiter; + char replace = mac_delimiter; +#endif + + for(int i=0; i < path.size(); i++) + { + if(path[i] == search) + path[i] = replace; + } + + return path; +} + + +std::vector<std::string> Path::components(std::string path) +{ + std::vector<std::string> vec; + + size_t pos = 0; + size_t len = path.size(); + + size_t start, finish; + + while(path[pos] == delimiter && pos < len) + pos++; + + while(pos < len) + { + start = pos; + + while(path[pos] != delimiter && pos < len) + pos++; + + finish = ((pos == len - 1) ? pos : pos - 1); + + vec.push_back( path.substr(start, 1 + finish - start) ); + + while(path[pos] == delimiter && pos < len) + pos++; + } + + return vec; +} + + +#pragma mark- + + +OpenColorIO_AE_Context::OpenColorIO_AE_Context(const std::string &path, OCIO_Source source) : + _gl_init(false) +{ + _action = OCIO_ACTION_NONE; + + + _source = source; + + if(_source == OCIO_SOURCE_ENVIRONMENT) + { + char *file = getenv("OCIO"); + + if(file) + { + _path = file; + } + else + throw OCIO::Exception("No $OCIO environment variable."); + } + else if(_source == OCIO_SOURCE_STANDARD) + { + _config_name = path; + + _path = GetStdConfigPath(_config_name); + + if( _path.empty() ) + throw OCIO::Exception("Error getting config."); + } + else + { + _path = path; + } + + + if(!_path.empty()) + { + std::string the_extension = _path.substr( _path.find_last_of('.') + 1 ); + + if(the_extension == "ocio") + { + _config = OCIO::Config::CreateFromFile( _path.c_str() ); + + _config->sanityCheck(); + + for(int i=0; i < _config->getNumColorSpaces(); ++i) + { + _inputs.push_back( _config->getColorSpaceNameByIndex(i) ); + } + + + for(int i=0; i < _config->getNumDisplays(); ++i) + { + _devices.push_back( _config->getDisplay(i) ); + } + + const char * defaultDisplay = _config->getDefaultDisplay(); + const char * defaultTransform = _config->getDefaultView(defaultDisplay); + + for(int i=0; i < _config->getNumViews(defaultDisplay); ++i) + { + _transforms.push_back( _config->getView(defaultDisplay, i) ); + } + + + OCIO::ConstColorSpaceRcPtr defaultInput = _config->getColorSpace(OCIO::ROLE_SCENE_LINEAR); + + const char *defaultInputName = (defaultInput ? defaultInput->getName() : OCIO::ROLE_SCENE_LINEAR); + + + setupConvert(defaultInputName, defaultInputName); + + _transform = defaultTransform; + _device = defaultDisplay; + } + else + { + _config = OCIO::Config::Create(); + + setupLUT(false, OCIO_INTERP_LINEAR); + } + } + else + throw OCIO::Exception("Got nothin"); +} + + +OpenColorIO_AE_Context::OpenColorIO_AE_Context(const ArbitraryData *arb_data, const std::string &dir) : + _gl_init(false) +{ + _action = OCIO_ACTION_NONE; + + + _source = arb_data->source; + + if(_source == OCIO_SOURCE_ENVIRONMENT) + { + char *file = getenv("OCIO"); + + if(file) + { + _path = file; + } + else + throw OCIO::Exception("No $OCIO environment variable."); + } + else if(_source == OCIO_SOURCE_STANDARD) + { + _config_name = arb_data->path; + + _path = GetStdConfigPath(_config_name); + + if( _path.empty() ) + throw OCIO::Exception("Error getting config."); + } + else + { + Path absolute_path(arb_data->path, dir); + Path relative_path(arb_data->relative_path, dir); + + if( absolute_path.exists() ) + { + _path = absolute_path.full_path(); + } + else + { + _path = relative_path.full_path(); + } + } + + + if(!_path.empty()) + { + std::string the_extension = _path.substr( _path.find_last_of('.') + 1 ); + + if(the_extension == "ocio") + { + _config = OCIO::Config::CreateFromFile( _path.c_str() ); + + _config->sanityCheck(); + + for(int i=0; i < _config->getNumColorSpaces(); ++i) + { + _inputs.push_back( _config->getColorSpaceNameByIndex(i) ); + } + + + for(int i=0; i < _config->getNumDisplays(); ++i) + { + _devices.push_back( _config->getDisplay(i) ); + } + + const char * defaultDisplay = _config->getDefaultDisplay(); + const char * defaultTransform = _config->getDefaultView(defaultDisplay); + + for(int i=0; i < _config->getNumViews(defaultDisplay); ++i) + { + _transforms.push_back( _config->getView(defaultDisplay, i) ); + } + + + if(arb_data->action == OCIO_ACTION_CONVERT) + { + setupConvert(arb_data->input, arb_data->output); + + _transform = arb_data->transform; + _device = arb_data->device; + } + else + { + setupDisplay(arb_data->input, arb_data->transform, arb_data->device); + + _output = arb_data->output; + } + } + else + { + _config = OCIO::Config::Create(); + + setupLUT(arb_data->invert, arb_data->interpolation); + } + } + else + throw OCIO::Exception("Got nothin"); +} + + +OpenColorIO_AE_Context::~OpenColorIO_AE_Context() +{ + if(_gl_init) + { + glDeleteShader(_fragShader); + glDeleteProgram(_program); + glDeleteTextures(1, &_imageTexID); + + if(_bufferWidth != 0 && _bufferHeight != 0) + glDeleteRenderbuffersEXT(1, &_renderBuffer); + } +} + + +bool OpenColorIO_AE_Context::Verify(const ArbitraryData *arb_data, const std::string &dir) +{ + if(_source != arb_data->source) + return false; + + if(_source == OCIO_SOURCE_STANDARD) + { + if(_config_name != arb_data->path) + return false; + } + else if(_source == OCIO_SOURCE_CUSTOM) + { + // comparing the paths, cheking relative path only if necessary + if(_path != arb_data->path) + { + std::string rel_path(arb_data->relative_path); + + if( !dir.empty() && !rel_path.empty() ) + { + Path relative_path(rel_path, dir); + + if( _path != relative_path.full_path() ) + return false; + } + else + return false; + } + } + + // we can switch between Convert and Display, but not LUT and non-LUT + if((arb_data->action == OCIO_ACTION_NONE) || + (_action == OCIO_ACTION_LUT && arb_data->action != OCIO_ACTION_LUT) || + (_action != OCIO_ACTION_LUT && arb_data->action == OCIO_ACTION_LUT) ) + { + return false; + } + + bool force_reset = (_action != arb_data->action); + + + // If the type and path are compatible, we can patch up + // differences here and return true. + // Returning false means the context will be deleted and rebuilt. + if(arb_data->action == OCIO_ACTION_LUT) + { + if(_invert != (bool)arb_data->invert || + _interpolation != arb_data->interpolation || + force_reset) + { + setupLUT(arb_data->invert, arb_data->interpolation); + } + } + else if(arb_data->action == OCIO_ACTION_CONVERT) + { + if(_input != arb_data->input || + _output != arb_data->output || + force_reset) + { + setupConvert(arb_data->input, arb_data->output); + } + } + else if(arb_data->action == OCIO_ACTION_DISPLAY) + { + if(_input != arb_data->input || + _transform != arb_data->transform || + _device != arb_data->device || + force_reset) + { + setupDisplay(arb_data->input, arb_data->transform, arb_data->device); + } + } + else + throw OCIO::Exception("Bad OCIO type"); + + + return true; +} + + +void OpenColorIO_AE_Context::setupConvert(const char *input, const char *output) +{ + OCIO::ColorSpaceTransformRcPtr transform = OCIO::ColorSpaceTransform::Create(); + + transform->setSrc(input); + transform->setDst(output); + transform->setDirection(OCIO::TRANSFORM_DIR_FORWARD); + + _input = input; + _output = output; + + _processor = _config->getProcessor(transform); + + _action = OCIO_ACTION_CONVERT; + + UpdateOCIOGLState(); +} + + +void OpenColorIO_AE_Context::setupDisplay(const char *input, const char *xform, const char *device) +{ + OCIO::DisplayTransformRcPtr transform = OCIO::DisplayTransform::Create(); + + transform->setInputColorSpaceName(input); + transform->setView(xform); + transform->setDisplay(device); + + _input = input; + _transform = xform; + _device = device; + + + _processor = _config->getProcessor(transform); + + _action = OCIO_ACTION_DISPLAY; + + UpdateOCIOGLState(); +} + + +void OpenColorIO_AE_Context::setupLUT(bool invert, OCIO_Interp interpolation) +{ + OCIO::FileTransformRcPtr transform = OCIO::FileTransform::Create(); + + if(interpolation != OCIO_INTERP_NEAREST && interpolation != OCIO_INTERP_LINEAR && + interpolation != OCIO_INTERP_TETRAHEDRAL && interpolation != OCIO_INTERP_BEST) + { + interpolation = OCIO_INTERP_LINEAR; + } + + transform->setSrc( _path.c_str() ); + transform->setInterpolation(static_cast<OCIO::Interpolation>(interpolation)); + transform->setDirection(invert ? OCIO::TRANSFORM_DIR_INVERSE : OCIO::TRANSFORM_DIR_FORWARD); + + _processor = _config->getProcessor(transform); + + _invert = invert; + _interpolation = interpolation; + + _action = OCIO_ACTION_LUT; + + UpdateOCIOGLState(); +} + + +bool OpenColorIO_AE_Context::ExportLUT(const std::string &path, const std::string &display_icc_path) +{ + std::string the_extension = path.substr( path.find_last_of('.') + 1 ); + + try{ + + if(the_extension == "icc") + { + int cubesize = 32; + int whitepointtemp = 6505; + std::string copyright = "OpenColorIO, Sony Imageworks"; + + // create a description tag from the filename + size_t filename_start = path.find_last_of(delimiter) + 1; + size_t filename_end = path.find_last_of('.') - 1; + + std::string description = path.substr(path.find_last_of(delimiter) + 1, + 1 + filename_end - filename_start); + + SaveICCProfileToFile(path, _processor, cubesize, whitepointtemp, + display_icc_path, description, copyright, false); + } + else + { + // this code lovingly pulled from ociobakelut + + // need an extension->format map (yes, just did this one call up) + std::map<std::string, std::string> extensions; + + for(int i=0; i < OCIO::Baker::getNumFormats(); ++i) + { + const char *extension = OCIO::Baker::getFormatExtensionByIndex(i); + const char *format = OCIO::Baker::getFormatNameByIndex(i); + + extensions[ extension ] = format; + } + + std::string format = extensions[ the_extension ]; + + + OCIO::BakerRcPtr baker = OCIO::Baker::Create(); + + baker->setFormat(format.c_str()); + + if(_action == OCIO_ACTION_CONVERT) + { + baker->setConfig(_config); + baker->setInputSpace(_input.c_str()); + baker->setTargetSpace(_output.c_str()); + + std::ofstream f(path.c_str()); + baker->bake(f); + } + else if(_action == OCIO_ACTION_DISPLAY) + { + OCIO::ConfigRcPtr editableConfig = _config->createEditableCopy(); + + OCIO::ColorSpaceRcPtr inputColorSpace = OCIO::ColorSpace::Create(); + std::string inputspace = "RawInput"; + inputColorSpace->setName(inputspace.c_str()); + editableConfig->addColorSpace(inputColorSpace); + + + OCIO::ColorSpaceRcPtr outputColorSpace = OCIO::ColorSpace::Create(); + std::string outputspace = "ProcessedOutput"; + outputColorSpace->setName(outputspace.c_str()); + + OCIO::DisplayTransformRcPtr transform = OCIO::DisplayTransform::Create(); + + transform->setInputColorSpaceName(_input.c_str()); + transform->setView(_transform.c_str()); + transform->setDisplay(_device.c_str()); + + outputColorSpace->setTransform(transform, OCIO::COLORSPACE_DIR_FROM_REFERENCE); + + editableConfig->addColorSpace(outputColorSpace); + + + baker->setConfig(editableConfig); + baker->setInputSpace(inputspace.c_str()); + baker->setTargetSpace(outputspace.c_str()); + + std::ofstream f(path.c_str()); + baker->bake(f); + } + else if(_action == OCIO_ACTION_LUT) + { + OCIO::ConfigRcPtr editableConfig = OCIO::Config::Create(); + + OCIO::ColorSpaceRcPtr inputColorSpace = OCIO::ColorSpace::Create(); + std::string inputspace = "RawInput"; + inputColorSpace->setName(inputspace.c_str()); + editableConfig->addColorSpace(inputColorSpace); + + + OCIO::ColorSpaceRcPtr outputColorSpace = OCIO::ColorSpace::Create(); + std::string outputspace = "ProcessedOutput"; + outputColorSpace->setName(outputspace.c_str()); + + OCIO::FileTransformRcPtr transform = OCIO::FileTransform::Create(); + + transform = OCIO::FileTransform::Create(); + transform->setSrc(_path.c_str()); + transform->setInterpolation(static_cast<OCIO::Interpolation>(_interpolation)); + transform->setDirection(_invert ? OCIO::TRANSFORM_DIR_INVERSE : OCIO::TRANSFORM_DIR_FORWARD); + + outputColorSpace->setTransform(transform, OCIO::COLORSPACE_DIR_FROM_REFERENCE); + + editableConfig->addColorSpace(outputColorSpace); + + + baker->setConfig(editableConfig); + baker->setInputSpace(inputspace.c_str()); + baker->setTargetSpace(outputspace.c_str()); + + std::ofstream f(path.c_str()); + baker->bake(f); + } + } + + }catch(...) { return false; } + + return true; +} + + +void OpenColorIO_AE_Context::InitOCIOGL() +{ + if(!_gl_init) + { + SetPluginContext(); + + glGenTextures(1, &_imageTexID); + glGenTextures(1, &_lut3dTexID); + + int num3Dentries = 3*LUT3D_EDGE_SIZE*LUT3D_EDGE_SIZE*LUT3D_EDGE_SIZE; + _lut3d.resize(num3Dentries); + memset(&_lut3d[0], 0, sizeof(float)*num3Dentries); + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_3D, _lut3dTexID); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); + glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA32F_ARB, + LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, + 0, GL_RGB,GL_FLOAT, &_lut3d[0]); + + _fragShader = 0; + _program = 0; + + _bufferWidth = _bufferHeight = 0; + + _gl_init = true; + + SetAEContext(); + } +} + + +static const char * g_fragShaderText = "" +"\n" +"uniform sampler2D tex1;\n" +"uniform sampler3D tex2;\n" +"\n" +"void main()\n" +"{\n" +" vec4 col = texture2D(tex1, gl_TexCoord[0].st);\n" +" gl_FragColor = OCIODisplay(col, tex2);\n" +"}\n"; + + +static GLuint CompileShaderText(GLenum shaderType, const char *text) +{ + GLuint shader; + GLint stat; + + shader = glCreateShader(shaderType); + glShaderSource(shader, 1, (const GLchar **) &text, NULL); + glCompileShader(shader); + glGetShaderiv(shader, GL_COMPILE_STATUS, &stat); + + if (!stat) + { + GLchar log[1000]; + GLsizei len; + glGetShaderInfoLog(shader, 1000, &len, log); + return 0; + } + + return shader; +} + + +static GLuint LinkShaders(GLuint fragShader) +{ + if (!fragShader) return 0; + + GLuint program = glCreateProgram(); + + if (fragShader) + glAttachShader(program, fragShader); + + glLinkProgram(program); + + // check link + { + GLint stat; + glGetProgramiv(program, GL_LINK_STATUS, &stat); + if (!stat) { + GLchar log[1000]; + GLsizei len; + glGetProgramInfoLog(program, 1000, &len, log); + //fprintf(stderr, "Shader link error:\n%s\n", log); + return 0; + } + } + + return program; +} + + +void OpenColorIO_AE_Context::UpdateOCIOGLState() +{ + if(_gl_init) + { + SetPluginContext(); + + // Step 1: Create a GPU Shader Description + OCIO::GpuShaderDesc shaderDesc; + shaderDesc.setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_0); + shaderDesc.setFunctionName("OCIODisplay"); + shaderDesc.setLut3DEdgeLen(LUT3D_EDGE_SIZE); + + // Step 2: Compute the 3D LUT + std::string lut3dCacheID = _processor->getGpuLut3DCacheID(shaderDesc); + if(lut3dCacheID != _lut3dcacheid) + { + _lut3dcacheid = lut3dCacheID; + _processor->getGpuLut3D(&_lut3d[0], shaderDesc); + } + + // Step 3: Compute the Shader + std::string shaderCacheID = _processor->getGpuShaderTextCacheID(shaderDesc); + if(_program == 0 || shaderCacheID != _shadercacheid) + { + _shadercacheid = shaderCacheID; + + std::ostringstream os; + os << _processor->getGpuShaderText(shaderDesc) << "\n"; + os << g_fragShaderText; + + if(_fragShader) glDeleteShader(_fragShader); + _fragShader = CompileShaderText(GL_FRAGMENT_SHADER, os.str().c_str()); + if(_program) glDeleteProgram(_program); + _program = LinkShaders(_fragShader); + } + + SetAEContext(); + } +} + + +bool OpenColorIO_AE_Context::ProcessWorldGL(PF_EffectWorld *float_world) +{ + if(!_gl_init) + { + InitOCIOGL(); + UpdateOCIOGLState(); + } + + + if(_program == 0 || _fragShader == 0) + return false; + + + SetPluginContext(); + + + GLint max; + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max); + + if(max < float_world->width || max < float_world->height || GL_NO_ERROR != glGetError()) + { + SetAEContext(); + return false; + } + + + PF_PixelFloat *pix = (PF_PixelFloat *)float_world->data; + float *rgba_origin = &pix->red; + + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, _imageTexID); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, float_world->width, float_world->height, 0, + GL_RGBA, GL_FLOAT, rgba_origin); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + + glBindTexture(GL_TEXTURE_3D, _lut3dTexID); + glTexSubImage3D(GL_TEXTURE_3D, 0, + 0, 0, 0, + LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, + GL_RGB, GL_FLOAT, &_lut3d[0]); + + + glUseProgram(_program); + glUniform1i(glGetUniformLocation(_program, "tex1"), 0); + glUniform1i(glGetUniformLocation(_program, "tex2"), 1); + + + if(GL_NO_ERROR != glGetError()) + { + SetAEContext(); + return false; + } + + + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, GetFrameBuffer()); + + if(_bufferWidth != float_world->width || _bufferHeight != float_world->height) + { + if(_bufferWidth != 0 && _bufferHeight != 0) + glDeleteRenderbuffersEXT(1, &_renderBuffer); + + _bufferWidth = float_world->width; + _bufferHeight = float_world->height; + + glGenRenderbuffersEXT(1, &_renderBuffer); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, _renderBuffer); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA, _bufferWidth, _bufferHeight); + + // attach renderbuffer to framebuffer + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + GL_RENDERBUFFER_EXT, _renderBuffer); + } + + if(GL_FRAMEBUFFER_COMPLETE_EXT != glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)) + { + SetAEContext(); + return false; + } + + glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); + + + glViewport(0, 0, float_world->width, float_world->height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0.0, float_world->width, 0.0, float_world->height, -100.0, 100.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + + glEnable(GL_TEXTURE_2D); + glClearColor(0.1f, 0.1f, 0.1f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + glColor3f(1, 1, 1); + + glPushMatrix(); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 1.0f); + glVertex2f(0.0f, float_world->height); + + glTexCoord2f(0.0f, 0.0f); + glVertex2f(0.0f, 0.0f); + + glTexCoord2f(1.0f, 0.0f); + glVertex2f(float_world->width, 0.0f); + + glTexCoord2f(1.0f, 1.0f); + glVertex2f(float_world->width, float_world->height); + + glEnd(); + glPopMatrix(); + + glDisable(GL_TEXTURE_2D); + + + glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); + glReadPixels(0, 0, float_world->width, float_world->height, + GL_RGBA, GL_FLOAT, rgba_origin); + + + glFinish(); + + + SetAEContext(); + + return true; +} diff --git a/src/aftereffects/OpenColorIO_AE_Context.h b/src/aftereffects/OpenColorIO_AE_Context.h new file mode 100644 index 0000000..8a3bf42 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_Context.h @@ -0,0 +1,153 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 _OPENCOLORIO_AE_CONTEXT_H_ +#define _OPENCOLORIO_AE_CONTEXT_H_ + +#include <string> +#include <vector> + +#include "OpenColorIO_AE.h" +#include "OpenColorIO_AE_GL.h" + +#include <OpenColorIO/OpenColorIO.h> +namespace OCIO = OCIO_NAMESPACE; + + + +// yeah, this probably could/should go in a seperate file +class Path +{ + public: + Path(const std::string &path, const std::string &dir); + Path(const Path &path); + ~Path() {} + + std::string full_path() const; + std::string relative_path(bool force) const; + + bool exists() const; + + private: + std::string _path; + std::string _dir; + + typedef enum { + TYPE_UNKNOWN = 0, + TYPE_MAC, + TYPE_WIN + } PathType; + + static PathType path_type(std::string path); + static bool is_relative(std::string path); + static std::string convert_delimiters(std::string path); + static std::vector<std::string> components(std::string path); +}; + + +class OpenColorIO_AE_Context +{ + public: + OpenColorIO_AE_Context(const std::string &path, OCIO_Source source); + OpenColorIO_AE_Context(const ArbitraryData *arb_data, const std::string &dir); + ~OpenColorIO_AE_Context(); + + bool Verify(const ArbitraryData *arb_data, const std::string &dir); + + void setupConvert(const char *input, const char *output); + void setupDisplay(const char *input, const char *transform, const char *device); + void setupLUT(bool invert, OCIO_Interp interpolation); + + typedef std::vector<std::string> SpaceVec; + + OCIO_Action getAction() const { return _action; } + const std::string & getInput() const { return _input; } + const std::string & getOutput() const { return _output; } + const std::string & getTransform() const { return _transform; } + const std::string & getDevice() const { return _device; } + const SpaceVec & getInputs() const { return _inputs; } + const SpaceVec & getTransforms() const { return _transforms; } + const SpaceVec & getDevices() const { return _devices; } + + const OCIO::ConstProcessorRcPtr & processor() const { return _processor; } + + bool ExportLUT(const std::string &path, const std::string &display_icc_path); + + bool ProcessWorldGL(PF_EffectWorld *float_world); + + private: + std::string _path; + OCIO_Source _source; + std::string _config_name; + + OCIO_Action _action; + + std::string _input; + std::string _output; + std::string _transform; + std::string _device; + SpaceVec _inputs; + SpaceVec _transforms; + SpaceVec _devices; + + bool _invert; + OCIO_Interp _interpolation; + + + OCIO::ConstConfigRcPtr _config; + OCIO::ConstProcessorRcPtr _processor; + + + bool _gl_init; + + GLuint _fragShader; + GLuint _program; + + GLuint _imageTexID; + + GLuint _lut3dTexID; + std::vector<float> _lut3d; + std::string _lut3dcacheid; + std::string _shadercacheid; + + std::string _inputColorSpace; + std::string _display; + std::string _transformName; + + + GLuint _renderBuffer; + int _bufferWidth; + int _bufferHeight; + + void InitOCIOGL(); + void UpdateOCIOGLState(); +}; + + +#endif // _OPENCOLORIO_AE_CONTEXT_H_
\ No newline at end of file diff --git a/src/aftereffects/OpenColorIO_AE_Dialogs.h b/src/aftereffects/OpenColorIO_AE_Dialogs.h new file mode 100644 index 0000000..a2e9f26 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_Dialogs.h @@ -0,0 +1,60 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 _OPENCOLORIC_AE_DIALOG_H_ +#define _OPENCOLORIC_AE_DIALOG_H_ + +#include <string> +#include <map> +#include <vector> + +typedef std::map<std::string, std::string> ExtensionMap; // map[ ext ] = format + +bool OpenFile(char *path, int buf_len, const ExtensionMap &extensions, const void *hwnd); + +bool SaveFile(char *path, int buf_len, const ExtensionMap &extensions, const void *hwnd); + +bool GetMonitorProfile(char *path, int buf_len, const void *hwnd); + + +typedef std::vector<std::string> ConfigVec; + +void GetStdConfigs(ConfigVec &configs); + +std::string GetStdConfigPath(const std::string &name); + + +typedef std::vector<std::string> MenuVec; + +int PopUpMenu(const MenuVec &menu_items, int selected_index, const void *hwnd); + + +void ErrorMessage(const char *message, const void *hwnd); + + +#endif // _OPENCOLORIC_AE_DIALOG_H_
\ No newline at end of file diff --git a/src/aftereffects/OpenColorIO_AE_GL.h b/src/aftereffects/OpenColorIO_AE_GL.h new file mode 100644 index 0000000..2c9683c --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_GL.h @@ -0,0 +1,61 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 _OPENCOLORIO_AE_GL_H_ +#define _OPENCOLORIO_AE_GL_H_ + +#include "AEConfig.h" + +#ifdef AE_OS_WIN + #include <GL/glew.h> + #include <GL/wglew.h> +#elif defined(AE_OS_MAC) + #include <OpenGL/OpenGL.h> + #include <OpenGL/gl.h> + #include <OpenGL/glu.h> + #include <OpenGL/glext.h> + #include <AGL/agl.h> +#endif + + +void GlobalSetup_GL(); + +bool HaveOpenGL(); + +// must surround plug-in OpenGL calls with these functions so that AE +// doesn't know we're borrowing the OpenGL renderer +void SetPluginContext(); +void SetAEContext(); + +GLuint GetFrameBuffer(); + +void GlobalSetdown_GL(); + + +#endif // _OPENCOLORIO_AE_GL_H_
\ No newline at end of file diff --git a/src/aftereffects/OpenColorIO_AE_PiPL.r b/src/aftereffects/OpenColorIO_AE_PiPL.r new file mode 100644 index 0000000..3d08070 --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_PiPL.r @@ -0,0 +1,102 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "AEConfig.h" + +#include "AE_EffectVers.h" + +#ifndef AE_OS_WIN + #include "AE_General.r" +#endif + +resource 'PiPL' (16000) { + { /* array properties: 12 elements */ + /* [1] */ + Kind { + AEEffect + }, + /* [2] */ + Name { + "OpenColorIO" + }, + /* [3] */ + Category { + "Utility" + }, + +#ifdef AE_OS_WIN + #ifdef AE_PROC_INTELx64 + CodeWin64X86 {"PluginMain"}, + #else + CodeWin32X86 {"PluginMain"}, + #endif +#else + #ifdef AE_PROC_INTELx64 + CodeMacIntel64 {"PluginMain"}, + #else + CodeMachOPowerPC {"PluginMain"}, + CodeMacIntel32 {"PluginMain"}, + #endif +#endif /* [6] */ + AE_PiPL_Version { + 2, + 0 + }, + /* [7] */ + AE_Effect_Spec_Version { + PF_PLUG_IN_VERSION, + PF_PLUG_IN_SUBVERS + }, + /* [8] */ + AE_Effect_Version { + 525824 /* 2.0 */ + }, + /* [9] */ + AE_Effect_Info_Flags { + 0 + }, + /* [10] */ + AE_Effect_Global_OutFlags { + 50365504 + }, + AE_Effect_Global_OutFlags_2 { + 37896 + }, + /* [11] */ + AE_Effect_Match_Name { + "OpenColorIO" + }, + /* [12] */ + AE_Reserved_Info { + 0 + } + } +}; + + + diff --git a/src/aftereffects/OpenColorIO_AE_UI.cpp b/src/aftereffects/OpenColorIO_AE_UI.cpp new file mode 100644 index 0000000..b5634bf --- /dev/null +++ b/src/aftereffects/OpenColorIO_AE_UI.cpp @@ -0,0 +1,1229 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE.h" + +#include "OpenColorIO_AE_Context.h" +#include "OpenColorIO_AE_Dialogs.h" + +#include "DrawbotBot.h" + + + +// UI drawing constants + +#define LEFT_MARGIN 5 +#define TOP_MARGIN 5 +#define RIGHT_MARGIN 50 + +#define FILE_LABEL_WIDTH 35 + +#define FIELD_HEIGHT 22 + +#define FIELD_TEXT_INDENT_H 10 +#define FIELD_TEXT_INDENT_V 4 + +#define BUTTONS_INDENT_H (LEFT_MARGIN + 70) + +#define BUTTONS_GAP_V 20 +#define BUTTONS_GAP_H 30 + +#define BUTTON_HEIGHT 20 +#define BUTTON_WIDTH 80 + +#define BUTTON_TEXT_INDENT_V 2 + +#define MENUS_INDENT_H 0 + +#define MENUS_GAP_V 20 + +#define MENU_LABEL_WIDTH 100 +#define MENU_LABEL_SPACE 5 + +#define MENU_WIDTH 150 +#define MENU_HEIGHT 20 + +#define MENU_TEXT_INDENT_H 10 +#define MENU_TEXT_INDENT_V 2 + +#define MENU_ARROW_WIDTH 14 +#define MENU_ARROW_HEIGHT 7 + +#define MENU_ARROW_SPACE_H 8 +#define MENU_ARROW_SPACE_V 7 + +#define MENU_SHADOW_OFFSET 3 + +#define MENU_SPACE_V 20 + +#define TEXT_COLOR PF_App_Color_TEXT_DISABLED + + + +typedef enum { + REGION_NONE=0, + REGION_CONFIG_MENU, + REGION_PATH, + REGION_CONVERT_BUTTON, + REGION_DISPLAY_BUTTON, + REGION_EXPORT_BUTTON, + REGION_MENU1, + REGION_MENU2, + REGION_MENU3 +} UIRegion; + + +static UIRegion WhichRegion(PF_Point ui_point, bool menus, bool third_menu) +{ + int field_top = TOP_MARGIN; + int field_bottom = field_top + FIELD_HEIGHT; + + if(ui_point.v >= field_top && ui_point.v <= field_bottom) + { + int menu_left = LEFT_MARGIN + MENUS_INDENT_H + MENU_LABEL_WIDTH; + int menu_right = menu_left + MENU_WIDTH; + + if(ui_point.h >= menu_left && ui_point.h <= menu_right) + { + return REGION_CONFIG_MENU; + } + else + { + int field_left = MENUS_INDENT_H + MENU_LABEL_WIDTH + MENU_LABEL_SPACE + + MENU_WIDTH + FIELD_TEXT_INDENT_H; + + if(ui_point.h >= field_left) + return REGION_PATH; + } + } + else + { + int buttons_top = field_bottom + BUTTONS_GAP_V; + int buttons_bottom = buttons_top + BUTTON_HEIGHT; + + if(ui_point.v >= buttons_top && ui_point.v <= buttons_bottom) + { + int convert_left = BUTTONS_INDENT_H; + int convert_right = convert_left + BUTTON_WIDTH; + int display_left = convert_right + BUTTONS_GAP_H; + int display_right = display_left + BUTTON_WIDTH; + int export_left = display_right + BUTTONS_GAP_H; + int export_right = export_left + BUTTON_WIDTH; + + if(ui_point.h >= convert_left && ui_point.h <= convert_right) + return REGION_CONVERT_BUTTON; + else if(ui_point.h >= display_left && ui_point.h <= display_right) + return REGION_DISPLAY_BUTTON; + else if(ui_point.h >= export_left && ui_point.h <= export_right) + return REGION_EXPORT_BUTTON; + } + else if(menus) + { + int menu_left = LEFT_MARGIN + MENUS_INDENT_H + MENU_LABEL_WIDTH; + int menu_right = menu_left + MENU_WIDTH; + + if(ui_point.h >= menu_left && ui_point.h <= menu_right) + { + int menu1_top = buttons_bottom + MENUS_GAP_V; + int menu1_bottom = menu1_top + MENU_HEIGHT; + int menu2_top = menu1_bottom + MENU_SPACE_V; + int menu2_bottom = menu2_top + MENU_HEIGHT; + int menu3_top = menu2_bottom + MENU_SPACE_V; + int menu3_bottom = menu3_top + MENU_HEIGHT; + + if(ui_point.v >= menu1_top && ui_point.v <= menu1_bottom) + return REGION_MENU1; + else if(ui_point.v >= menu2_top && ui_point.v <= menu2_bottom) + return REGION_MENU2; + else if(third_menu && ui_point.v >= menu3_top && ui_point.v <= menu3_bottom) + return REGION_MENU3; + } + } + } + + return REGION_NONE; +} + + +static void DrawMenu(DrawbotBot &bot, const char *label, const char *item) +{ + DRAWBOT_PointF32 original = bot.Pos(); + + float text_height = bot.FontSize(); + + bot.Move(MENU_LABEL_WIDTH, MENU_TEXT_INDENT_V + text_height); + + bot.SetColor(TEXT_COLOR); + bot.DrawString(label, kDRAWBOT_TextAlignment_Right); + + bot.Move(MENU_LABEL_SPACE, -(MENU_TEXT_INDENT_V + text_height)); + + DRAWBOT_PointF32 menu_corner = bot.Pos(); + + bot.Move(MENU_SHADOW_OFFSET, MENU_SHADOW_OFFSET); + bot.SetColor(PF_App_Color_BLACK, 0.3f); + bot.PaintRect(MENU_WIDTH, MENU_HEIGHT); + bot.MoveTo(menu_corner); + + bot.SetColor(PF_App_Color_SHADOW); + bot.PaintRect(MENU_WIDTH, MENU_HEIGHT); + + bot.SetColor(PF_App_Color_HILITE); + bot.DrawRect(MENU_WIDTH, MENU_HEIGHT); + + bot.Move(MENU_TEXT_INDENT_H, MENU_TEXT_INDENT_V + text_height); + + bot.SetColor(TEXT_COLOR); + bot.DrawString(item, + kDRAWBOT_TextAlignment_Left, + kDRAWBOT_TextTruncation_EndEllipsis, + MENU_WIDTH - MENU_TEXT_INDENT_H - MENU_TEXT_INDENT_H - + MENU_ARROW_WIDTH - MENU_ARROW_SPACE_H - MENU_ARROW_SPACE_H); + + bot.MoveTo(menu_corner.x + MENU_WIDTH - MENU_ARROW_SPACE_H - MENU_ARROW_WIDTH, + menu_corner.y + MENU_ARROW_SPACE_V); + + bot.SetColor(PF_App_Color_LIGHT_TINGE); + bot.PaintTriangle(MENU_ARROW_WIDTH, MENU_ARROW_HEIGHT); + + bot.MoveTo(original); +} + + +static void DrawButton(DrawbotBot &bot, const char *label, int width, bool pressed) +{ + DRAWBOT_PointF32 original = bot.Pos(); + + float text_height = bot.FontSize(); + + + PF_App_ColorType button_color = (pressed ? PF_App_Color_BUTTON_PRESSED_FILL : PF_App_Color_BUTTON_FILL); + PF_App_ColorType button_hilite = (pressed ? PF_App_Color_BLACK : PF_App_Color_HILITE); + PF_App_ColorType button_lowlite = (pressed ? PF_App_Color_HILITE : PF_App_Color_BLACK); + + + bot.SetColor(button_color); + bot.PaintRect(width, BUTTON_HEIGHT); + + float brush_size = (pressed ? 1.f : 0.5f); + + bot.SetColor(button_hilite); + bot.MoveTo(original.x + 1, original.y + BUTTON_HEIGHT - 1); + + bot.DrawLineTo(original.x + 1, original.y + 1, brush_size); + bot.DrawLineTo(original.x + width - 1, original.y + 1, brush_size); + + bot.MoveTo(original); // annoying corner pixel + bot.SetColor(button_hilite, 0.3f); + bot.PaintRect(1, 1); + + + brush_size = (pressed ? 0.5f : 1.f); + + bot.SetColor(button_lowlite); + bot.MoveTo(original.x + 1, original.y + BUTTON_HEIGHT - 1); + + bot.DrawLineTo(original.x + width - 1, original.y + BUTTON_HEIGHT - 1, brush_size); + bot.DrawLineTo(original.x + width - 1, original.y + 2, brush_size); + + bot.MoveTo(original.x + width - 1, original.y + BUTTON_HEIGHT - 1); // corner + bot.SetColor(button_lowlite, 0.3f); + bot.PaintRect(1, 1); + + + bot.MoveTo(original.x + (width / 2), original.y + text_height + BUTTON_TEXT_INDENT_V); + + if(pressed) + bot.Move(2, 2); + + bot.SetColor(TEXT_COLOR); + bot.DrawString(label, kDRAWBOT_TextAlignment_Center); + + bot.MoveTo(original); +} + + +static PF_Err DrawEvent( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra) +{ + PF_Err err = PF_Err_NONE; + + + if(!(event_extra->evt_in_flags & PF_EI_DONT_DRAW) && + params[OCIO_DATA]->u.arb_d.value != NULL) + { + if(event_extra->effect_win.area == PF_EA_CONTROL) + { + ArbitraryData *arb_data = (ArbitraryData *)PF_LOCK_HANDLE(params[OCIO_DATA]->u.arb_d.value); + SequenceData *seq_data = (SequenceData *)PF_LOCK_HANDLE(in_data->sequence_data); + + DrawbotBot bot(in_data->pica_basicP, event_extra->contextH, in_data->appl_id); + + + int panel_left = event_extra->effect_win.current_frame.left; + int panel_top = event_extra->effect_win.current_frame.top; + int panel_width = event_extra->effect_win.current_frame.right; + int panel_height = event_extra->effect_win.current_frame.bottom; + float text_height = bot.FontSize(); + + if(in_data->appl_id != 'FXTC') + { + // for Premiere we need to paint the background first + bot.SetColor(PF_App_Color_PANEL_BACKGROUND); + bot.MoveTo(panel_left, panel_top); + bot.PaintRect(panel_width, panel_height); + } + + + // configuration menu + bot.MoveTo(panel_left + MENUS_INDENT_H, panel_top + TOP_MARGIN); + + std::string config_menu_text = arb_data->path; + + if(arb_data->source == OCIO_SOURCE_NONE) + { + config_menu_text = "(none)"; + } + if(arb_data->source == OCIO_SOURCE_ENVIRONMENT) + { + config_menu_text = "$OCIO"; + } + else if(arb_data->source == OCIO_SOURCE_CUSTOM) + { + config_menu_text = (arb_data->action == OCIO_ACTION_LUT ? "LUT" : "Custom"); + } + + DrawMenu(bot, "Configuration:", config_menu_text.c_str()); + + + if(arb_data->source == OCIO_SOURCE_CUSTOM || + arb_data->source == OCIO_SOURCE_ENVIRONMENT) + { + // path text field + int field_left = panel_left + MENUS_INDENT_H + MENU_LABEL_WIDTH + + MENU_LABEL_SPACE + MENU_WIDTH + FIELD_TEXT_INDENT_H; + + bot.MoveTo(field_left, panel_top + TOP_MARGIN); + + int field_width = MAX(panel_width - field_left + panel_left - RIGHT_MARGIN, 60); + + bot.SetColor(PF_App_Color_SHADOW); + bot.PaintRect(field_width, FIELD_HEIGHT); + bot.SetColor(PF_App_Color_BLACK); + bot.DrawRect(field_width, FIELD_HEIGHT); + + bot.Move(FIELD_TEXT_INDENT_H, FIELD_TEXT_INDENT_V + text_height); + + bot.SetColor(TEXT_COLOR); + + std::string file_string = "(none)"; + + if(arb_data->source == OCIO_SOURCE_ENVIRONMENT) + { + char *file = std::getenv("OCIO"); + + if(file) + file_string = file; + } + else + { + file_string = (seq_data->status == STATUS_USING_RELATIVE ? + arb_data->relative_path : arb_data->path); + } + + + bot.DrawString(file_string.c_str(), + kDRAWBOT_TextAlignment_Default, + kDRAWBOT_TextTruncation_PathEllipsis, + field_width - (2 * FIELD_TEXT_INDENT_H)); + } + + + if(seq_data->status == STATUS_FILE_MISSING) + { + bot.MoveTo(panel_left + MENU_LABEL_WIDTH + MENU_LABEL_SPACE, + panel_top + MENU_HEIGHT + BUTTONS_GAP_V + BUTTON_HEIGHT + BUTTONS_GAP_V); + + bot.SetColor(PF_App_Color_RED); + bot.PaintRect(200, 50); + + bot.Move(100, 25 + (bot.FontSize() / 2)); + bot.SetColor(PF_App_Color_WHITE); + + if(arb_data->source == OCIO_SOURCE_ENVIRONMENT) + bot.DrawString("$OCIO NOT SET", kDRAWBOT_TextAlignment_Center); + else + bot.DrawString("FILE MISSING", kDRAWBOT_TextAlignment_Center); + } + else + { + // buttons + int field_bottom = panel_top + TOP_MARGIN + FIELD_HEIGHT; + int buttons_top = field_bottom + BUTTONS_GAP_V; + + // GPU alert + if(seq_data->gpu_err != GPU_ERR_NONE) + { + bot.MoveTo(panel_left + MENU_LABEL_WIDTH + MENU_LABEL_SPACE, + field_bottom + bot.FontSize() + BUTTON_TEXT_INDENT_V); + + if(seq_data->gpu_err == GPU_ERR_INSUFFICIENT) + { + bot.DrawString("GPU Insufficient"); + } + else if(seq_data->gpu_err == GPU_ERR_RENDER_ERR) + { + bot.DrawString("GPU Render Error"); + } + } + + #ifndef NDEBUG + // Premiere color space (only for debugging purposes) + if(in_data->appl_id == 'PrMr' && seq_data->prem_status != PREMIERE_UNKNOWN) + { + bot.MoveTo(panel_left + MENU_LABEL_WIDTH + MENU_LABEL_SPACE + 200, + field_bottom + bot.FontSize() + BUTTON_TEXT_INDENT_V); + + bot.SetColor(PF_App_Color_WHITE); + + if(seq_data->prem_status == PREMIERE_LINEAR) + { + bot.DrawString("Linear Float"); + } + else if(seq_data->prem_status == PREMIERE_NON_LINEAR) + { + bot.DrawString("Non-Linear Float"); + } + } + #endif + + // Export button + if(arb_data->action != OCIO_ACTION_NONE) + { + bot.MoveTo(panel_left + BUTTONS_INDENT_H + (2 * (BUTTON_WIDTH + BUTTONS_GAP_H)), buttons_top); + + DrawButton(bot, "Export...", BUTTON_WIDTH, false); + } + + if(arb_data->action == OCIO_ACTION_LUT) + { + // Invert button + bot.MoveTo(panel_left + BUTTONS_INDENT_H, buttons_top); + + DrawButton(bot, "Invert", BUTTON_WIDTH, arb_data->invert); + + // interpolation menu + int buttons_bottom = buttons_top + BUTTON_HEIGHT; + + bot.MoveTo(panel_left + MENUS_INDENT_H, buttons_bottom + MENUS_GAP_V); + + const char *txt = arb_data->interpolation == OCIO_INTERP_NEAREST ? "Nearest Neighbor" : + arb_data->interpolation == OCIO_INTERP_LINEAR ? "Linear" : + arb_data->interpolation == OCIO_INTERP_TETRAHEDRAL ? "Tetrahedral" : + arb_data->interpolation == OCIO_INTERP_BEST ? "Best" : + "Unknown"; + + DrawMenu(bot, "Interpolation:", txt); + } + else if(arb_data->action == OCIO_ACTION_CONVERT || + arb_data->action == OCIO_ACTION_DISPLAY) + { + // Convert/Display buttons + bot.MoveTo(panel_left + BUTTONS_INDENT_H, buttons_top); + + DrawButton(bot, "Convert", BUTTON_WIDTH, + arb_data->action == OCIO_ACTION_CONVERT); + + bot.Move(BUTTON_WIDTH + BUTTONS_GAP_H); + + DrawButton(bot, "Display", BUTTON_WIDTH, + arb_data->action == OCIO_ACTION_DISPLAY); + + + // menus + int buttons_bottom = buttons_top + BUTTON_HEIGHT; + + bot.MoveTo(panel_left + MENUS_INDENT_H, buttons_bottom + MENUS_GAP_V); + + if(arb_data->action == OCIO_ACTION_CONVERT) + { + DrawMenu(bot, "Input Space:", arb_data->input); + + bot.Move(0, MENU_HEIGHT + MENU_SPACE_V); + + DrawMenu(bot, "Output Space:", arb_data->output); + } + else if(arb_data->action == OCIO_ACTION_DISPLAY) + { + // color space transformations + DrawMenu(bot, "Input Space:", arb_data->input); + + bot.Move(0, MENU_HEIGHT + MENU_SPACE_V); + + DrawMenu(bot, "Transform:", arb_data->transform); + + bot.Move(0, MENU_HEIGHT + MENU_SPACE_V); + + DrawMenu(bot, "Device:", arb_data->device); + } + } + } + + + event_extra->evt_out_flags = PF_EO_HANDLED_EVENT; + + PF_UNLOCK_HANDLE(params[OCIO_DATA]->u.arb_d.value); + PF_UNLOCK_HANDLE(in_data->sequence_data); + } + } + + return err; +} + + +std::string GetProjectDir(PF_InData *in_data) +{ + if(in_data->appl_id == 'PrMr') + return std::string(""); + + AEGP_SuiteHandler suites(in_data->pica_basicP); + + AEGP_ProjectH projH = NULL; + suites.ProjSuite5()->AEGP_GetProjectByIndex(0, &projH); + + AEGP_MemHandle pathH = NULL; + suites.ProjSuite5()->AEGP_GetProjectPath(projH, &pathH); + + if(pathH) + { + std::string proj_dir; + + A_UTF16Char *path = NULL; + suites.MemorySuite1()->AEGP_LockMemHandle(pathH, (void **)&path); + + if(path) + { + // poor-man's unicode copy + char c_path[AEGP_MAX_PATH_SIZE]; + + char *c = c_path; + A_UTF16Char *s = path; + + do{ + *c++ = *s; + }while(*s++ != '\0'); + +#ifdef WIN_ENV +#define PATH_DELIMITER '\\' +#else +#define PATH_DELIMITER '/' +#endif + + std::string proj_path(c_path); + + if(proj_path.find_last_of(PATH_DELIMITER) != std::string::npos) + { + proj_dir = proj_path.substr(0, proj_path.find_last_of(PATH_DELIMITER)); + } + } + + suites.MemorySuite1()->AEGP_FreeMemHandle(pathH); + + return proj_dir; + } + + return std::string(""); +} + + +static int FindInVec(const std::vector<std::string> &vec, const std::string val) +{ + for(int i=0; i < vec.size(); i++) + { + if(vec[i] == val) + return i; + } + + return -1; +} + + +static void DoClickPath( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra, + ArbitraryData *arb_data, + SequenceData *seq_data) +{ + ExtensionMap extensions; + + for(int i=0; i < OCIO::FileTransform::getNumFormats(); i++) + { + const char *extension = OCIO::FileTransform::getFormatExtensionByIndex(i); + const char *format = OCIO::FileTransform::getFormatNameByIndex(i); + + extensions[ extension ] = format; + } + + extensions[ "ocio" ] = "OCIO Format"; + + + void *hwndOwner = NULL; + +#ifdef WIN_ENV + PF_GET_PLATFORM_DATA(PF_PlatData_MAIN_WND, &hwndOwner); +#endif + + char c_path[ARB_PATH_LEN + 1] = { '\0' }; + + bool result = OpenFile(c_path, ARB_PATH_LEN, extensions, hwndOwner); + + + if(result) + { + Path path(c_path, GetProjectDir(in_data)); + + OpenColorIO_AE_Context *new_context = new OpenColorIO_AE_Context(path.full_path(), + OCIO_SOURCE_CUSTOM); + + if(new_context == NULL) + throw OCIO::Exception("WTF?"); + + + if(seq_data->context) + { + delete seq_data->context; + } + + seq_data->context = new_context; + + arb_data->source = seq_data->source = OCIO_SOURCE_CUSTOM; + + strncpy(arb_data->path, path.full_path().c_str(), ARB_PATH_LEN); + strncpy(arb_data->relative_path, path.relative_path(false).c_str(), ARB_PATH_LEN); + + strncpy(seq_data->path, arb_data->path, ARB_PATH_LEN); + strncpy(seq_data->relative_path, arb_data->relative_path, ARB_PATH_LEN); + + + // try to retain settings if it looks like the same situation, + // possibly fixing a moved path + if(OCIO_ACTION_NONE == arb_data->action || + (OCIO_ACTION_LUT == new_context->getAction() && OCIO_ACTION_LUT != arb_data->action) || + (OCIO_ACTION_LUT != new_context->getAction() && OCIO_ACTION_LUT == arb_data->action) || + (OCIO_ACTION_LUT != new_context->getAction() && + (-1 == FindInVec(new_context->getInputs(), arb_data->input) || + -1 == FindInVec(new_context->getInputs(), arb_data->output) || + -1 == FindInVec(new_context->getTransforms(), arb_data->transform) || + -1 == FindInVec(new_context->getDevices(), arb_data->device) ) ) ) + { + // Configuration is different, so initialize defaults + arb_data->action = seq_data->context->getAction(); + + if(arb_data->action == OCIO_ACTION_LUT) + { + arb_data->invert = FALSE; + arb_data->interpolation = OCIO_INTERP_LINEAR; + } + else + { + strncpy(arb_data->input, seq_data->context->getInput().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->output, seq_data->context->getOutput().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->transform, seq_data->context->getTransform().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->device, seq_data->context->getDevice().c_str(), ARB_SPACE_LEN); + } + } + else + { + // Configuration is the same, retain current settings + if(arb_data->action == OCIO_ACTION_LUT) + { + seq_data->context->setupLUT(arb_data->invert, arb_data->interpolation); + } + else if(arb_data->action == OCIO_ACTION_CONVERT) + { + seq_data->context->setupConvert(arb_data->input, arb_data->output); + } + else if(arb_data->action == OCIO_ACTION_DISPLAY) + { + seq_data->context->setupDisplay(arb_data->input, arb_data->transform, arb_data->device); + } + } + + params[OCIO_DATA]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; + + seq_data->status = STATUS_USING_ABSOLUTE; + } +} + + +static void DoClickConfig( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra, + ArbitraryData *arb_data, + SequenceData *seq_data) +{ + void *hwndOwner = NULL; + +#ifdef WIN_ENV + PF_GET_PLATFORM_DATA(PF_PlatData_MAIN_WND, &hwndOwner); +#endif + + ConfigVec configs; + GetStdConfigs(configs); + + if(configs.size() == 0) + configs.push_back("(nada)"); // menu makes a gray entry that says "No configs in $PATH" + + + MenuVec menu_items; + int selected = 0; + + menu_items.push_back("$OCIO"); // menu will gray this out if $OCIO is not defined + + menu_items.push_back("(-"); // this tells the menu to make a seperator + + for(ConfigVec::const_iterator i = configs.begin(); i != configs.end(); ++i) + { + menu_items.push_back( *i ); + + if(arb_data->source == OCIO_SOURCE_STANDARD && arb_data->path == *i) + { + selected = menu_items.size() - 1; + } + } + + menu_items.push_back("(-"); + + menu_items.push_back("Custom..."); + + int custom_choice = menu_items.size() - 1; + + if(arb_data->source == OCIO_SOURCE_CUSTOM) + { + selected = -1; + } + + + int choice = PopUpMenu(menu_items, selected, hwndOwner); + + + if(choice == custom_choice) + { + // custom is the same as clicking the path + DoClickPath(in_data, out_data, params, output, event_extra, arb_data, seq_data); + } + else if(choice != selected) + { + OpenColorIO_AE_Context *new_context = NULL; + + if(choice == 0) + { + // $OCIO + char *file = std::getenv("OCIO"); + + if(file) + { + Path path(file, GetProjectDir(in_data)); + + new_context = new OpenColorIO_AE_Context(path.full_path(), + OCIO_SOURCE_ENVIRONMENT); + + arb_data->source = seq_data->source = OCIO_SOURCE_ENVIRONMENT; + + strncpy(arb_data->path, path.full_path().c_str(), ARB_PATH_LEN); + strncpy(arb_data->relative_path, path.relative_path(false).c_str(), ARB_PATH_LEN); + } + else + throw OCIO::Exception("No $OCIO environment variable defined."); + } + else + { + // standard configs + std::string config = configs[choice - 2]; + + std::string path = GetStdConfigPath(config); + + if( !path.empty() ) + { + new_context = new OpenColorIO_AE_Context(config, OCIO_SOURCE_STANDARD); + + arb_data->source = seq_data->source = OCIO_SOURCE_STANDARD; + + strncpy(arb_data->path, config.c_str(), ARB_PATH_LEN); + strncpy(arb_data->relative_path, path.c_str(), ARB_PATH_LEN); + } + else + throw OCIO::Exception("Problem loading OCIO configuration."); + } + + + if(new_context) + { + if(seq_data->context) + { + delete seq_data->context; + } + + seq_data->context = new_context; + + + strncpy(seq_data->path, arb_data->path, ARB_PATH_LEN); + strncpy(seq_data->relative_path, arb_data->relative_path, ARB_PATH_LEN); + + // try to retain settings if it looks like the same situation, + // possibly fixing a moved path + if(OCIO_ACTION_NONE == arb_data->action || + (OCIO_ACTION_LUT == new_context->getAction() && OCIO_ACTION_LUT != arb_data->action) || + (OCIO_ACTION_LUT != new_context->getAction() && OCIO_ACTION_LUT == arb_data->action) || + (OCIO_ACTION_LUT != new_context->getAction() && + (-1 == FindInVec(new_context->getInputs(), arb_data->input) || + -1 == FindInVec(new_context->getInputs(), arb_data->output) || + -1 == FindInVec(new_context->getTransforms(), arb_data->transform) || + -1 == FindInVec(new_context->getDevices(), arb_data->device) ) ) ) + { + // Configuration is different, so initialize defaults + arb_data->action = seq_data->context->getAction(); + + if(arb_data->action == OCIO_ACTION_LUT) + { + arb_data->invert = FALSE; + arb_data->interpolation = OCIO_INTERP_LINEAR; + } + else + { + strncpy(arb_data->input, seq_data->context->getInput().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->output, seq_data->context->getOutput().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->transform, seq_data->context->getTransform().c_str(), ARB_SPACE_LEN); + strncpy(arb_data->device, seq_data->context->getDevice().c_str(), ARB_SPACE_LEN); + } + } + else + { + // Configuration is the same, retain current settings + if(arb_data->action == OCIO_ACTION_LUT) + { + seq_data->context->setupLUT(arb_data->invert, arb_data->interpolation); + } + else if(arb_data->action == OCIO_ACTION_CONVERT) + { + seq_data->context->setupConvert(arb_data->input, arb_data->output); + } + else if(arb_data->action == OCIO_ACTION_DISPLAY) + { + seq_data->context->setupDisplay(arb_data->input, arb_data->transform, arb_data->device); + } + } + + params[OCIO_DATA]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; + + seq_data->status = STATUS_OK; + } + } +} + + +static void DoClickConvertDisplay( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra, + ArbitraryData *arb_data, + SequenceData *seq_data, + UIRegion reg ) +{ + if(arb_data->action == OCIO_ACTION_LUT) + { + if(reg == REGION_CONVERT_BUTTON) // i.e. Invert + { + // doing it this way so that any exceptions thrown by setupLUT + // because the LUT can't be inverted are thrown before + // I actually chenge the ArbData setting + seq_data->context->setupLUT(!arb_data->invert, arb_data->interpolation); + + arb_data->invert = !arb_data->invert; + + params[OCIO_DATA]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; + } + } + else if(arb_data->action == OCIO_ACTION_CONVERT || arb_data->action == OCIO_ACTION_DISPLAY) + { + if(reg == REGION_CONVERT_BUTTON && arb_data->action != OCIO_ACTION_CONVERT) + { + arb_data->action = OCIO_ACTION_CONVERT; + + seq_data->context->setupConvert(arb_data->input, arb_data->output); + + params[OCIO_DATA]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; + } + else if(reg == REGION_DISPLAY_BUTTON && arb_data->action != OCIO_ACTION_DISPLAY) + { + arb_data->action = OCIO_ACTION_DISPLAY; + + seq_data->context->setupDisplay(arb_data->input, arb_data->transform, arb_data->device); + + params[OCIO_DATA]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; + } + } +} + + +static void DoClickExport( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra, + ArbitraryData *arb_data, + SequenceData *seq_data, + UIRegion reg ) +{ + ExtensionMap extensions; + + for(int i=0; i < OCIO::Baker::getNumFormats(); ++i) + { + const char *extension = OCIO::Baker::getFormatExtensionByIndex(i); + const char *format = OCIO::Baker::getFormatNameByIndex(i); + + extensions[ extension ] = format; + } + + extensions[ "icc" ] = "ICC Profile"; + + + void *hwndOwner = NULL; + +#ifdef WIN_ENV + PF_GET_PLATFORM_DATA(PF_PlatData_MAIN_WND, &hwndOwner); +#endif + + char path[256] = { '\0' }; + + bool result = SaveFile(path, 255, extensions, hwndOwner); + + + if(result) + { + std::string the_path(path); + std::string the_extension = the_path.substr( the_path.find_last_of('.') + 1 ); + + bool do_export = true; + + std::string monitor_icc_path; + + if(the_extension == "icc") + { + char monitor_path[256] = {'\0'}; + + do_export = GetMonitorProfile(monitor_path, 255, hwndOwner); + + if(monitor_path[0] != '\0') + monitor_icc_path = monitor_path; + } + + if(do_export) + seq_data->context->ExportLUT(the_path, monitor_icc_path); + } +} + + +static void DoClickMenus( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra, + ArbitraryData *arb_data, + SequenceData *seq_data, + UIRegion reg ) +{ + if(seq_data->context != NULL && arb_data->action == seq_data->context->getAction()) + { + MenuVec menu_items; + int selected_item; + + if(arb_data->action == OCIO_ACTION_LUT) + { + if(reg == REGION_MENU1) + { + menu_items.push_back("Nearest Neighbor"); + menu_items.push_back("Linear"); + menu_items.push_back("Tetrahedral"); + menu_items.push_back("(-"); + menu_items.push_back("Best"); + + selected_item = arb_data->interpolation == OCIO_INTERP_NEAREST ? 0 : + arb_data->interpolation == OCIO_INTERP_LINEAR ? 1 : + arb_data->interpolation == OCIO_INTERP_TETRAHEDRAL ? 2 : + arb_data->interpolation == OCIO_INTERP_BEST ? 4 : + -1; + } + } + else if(arb_data->action == OCIO_ACTION_CONVERT) + { + menu_items = seq_data->context->getInputs(); + + if(reg == REGION_MENU1) + { + selected_item = FindInVec(menu_items, arb_data->input); + } + else + { + selected_item = FindInVec(menu_items, arb_data->output); + } + } + else if(arb_data->action == OCIO_ACTION_DISPLAY) + { + if(reg == REGION_MENU1) + { + menu_items = seq_data->context->getInputs(); + + selected_item = FindInVec(menu_items, arb_data->input); + } + else if(reg == REGION_MENU2) + { + menu_items = seq_data->context->getTransforms(); + + selected_item = FindInVec(menu_items, arb_data->transform); + } + else if(reg == REGION_MENU3) + { + menu_items = seq_data->context->getDevices(); + + selected_item = FindInVec(menu_items, arb_data->device); + } + } + + + + void *hwndOwner = NULL; + + #ifdef WIN_ENV + PF_GET_PLATFORM_DATA(PF_PlatData_MAIN_WND, &hwndOwner); + #endif + + int result = PopUpMenu(menu_items, selected_item, hwndOwner); + + + if(result != selected_item) + { + std::string color_space = menu_items[ result ]; + + if(arb_data->action == OCIO_ACTION_LUT) + { + if(reg == REGION_MENU1) + { + arb_data->interpolation = result == 0 ? OCIO_INTERP_NEAREST : + result == 2 ? OCIO_INTERP_TETRAHEDRAL : + result == 4 ? OCIO_INTERP_BEST : + OCIO_INTERP_LINEAR; + + seq_data->context->setupLUT(arb_data->invert, arb_data->interpolation); + } + } + else if(arb_data->action == OCIO_ACTION_CONVERT) + { + if(reg == REGION_MENU1) + { + strncpy(arb_data->input, color_space.c_str(), ARB_SPACE_LEN); + } + else if(reg == REGION_MENU2) + { + strncpy(arb_data->output, color_space.c_str(), ARB_SPACE_LEN); + } + + seq_data->context->setupConvert(arb_data->input, arb_data->output); + } + else if(arb_data->action == OCIO_ACTION_DISPLAY) + { + if(reg == REGION_MENU1) + { + strncpy(arb_data->input, color_space.c_str(), ARB_SPACE_LEN); + } + else if(reg == REGION_MENU2) + { + strncpy(arb_data->transform, color_space.c_str(), ARB_SPACE_LEN); + } + else if(reg == REGION_MENU3) + { + strncpy(arb_data->device, color_space.c_str(), ARB_SPACE_LEN); + } + + seq_data->context->setupDisplay(arb_data->input, arb_data->transform, arb_data->device); + } + + params[OCIO_DATA]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; + } + } +} + + +static PF_Err DoClick( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *event_extra ) +{ + PF_Err err = PF_Err_NONE; + + ArbitraryData *arb_data = (ArbitraryData *)PF_LOCK_HANDLE(params[OCIO_DATA]->u.arb_d.value); + SequenceData *seq_data = (SequenceData *)PF_LOCK_HANDLE(in_data->sequence_data); + + + if(event_extra->effect_win.area == PF_EA_CONTROL) + { + bool menus_visible = (arb_data->action != OCIO_ACTION_NONE); + bool third_menu = (arb_data->action == OCIO_ACTION_DISPLAY); + + PF_Point local_point; + + local_point.h = event_extra->u.do_click.screen_point.h - event_extra->effect_win.current_frame.left; + local_point.v = event_extra->u.do_click.screen_point.v - event_extra->effect_win.current_frame.top; + + UIRegion reg = WhichRegion(local_point, menus_visible, third_menu); + + if(reg != REGION_NONE) + { + try + { + if(reg == REGION_CONFIG_MENU) + { + DoClickConfig(in_data, out_data, params, output, + event_extra, arb_data, seq_data); + } + else if(reg == REGION_PATH) + { + if(arb_data->source == OCIO_SOURCE_CUSTOM) + { + DoClickPath(in_data, out_data, params, output, + event_extra, arb_data, seq_data); + } + } + else if(arb_data->action != OCIO_ACTION_NONE && + seq_data->status != STATUS_FILE_MISSING) + { + if(seq_data->context == NULL) + { + seq_data->context = new OpenColorIO_AE_Context(arb_data, + GetProjectDir(in_data) ); + } + + if(reg == REGION_CONVERT_BUTTON || reg == REGION_DISPLAY_BUTTON) + { + DoClickConvertDisplay(in_data, out_data, params, output, + event_extra, arb_data, seq_data, reg); + } + else if(reg == REGION_EXPORT_BUTTON) + { + DoClickExport(in_data, out_data, params, output, + event_extra, arb_data, seq_data, reg); + } + else // must be a menu then + { + DoClickMenus(in_data, out_data, params, output, + event_extra, arb_data, seq_data, reg); + } + } + } + catch(std::exception &e) + { + if(in_data->appl_id == 'FXTC') + { + PF_SPRINTF(out_data->return_msg, e.what()); + + out_data->out_flags |= PF_OutFlag_DISPLAY_ERROR_MESSAGE; + } + else + { + void *hwndOwner = NULL; + + #ifdef WIN_ENV + PF_GET_PLATFORM_DATA(PF_PlatData_MAIN_WND, &hwndOwner); + #endif + + ErrorMessage(e.what(), hwndOwner); + } + } + catch(...) + { + PF_SPRINTF(out_data->return_msg, "Unknown error"); + + out_data->out_flags |= PF_OutFlag_DISPLAY_ERROR_MESSAGE; + } + } + } + + + PF_UNLOCK_HANDLE(params[OCIO_DATA]->u.arb_d.value); + PF_UNLOCK_HANDLE(in_data->sequence_data); + + event_extra->evt_out_flags = PF_EO_HANDLED_EVENT; + + return err; +} + + +PF_Err HandleEvent ( + PF_InData *in_data, + PF_OutData *out_data, + PF_ParamDef *params[], + PF_LayerDef *output, + PF_EventExtra *extra ) +{ + PF_Err err = PF_Err_NONE; + + extra->evt_out_flags = 0; + + if(!err) + { + switch(extra->e_type) + { + case PF_Event_DRAW: + err = DrawEvent(in_data, out_data, params, output, extra); + break; + + case PF_Event_DO_CLICK: + err = DoClick(in_data, out_data, params, output, extra); + break; + } + } + + return err; +} diff --git a/src/aftereffects/mac/OpenColorIO_AE.plugin-Info.plist b/src/aftereffects/mac/OpenColorIO_AE.plugin-Info.plist new file mode 100755 index 0000000..45ad29d --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE.plugin-Info.plist @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleIdentifier</key> + <string>org.OpenColorIO.AfterEffects</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>OpenColorIO</string> + <key>CFBundleExecutable</key> + <string>OpenColorIO</string> + <key>CFBundlePackageType</key> + <string>eFKT</string> + <key>CFBundleSignature</key> + <string>FXTC</string> + <key>NSAppleScriptEnabled</key> + <string>No</string> + <key>NSHumanReadableCopyright</key> + <string>© 2011 OpenColorIO</string> + <key>LSRequiresCarbon</key> + <true/> +</dict> +</plist> diff --git a/src/aftereffects/mac/OpenColorIO_AE_Dialogs_Cocoa.mm b/src/aftereffects/mac/OpenColorIO_AE_Dialogs_Cocoa.mm new file mode 100644 index 0000000..24a048f --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_Dialogs_Cocoa.mm @@ -0,0 +1,237 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_Dialogs.h" + +#import "OpenColorIO_AE_MonitorProfileChooser_Controller.h" + +#import "OpenColorIO_AE_Menu.h" + + +bool OpenFile(char *path, int buf_len, const ExtensionMap &extensions, const void *hwnd) +{ + NSOpenPanel *panel = [NSOpenPanel openPanel]; + + [panel setTitle:@"OpenColorIO"]; + + + NSMutableArray *extension_array = [[NSMutableArray alloc] init]; + std::string message = "Formats: "; + bool first_one = true; + + for(ExtensionMap::const_iterator i = extensions.begin(); i != extensions.end(); i++) + { + [extension_array addObject:[NSString stringWithUTF8String:i->first.c_str()]]; + + if(first_one) + first_one = false; + else + message += ", "; + + message += "." + i->first; + } + + [panel setMessage:[NSString stringWithUTF8String:message.c_str()]]; + + + NSInteger result = [panel runModalForTypes:extension_array]; + + + [extension_array release]; + + + if(result == NSOKButton) + { + return [[panel filename] getCString:path + maxLength:buf_len + encoding:NSASCIIStringEncoding]; + } + else + return false; +} + + +bool SaveFile(char *path, int buf_len, const ExtensionMap &extensions, const void *hwnd) +{ + NSSavePanel *panel = [NSSavePanel savePanel]; + + [panel setTitle:@"OpenColorIO"]; + + + NSMutableArray *extension_array = [[NSMutableArray alloc] init]; + std::string message = "Formats: "; + bool first_one = true; + + for(ExtensionMap::const_iterator i = extensions.begin(); i != extensions.end(); i++) + { + [extension_array addObject:[NSString stringWithUTF8String:i->first.c_str()]]; + + if(first_one) + first_one = false; + else + message += ", "; + + message += i->second + " (." + i->first + ")"; + } + + [panel setAllowedFileTypes:extension_array]; + [panel setMessage:[NSString stringWithUTF8String:message.c_str()]]; + + + NSInteger result = [panel runModal]; + + + [extension_array release]; + + + if(result == NSOKButton) + { + return [[panel filename] getCString:path + maxLength:buf_len + encoding:NSASCIIStringEncoding]; + } + else + return false; +} + + +bool GetMonitorProfile(char *path, int buf_len, const void *hwnd) +{ + bool hit_ok = false; + + Class ui_controller_class = [[NSBundle bundleWithIdentifier:@"org.OpenColorIO.AfterEffects"] + classNamed:@"OpenColorIO_AE_MonitorProfileChooser_Controller"]; + + if(ui_controller_class) + { + OpenColorIO_AE_MonitorProfileChooser_Controller *ui_controller = [[ui_controller_class alloc] init]; + + if(ui_controller) + { + NSWindow *my_window = [ui_controller getWindow]; + + if(my_window) + { + NSInteger result = [NSApp runModalForWindow:my_window]; + + if(result == NSRunStoppedResponse) + { + [ui_controller getMonitorProfile:path bufferSize:buf_len]; + + hit_ok = true; + } + + [my_window release]; + } + + [ui_controller release]; + } + } + + return hit_ok; +} + + +void GetStdConfigs(ConfigVec &configs) +{ + const char *ocio_dir = "/Library/Application Support/OpenColorIO/"; + + NSFileManager *man = [NSFileManager defaultManager]; + + NSDirectoryEnumerator *enumerator = [man enumeratorAtPath:[NSString stringWithUTF8String:ocio_dir]]; + + for(NSString *file in enumerator) + { + std::string config_path(ocio_dir); + + config_path += [file UTF8String]; + + config_path += "/config.ocio"; + + [enumerator skipDescendents]; + + if([man fileExistsAtPath:[NSString stringWithUTF8String:config_path.c_str()]]) + { + configs.push_back( [file UTF8String] ); + } + } +} + + +std::string GetStdConfigPath(const std::string &name) +{ + const char *ocio_dir = "/Library/Application Support/OpenColorIO/"; + + std::string config_path = ocio_dir + name + "/config.ocio"; + + if( [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:config_path.c_str()]] ) + { + return config_path; + } + else + { + return ""; + } +} + + +int PopUpMenu(const MenuVec &menu_items, int selected_index, const void *hwnd) +{ + NSMutableArray *item_array = [[NSMutableArray alloc] init]; + + for(MenuVec::const_iterator i = menu_items.begin(); i != menu_items.end(); i++) + { + [item_array addObject:[NSString stringWithUTF8String:i->c_str()]]; + } + + + OpenColorIO_AE_Menu *menu = [[OpenColorIO_AE_Menu alloc] init:item_array + selectedItem:selected_index]; + + [menu showMenu]; + + NSInteger item = [menu selectedItem]; + + [menu release]; + [item_array release]; + + return item; +} + + +void ErrorMessage(const char *message, const void *hwnd) +{ + NSAlert *alert = [[NSAlert alloc] init]; + + [alert setMessageText:[NSString stringWithUTF8String:message]]; + + [alert runModal]; + + [alert release]; +} + diff --git a/src/aftereffects/mac/OpenColorIO_AE_GL_Cocoa.mm b/src/aftereffects/mac/OpenColorIO_AE_GL_Cocoa.mm new file mode 100644 index 0000000..3fc3797 --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_GL_Cocoa.mm @@ -0,0 +1,178 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_GL.h" + +#import <Cocoa/Cocoa.h> + + + +static NSWindow *g_win = nil; +static AGLContext g_context = NULL; +static GLuint g_framebuffer; + + +static bool HaveRequiredExtensions() +{ + const GLubyte *strVersion = glGetString(GL_VERSION); + const GLubyte *strExt = glGetString(GL_EXTENSIONS); + + if(strVersion == NULL || strExt == NULL) + return false; + + float gl_version; + sscanf((char *)strVersion, "%f", &gl_version); + +#define CheckExtension(N) gluCheckExtension((const GLubyte *)N, strExt) + + return (gl_version >= 2.0 && + CheckExtension("GL_ARB_color_buffer_float") && + CheckExtension("GL_ARB_texture_float") && + CheckExtension("GL_ARB_vertex_program") && + CheckExtension("GL_ARB_vertex_shader") && + CheckExtension("GL_ARB_texture_cube_map") && + CheckExtension("GL_ARB_fragment_shader") && + CheckExtension("GL_ARB_draw_buffers") && + CheckExtension("GL_ARB_framebuffer_object") ); +} + + +void GlobalSetup_GL() +{ + GLint aAttribs[64]; + u_short nIndexS= -1; + + aAttribs[++nIndexS] = AGL_RGBA; + aAttribs[++nIndexS] = AGL_DOUBLEBUFFER; + aAttribs[++nIndexS] = AGL_COLOR_FLOAT; + + aAttribs[++nIndexS] = AGL_RED_SIZE; + aAttribs[++nIndexS] = 32; + aAttribs[++nIndexS] = AGL_GREEN_SIZE; + aAttribs[++nIndexS] = 32; + aAttribs[++nIndexS] = AGL_BLUE_SIZE; + aAttribs[++nIndexS] = 32; + aAttribs[++nIndexS] = AGL_ALPHA_SIZE; + aAttribs[++nIndexS] = 32; + + aAttribs[++nIndexS] = AGL_NONE; + + + AGLPixelFormat oPixelFormat = aglChoosePixelFormat(NULL, 0, aAttribs); + + if(oPixelFormat) + { + g_context = aglCreateContext(oPixelFormat, NULL); + + aglDestroyPixelFormat(oPixelFormat); + } + + + if(g_context == NULL) + return; + + + g_win = [[NSWindow alloc] initWithContentRect:NSZeroRect + styleMask:NSBorderlessWindowMask + backing:NSBackingStoreBuffered + defer:NO]; + + + aglSetDrawable(g_context, (AGLDrawable)[[g_win graphicsContext] graphicsPort]); + + glFlush(); + + + SetPluginContext(); + + + + GLint units; + glGetIntegerv(GL_MAX_TEXTURE_UNITS, &units); + + + if( !HaveRequiredExtensions() || units < 2) + { + GlobalSetdown_GL(); + SetAEContext(); + return; + } + + glGenFramebuffersEXT(1, &g_framebuffer); + + + SetAEContext(); +} + + +bool HaveOpenGL() +{ + return (g_context != NULL && g_win != nil); +} + + +static AGLContext g_ae_context; + +void SetPluginContext() +{ + g_ae_context = aglGetCurrentContext(); + + aglSetCurrentContext(g_context); +} + + +void SetAEContext() +{ + // g_ae_context might be NULL...so be it + aglSetCurrentContext(g_ae_context); +} + + +GLuint GetFrameBuffer() +{ + return g_framebuffer; +} + + +void GlobalSetdown_GL() +{ + if(g_context) + { + aglDestroyContext(g_context); + g_context = NULL; + + glDeleteFramebuffersEXT(1, &g_framebuffer); + } + + if(g_win) + { + [g_win release]; + g_win = nil; + } +} diff --git a/src/aftereffects/mac/OpenColorIO_AE_Menu.h b/src/aftereffects/mac/OpenColorIO_AE_Menu.h new file mode 100644 index 0000000..e8920fa --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_Menu.h @@ -0,0 +1,45 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 <Cocoa/Cocoa.h> + + +@interface OpenColorIO_AE_Menu : NSView { + NSArray *menu_items; + NSInteger chosen_item; +} + +- (id)init:(NSArray *)menuItems selectedItem:(NSInteger)selected; + +- (void)showMenu; + +- (IBAction)menuItemAction:(id)sender; + +- (NSInteger)selectedItem; + +@end diff --git a/src/aftereffects/mac/OpenColorIO_AE_Menu.m b/src/aftereffects/mac/OpenColorIO_AE_Menu.m new file mode 100644 index 0000000..6d0a44b --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_Menu.m @@ -0,0 +1,114 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_Menu.h" + + +@implementation OpenColorIO_AE_Menu + +- (id)init:(NSArray *)menuItems selectedItem:(NSInteger)selected { + self = [super init]; + + menu_items = menuItems; + chosen_item = selected; + + return self; +} + +- (void)showMenu { + + // Doing some pretty weird stuff here. + // I need to bring up a contextual menu without AE giving me an NSView. + // To get the screen position, I use global NSApp methods. + // And I need to make an NSView to give to popUpContextMenu: + // so I can catch the selectors it sends, so I made this an NSView subclass. + + NSMenu *menu = [[NSMenu alloc] initWithTitle:@"Pop-Up"]; + + [menu setAutoenablesItems:FALSE]; + + + NSUInteger i; + + for(i=0; i < [menu_items count]; i++) + { + if( [[menu_items objectAtIndex:i] isEqualToString:@"(-"] ) + { + [menu addItem:[NSMenuItem separatorItem]]; + } + else + { + NSMenuItem *item = [menu addItemWithTitle:[menu_items objectAtIndex:i] + action:@selector(menuItemAction:) + keyEquivalent:@""]; + + [item setTag:i]; + + if(i == chosen_item) + [item setState:NSOnState]; + + if([[menu_items objectAtIndex:i] isEqualToString:@"$OCIO"] && NULL == getenv("OCIO")) + { + [item setEnabled:FALSE]; + [item setState:NSOffState]; + } + else if([[menu_items objectAtIndex:i] isEqualToString:@"(nada)"]) + { + [item setTitle:@"No configs in /Library/Application Support/OpenColorIO/"]; + [item setEnabled:FALSE]; + } + } + } + + + id fakeMouseEvent=[NSEvent mouseEventWithType:NSLeftMouseDown + location: [[NSApp keyWindow] convertScreenToBase:[NSEvent mouseLocation]] + modifierFlags:0 + timestamp:0 + windowNumber: [[NSApp keyWindow] windowNumber] + context:nil + eventNumber:0 + clickCount:1 + pressure:0]; + + [NSMenu popUpContextMenu:menu withEvent:fakeMouseEvent forView:self]; + + [menu release]; +} + +- (IBAction)menuItemAction:(id)sender { + NSMenuItem *item = (NSMenuItem *)sender; + + chosen_item = [item tag]; +} + +- (NSInteger)selectedItem { + return chosen_item; +} + +@end diff --git a/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser.xib b/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser.xib new file mode 100644 index 0000000..4e18dbe --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser.xib @@ -0,0 +1,494 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">10K549</string> + <string key="IBDocument.InterfaceBuilderVersion">851</string> + <string key="IBDocument.AppKitVersion">1038.36</string> + <string key="IBDocument.HIToolboxVersion">461.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">851</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">OpenColorIO_AE_MonitorProfileChooser_Controller</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="1005"> + <int key="NSWindowStyleMask">1</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{196, 369}, {364, 141}}</string> + <int key="NSWTFlags">544735232</int> + <string key="NSWindowTitle">OpenColorIO</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <object class="NSView" key="NSWindowView" id="1006"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSPopUpButton" id="313635640"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{125, 87}, {222, 26}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSPopUpButtonCell" key="NSCell" id="127421210"> + <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags2">2048</int> + <object class="NSFont" key="NSSupport" id="928433575"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="313635640"/> + <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + <nil key="NSMenuItem"/> + <bool key="NSMenuItemRespectAlignment">YES</bool> + <object class="NSMenu" key="NSMenu" id="39894973"> + <string key="NSTitle">OtherViews</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <reference key="NSMenuFont" ref="928433575"/> + </object> + <int key="NSSelectedIndex">-1</int> + <int key="NSPreferredEdge">1</int> + <bool key="NSUsesItemFromMenu">YES</bool> + <bool key="NSAltersState">YES</bool> + <int key="NSArrowPosition">2</int> + </object> + </object> + <object class="NSTextField" id="116991834"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{17, 94}, {106, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="292780847"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">138413056</int> + <string key="NSContents">Monitor Profile:</string> + <reference key="NSSupport" ref="928433575"/> + <reference key="NSControlView" ref="116991834"/> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + </object> + <object class="NSButton" id="995505874"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{254, 12}, {96, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="15784021"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">OK</string> + <reference key="NSSupport" ref="928433575"/> + <reference key="NSControlView" ref="995505874"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="1070422003"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{158, 12}, {96, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="393092215"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Cancel</string> + <reference key="NSSupport" ref="928433575"/> + <reference key="NSControlView" ref="1070422003"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{364, 141}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">profileMenu</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="313635640"/> + </object> + <int key="connectionID">15</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">16</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">clickCancel:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1070422003"/> + </object> + <int key="connectionID">17</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">clickOK:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="995505874"/> + </object> + <int key="connectionID">18</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1</int> + <reference key="object" ref="1005"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1006"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">2</int> + <reference key="object" ref="1006"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="313635640"/> + <reference ref="116991834"/> + <reference ref="995505874"/> + <reference ref="1070422003"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="313635640"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="127421210"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="127421210"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="39894973"/> + </object> + <reference key="parent" ref="313635640"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="39894973"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <reference key="parent" ref="127421210"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">9</int> + <reference key="object" ref="116991834"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="292780847"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="292780847"/> + <reference key="parent" ref="116991834"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="995505874"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="15784021"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="15784021"/> + <reference key="parent" ref="995505874"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="1070422003"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="393092215"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="393092215"/> + <reference key="parent" ref="1070422003"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>1.IBEditorWindowLastContentRect</string> + <string>1.IBPluginDependency</string> + <string>1.IBWindowTemplateEditedContentRect</string> + <string>1.NSWindowTemplate.visibleAtLaunch</string> + <string>1.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>10.IBPluginDependency</string> + <string>11.IBPluginDependency</string> + <string>11.IBViewBoundsToFrameTransform</string> + <string>12.IBPluginDependency</string> + <string>13.IBPluginDependency</string> + <string>13.IBViewBoundsToFrameTransform</string> + <string>14.IBPluginDependency</string> + <string>2.IBPluginDependency</string> + <string>3.IBPluginDependency</string> + <string>3.IBViewBoundsToFrameTransform</string> + <string>4.IBPluginDependency</string> + <string>5.IBEditorWindowLastContentRect</string> + <string>5.IBPluginDependency</string> + <string>9.IBPluginDependency</string> + <string>9.IBViewBoundsToFrameTransform</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>{{498, 559}, {364, 141}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{498, 559}, {364, 141}}</string> + <boolean value="NO"/> + <string>{196, 240}</string> + <string>{{202, 428}, {480, 270}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDfgAAwigAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDfgAAwigAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDFAAAw1oAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{598, 628}, {110, 4}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABCIAAAw1gAAA</bytes> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">18</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">OpenColorIO_AE_MonitorProfileChooser_Controller</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>clickCancel:</string> + <string>clickOK:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSButton</string> + <string>NSButton</string> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>clickCancel:</string> + <string>clickOK:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">clickCancel:</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBActionInfo"> + <string key="name">clickOK:</string> + <string key="candidateClassName">NSButton</string> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>profileMenu</string> + <string>window</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSPopUpButton</string> + <string>NSWindow</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>profileMenu</string> + <string>window</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">profileMenu</string> + <string key="candidateClassName">NSPopUpButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">window</string> + <string key="candidateClassName">NSWindow</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">OpenColorIO_AE_MonitorProfileChooser_Controller.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">OpenColorIO_AE.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser_Controller.h b/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser_Controller.h new file mode 100644 index 0000000..024fa29 --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser_Controller.h @@ -0,0 +1,46 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 <Cocoa/Cocoa.h> + +@interface OpenColorIO_AE_MonitorProfileChooser_Controller : NSObject { + IBOutlet NSPopUpButton *profileMenu; + IBOutlet NSWindow *window; + + NSMutableArray *name_array; + NSMapTable *profile_map; +} + +- (IBAction)clickOK:(NSButton *)sender; +- (IBAction)clickCancel:(NSButton *)sender; + +- (NSWindow *)getWindow; + +- (BOOL)getMonitorProfile:(char *)path bufferSize:(int)buf_len; + +@end diff --git a/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser_Controller.m b/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser_Controller.m new file mode 100644 index 0000000..323a83c --- /dev/null +++ b/src/aftereffects/mac/OpenColorIO_AE_MonitorProfileChooser_Controller.m @@ -0,0 +1,195 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_MonitorProfileChooser_Controller.h" + + +typedef struct { + NSMutableArray *name_array; + NSMapTable *profile_map; + const char *monitor_profile_path; + char *monitor_profile_name; +} IterateData; + +static OSErr profIterateProc(CMProfileIterateData* data, void* refcon) +{ + OSErr err = noErr; + + IterateData *i_data = (IterateData *)refcon; + + if(data->header.dataColorSpace == cmRGBData && data->location.locType == cmPathBasedProfile) + { + [i_data->name_array addObject:[NSString stringWithUTF8String:data->asciiName]]; + + [i_data->profile_map setObject:[NSString stringWithUTF8String:data->location.u.pathLoc.path] + forKey:[NSString stringWithUTF8String:data->asciiName] ]; + + if( i_data->monitor_profile_path && + !strcmp(data->location.u.pathLoc.path, i_data->monitor_profile_path) ) + { + strncpy(i_data->monitor_profile_name, data->asciiName, 255); + } + } + + return err; +} + + + +@implementation OpenColorIO_AE_MonitorProfileChooser_Controller + +- (id)init { + self = [super init]; + + if(!([NSBundle loadNibNamed:@"OpenColorIO_AE_MonitorProfileChooser" owner:self])) + return nil; + + + [window center]; + + // Originally tried to implement this with two NSArrays, one with paths and + // one with profile names (ICC descriptions). The problem is that when you + // add items to NSArrays one at a time, they auto-sort. But then it turns out I + // WANT them to sort because the profiles come in random order and the menu looks + // terrible if they're not sorted. + + // So I make an NSArray to set up the menu and an NSMapTable to convert from the + // selected menu item to the actual path. Got that? + + + name_array = [[NSMutableArray alloc] init]; + profile_map = [[NSMapTable alloc] init]; + + + // get monitor profile path + + // Oddly enough, the "Name" given to me by ColorSync for this is often "Display", + // but if you get the profile's description, you get something like + // "Apple Cinema HD Display". So to see if ColorSync runs accross the the monitor's + // profile so I can select it, I have to compare the paths, and then save the name + // I'm currently getting. + + CMProfileRef prof; + CMProfileLocation profLoc; + + UInt32 locationSize = cmCurrentProfileLocationSize; + + // Get the main GDevice. + CGDirectDisplayID theAVID = CGMainDisplayID(); + + // Get the profile for that AVID. + CMError err = CMGetProfileByAVID(theAVID, &prof); + + // Get location (FSRef) for that profile + err = NCMGetProfileLocation(prof, &profLoc, &locationSize); + + const char *monitor_profile_path = NULL; + char monitor_profile_name[256] = { '\0' }; + + if(profLoc.locType == cmPathBasedProfile) + { + monitor_profile_path = profLoc.u.pathLoc.path; + } + + + + // build profile map and name array + IterateData i_data = { name_array, profile_map, monitor_profile_path, monitor_profile_name }; + + UInt32 seed = 0; + UInt32 count; + + CMProfileIterateUPP iterateUPP; + iterateUPP = NewCMProfileIterateUPP((CMProfileIterateProcPtr)&profIterateProc); + + err = CMIterateColorSyncFolder(iterateUPP, &seed, &count, (void *)&i_data); + + DisposeCMProfileIterateUPP(iterateUPP); + + + + // set up menu with array + [profileMenu addItemsWithTitles:name_array]; + + + + // choose the display profile name if we have it (usually "Display") + if(monitor_profile_name[0] != '\0') + { + [profileMenu selectItemWithTitle:[NSString stringWithUTF8String:monitor_profile_name]]; + } + else if(monitor_profile_path != NULL) + { + // somehow the display profile wasn't found during iteration + // so let's add it + CFStringRef m_name; + + err = CMCopyProfileDescriptionString(prof, &m_name); + + NSString *ns_name = (NSString *)monitor_profile_name; + + [profile_map setObject:[NSString stringWithUTF8String:monitor_profile_path] + forKey:ns_name ]; + + [profileMenu addItemWithTitle:ns_name]; + + [profileMenu selectItemWithTitle:ns_name]; + + CFRelease(m_name); + } + + return self; +} + +- (void)dealloc { + [name_array release]; + [profile_map release]; + + [super dealloc]; +} + +- (IBAction)clickOK:(NSButton *)sender { + [NSApp stopModal]; +} + +- (IBAction)clickCancel:(NSButton *)sender { + [NSApp abortModal]; +} + +- (NSWindow *)getWindow { + return window; +} + +- (BOOL)getMonitorProfile:(char *)path bufferSize:(int)buf_len { + NSString *icc_name = [[profileMenu selectedItem] title]; + NSString *icc_path = [profile_map objectForKey:icc_name]; + + return [icc_path getCString:path maxLength:buf_len encoding:NSMacOSRomanStringEncoding]; +} + +@end diff --git a/src/aftereffects/vc/vc9/OpenColorABI.h b/src/aftereffects/vc/vc9/OpenColorABI.h new file mode 100644 index 0000000..acbb8b4 --- /dev/null +++ b/src/aftereffects/vc/vc9/OpenColorABI.h @@ -0,0 +1,100 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 INCLUDED_OCIO_OPENCOLORABI_H +#define INCLUDED_OCIO_OPENCOLORABI_H + +// Makefile configuration options +#define OCIO_NAMESPACE OpenColorIO +#define OCIO_USE_BOOST_PTR 1 +#define OCIO_VERSION "1.0.7" +#define OCIO_VERSION_NS v1 + +/* Version as a single 4-byte hex number, e.g. 0x01050200 == 1.5.2 + Use this for numeric comparisons, e.g. #if OCIO_VERSION_HEX >= ... + Note: in the case where SOVERSION is overridden at compile-time, + this will reflect the original API version number. + */ +#define OCIO_VERSION_HEX ((1 << 24) | \ + (0 << 16) | \ + (7 << 8)) + + +// Namespace / version mojo +#define OCIO_NAMESPACE_ENTER namespace OCIO_NAMESPACE { namespace OCIO_VERSION_NS +#define OCIO_NAMESPACE_EXIT using namespace OCIO_VERSION_NS; } +#define OCIO_NAMESPACE_USING using namespace OCIO_NAMESPACE; + +// shared_ptr / dynamic_pointer_cast +#if OCIO_USE_BOOST_PTR +#include <boost/shared_ptr.hpp> +#define OCIO_SHARED_PTR boost::shared_ptr +#define OCIO_DYNAMIC_POINTER_CAST boost::dynamic_pointer_cast +#elif __GNUC__ >= 4 +#include <tr1/memory> +#define OCIO_SHARED_PTR std::tr1::shared_ptr +#define OCIO_DYNAMIC_POINTER_CAST std::tr1::dynamic_pointer_cast +#else +#error OCIO needs gcc 4 or later to get access to <tr1/memory> (or specify USE_BOOST_PTR instead) +#endif + +#ifdef OpenColorIO_SHARED + // If supported, define OCIOEXPORT, OCIOHIDDEN + // (used to choose which symbols to export from OpenColorIO) + #if defined __linux__ || __APPLE__ + #if __GNUC__ >= 4 + #define OCIOEXPORT __attribute__ ((visibility("default"))) + #define OCIOHIDDEN __attribute__ ((visibility("hidden"))) + #else + #define OCIOEXPORT + #define OCIOHIDDEN + #endif + #elif defined(_WIN32) || defined(_WIN64) || defined(_WINDOWS) || defined(_MSC_VER) + // Windows requires you to export from the main library and then import in any others + #if defined OpenColorIO_EXPORTS + #define OCIOEXPORT __declspec(dllexport) + #else + #define OCIOEXPORT __declspec(dllimport) + #endif + #define OCIOHIDDEN + #else // Others platforms not supported atm + #define OCIOEXPORT + #define OCIOHIDDEN + #endif +#else + #define OCIOEXPORT + #define OCIOHIDDEN +#endif + +// Windows defines these troublesome macros that collide with std::limits +#if defined(_WIN32) || defined(_WIN64) || defined(_WINDOWS) || defined(_MSC_VER) +#undef min +#undef max +#endif + +#endif // INCLUDED_OCIO_OPENCOLORABI_H diff --git a/src/aftereffects/vc/vc9/OpenColorIO.vcproj b/src/aftereffects/vc/vc9/OpenColorIO.vcproj new file mode 100644 index 0000000..45b17d2 --- /dev/null +++ b/src/aftereffects/vc/vc9/OpenColorIO.vcproj @@ -0,0 +1,667 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="OpenColorIO"
+ ProjectGUID="{8B308357-C548-49D9-9134-8A61D57D524C}"
+ RootNamespace="OpenColorIO"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\export;..\..\..\..\src\core;..\..\..\..\ext\boost_1_48_0;..\..\..\..\ext\tinyxml;"..\..\..\..\ext\yaml-cpp\include";.\"
+ PreprocessorDefinitions="TIXML_USE_STL"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\export;..\..\..\..\src\core;..\..\..\..\ext\boost_1_48_0;..\..\..\..\ext\tinyxml;"..\..\..\..\ext\yaml-cpp\include";.\"
+ PreprocessorDefinitions="TIXML_USE_STL"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\export;..\..\..\..\src\core;..\..\..\..\ext\boost_1_48_0;..\..\..\..\ext\tinyxml;"..\..\..\..\ext\yaml-cpp\include";.\"
+ PreprocessorDefinitions="NDEBUG;TIXML_USE_STL"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\export;..\..\..\..\src\core;..\..\..\..\ext\boost_1_48_0;..\..\..\..\ext\tinyxml;"..\..\..\..\ext\yaml-cpp\include";.\"
+ PreprocessorDefinitions="NDEBUG;TIXML_USE_STL"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\..\src\core\AllocationOp.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\AllocationTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Baker.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Caching.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\CDLTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ColorSpace.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ColorSpaceTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Config.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Context.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\DisplayTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Exception.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ExponentOps.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ExponentTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormat3DL.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatCC.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatCCC.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatCSP.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatHDL.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatIridasCube.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatIridasItx.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\core\FileFormatIridasLook.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatPandora.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatSpi1D.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatSpi3D.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatSpiMtx.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatTruelight.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileFormatVF.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\GpuShaderDesc.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\GpuShaderUtils.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\GroupTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\HashUtils.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ImageDesc.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ImagePacking.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Logging.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\LogOps.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\LogTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Look.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\core\LookParse.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\LookTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Lut1DOp.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Lut3DOp.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\MathUtils.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\MatrixOps.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\MatrixTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\md5\md5.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\core\NoOps.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\OCIOYaml.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Op.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\core\OpOptimizers.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ParseUtils.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\PathUtils.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Processor.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\pystring\pystring.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ScanlineHelper.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Transform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\TruelightOp.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\TruelightTransform.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\UnitTest.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\..\..\..\src\core\AllocationOp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\CDLTransform.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ExponentOps.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\FileTransform.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\GpuShaderUtils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\HashUtils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ImagePacking.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Logging.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\LogOps.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\core\LookParse.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Lut1DOp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Lut3DOp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\MathUtils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\MatrixOps.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\md5\md5.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Mutex.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\core\NoOps.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\OCIOYaml.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Op.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\OpBuilders.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\export\OpenColorIO\OpenColorIO.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\export\OpenColorIO\OpenColorTransforms.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\export\OpenColorIO\OpenColorTypes.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ParseUtils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\PathUtils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Platform.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\PrivateTypes.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\Processor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\pystring\pystring.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\ScanlineHelper.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\SSE.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\TruelightOp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\src\core\UnitTest.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/src/aftereffects/vc/vc9/aftereffects/OpenColorIO_AE.sln b/src/aftereffects/vc/vc9/aftereffects/OpenColorIO_AE.sln new file mode 100644 index 0000000..61155eb --- /dev/null +++ b/src/aftereffects/vc/vc9/aftereffects/OpenColorIO_AE.sln @@ -0,0 +1,57 @@ +
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenColorIO_AE", "OpenColorIO_AE.vcproj", "{78FCC6BC-06A9-43AE-827A-1B68FFB7D75F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {069FB60C-57CE-4D0F-9EC2-068E2A3F2930} = {069FB60C-57CE-4D0F-9EC2-068E2A3F2930}
+ {8B308357-C548-49D9-9134-8A61D57D524C} = {8B308357-C548-49D9-9134-8A61D57D524C}
+ {A19BA95E-D8ED-4958-883B-32561AF905EA} = {A19BA95E-D8ED-4958-883B-32561AF905EA}
+ {CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED} = {CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}
+ {F1DAC6DE-348A-4215-87B2-7584578291AC} = {F1DAC6DE-348A-4215-87B2-7584578291AC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenColorIO", "..\OpenColorIO.vcproj", "{8B308357-C548-49D9-9134-8A61D57D524C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms", "..\ext\lcms.vcproj", "{069FB60C-57CE-4D0F-9EC2-068E2A3F2930}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml", "..\ext\tinyxml.vcproj", "{A19BA95E-D8ED-4958-883B-32561AF905EA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml", "..\ext\yaml.vcproj", "{F1DAC6DE-348A-4215-87B2-7584578291AC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glew", "..\ext\glew.vcproj", "{CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {78FCC6BC-06A9-43AE-827A-1B68FFB7D75F}.Debug|x64.ActiveCfg = Debug|x64
+ {78FCC6BC-06A9-43AE-827A-1B68FFB7D75F}.Debug|x64.Build.0 = Debug|x64
+ {78FCC6BC-06A9-43AE-827A-1B68FFB7D75F}.Release|x64.ActiveCfg = Release|x64
+ {78FCC6BC-06A9-43AE-827A-1B68FFB7D75F}.Release|x64.Build.0 = Release|x64
+ {8B308357-C548-49D9-9134-8A61D57D524C}.Debug|x64.ActiveCfg = Debug|x64
+ {8B308357-C548-49D9-9134-8A61D57D524C}.Debug|x64.Build.0 = Debug|x64
+ {8B308357-C548-49D9-9134-8A61D57D524C}.Release|x64.ActiveCfg = Release|x64
+ {8B308357-C548-49D9-9134-8A61D57D524C}.Release|x64.Build.0 = Release|x64
+ {069FB60C-57CE-4D0F-9EC2-068E2A3F2930}.Debug|x64.ActiveCfg = Debug|x64
+ {069FB60C-57CE-4D0F-9EC2-068E2A3F2930}.Debug|x64.Build.0 = Debug|x64
+ {069FB60C-57CE-4D0F-9EC2-068E2A3F2930}.Release|x64.ActiveCfg = Release|x64
+ {069FB60C-57CE-4D0F-9EC2-068E2A3F2930}.Release|x64.Build.0 = Release|x64
+ {A19BA95E-D8ED-4958-883B-32561AF905EA}.Debug|x64.ActiveCfg = Debug|x64
+ {A19BA95E-D8ED-4958-883B-32561AF905EA}.Debug|x64.Build.0 = Debug|x64
+ {A19BA95E-D8ED-4958-883B-32561AF905EA}.Release|x64.ActiveCfg = Release|x64
+ {A19BA95E-D8ED-4958-883B-32561AF905EA}.Release|x64.Build.0 = Release|x64
+ {F1DAC6DE-348A-4215-87B2-7584578291AC}.Debug|x64.ActiveCfg = Debug|x64
+ {F1DAC6DE-348A-4215-87B2-7584578291AC}.Debug|x64.Build.0 = Debug|x64
+ {F1DAC6DE-348A-4215-87B2-7584578291AC}.Release|x64.ActiveCfg = Release|x64
+ {F1DAC6DE-348A-4215-87B2-7584578291AC}.Release|x64.Build.0 = Release|x64
+ {CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}.Debug|x64.ActiveCfg = Debug|x64
+ {CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}.Debug|x64.Build.0 = Debug|x64
+ {CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}.Release|x64.ActiveCfg = Release|x64
+ {CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/aftereffects/vc/vc9/aftereffects/OpenColorIO_AE.vcproj b/src/aftereffects/vc/vc9/aftereffects/OpenColorIO_AE.vcproj new file mode 100644 index 0000000..c95c0b0 --- /dev/null +++ b/src/aftereffects/vc/vc9/aftereffects/OpenColorIO_AE.vcproj @@ -0,0 +1,448 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="OpenColorIO_AE"
+ ProjectGUID="{78FCC6BC-06A9-43AE-827A-1B68FFB7D75F}"
+ RootNamespace="OpenColorIO_AE"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\Debug/OpenColorIO_AE.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\;..\..\..;..\..\..\..\apps\ociobakelut;..\..\..\..\..\export;..\..\..\..\..\ext\boost_1_48_0;"..\..\..\..\..\ext\lcms2-2.1\include";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers\SP";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers\Win";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Resources";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Util";"..\..\..\..\..\ext\glew-1.7.0\include""
+ PreprocessorDefinitions="MSWindows;WIN32;_DEBUG;_WINDOWS;GLEW_STATIC"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough="AE_Effect.h"
+ AssemblerOutput="4"
+ BrowseInformation="1"
+ WarningLevel="2"
+ WarnAsError="false"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories=""
+ ShowProgress="true"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalDependencies="Mscms.lib opengl32.lib"
+ ShowProgress="0"
+ OutputFile="C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\Plug-ins\OpenColorIO.aex"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="libcmt.lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(IntDir)\OpenColorIO_AE.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)\OpenColorIO_AE.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ UseFAT32Workaround="true"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\Debug/OpenColorIO_AE.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories="..\;..\..\..;..\..\..\..\apps\ociobakelut;..\..\..\..\..\export;..\..\..\..\..\ext\boost_1_48_0;"..\..\..\..\..\ext\lcms2-2.1\include";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers\SP";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers\Win";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Resources";"..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Util";"..\..\..\..\..\ext\glew-1.7.0\include""
+ PreprocessorDefinitions="MSWindows;WIN32;NDEBUG;_WINDOWS;GLEW_STATIC"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough="AE_Effect.h"
+ AssemblerOutput="4"
+ BrowseInformation="1"
+ WarningLevel="2"
+ WarnAsError="false"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="0"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories=""
+ ShowProgress="true"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalDependencies="Mscms.lib opengl32.lib"
+ ShowProgress="0"
+ OutputFile="$(OutDir)\OpenColorIO.aex"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ IgnoreDefaultLibraryNames="libcmt.lib"
+ GenerateDebugInformation="false"
+ ProgramDatabaseFile="$(IntDir)\OpenColorIO_AE.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)\OpenColorIO_AE.lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ UseFAT32Workaround="true"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Supporting Code"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Util\AEGP_SuiteHandler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Util\MissingSuiteError.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\apps\ociobakelut\ocioicc.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;fi;fd"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Util\AEGP_SuiteHandler.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\DrawbotBot.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\apps\ociobakelut\ocioicc.h"
+ >
+ </File>
+ <File
+ RelativePath="..\OpenColorABI.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_Context.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_Dialogs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_GL.h"
+ >
+ </File>
+ <Filter
+ Name="AE"
+ >
+ <File
+ RelativePath="..\..\..\Headers\A.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_AdvEffectSuites.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_Effect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_EffectCB.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_EffectCBSuites.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_EffectSuites.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Util\AE_EffectSuitesHelper.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_EffectUI.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_GeneralPlug.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_GeneralPlugOld.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_IO.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\AE_Macros.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Util\AEFX_ArbParseHelper.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Util\AEGP_SuiteHandler.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Util\entry.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\FIEL_Public.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Util\Param_Utils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\PF_Masks.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\PR_Public.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Headers\PT_Public.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\Util\String_Utils.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\..\..\win\OpenColorIO.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_PiPL.r"
+ >
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Compiling the PiPL"
+ CommandLine="cl /I "$(ProjectDir)..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers" /D USE_AE_EFFECT_VERS /EP "..\..\..\$(InputName).r" > "$(IntDir)"\\"$(InputName).rr"
"$(ProjectDir)..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Resources\PiPLTool" "$(IntDir)\$(InputName).rr" "$(IntDir)\$(InputName).rrc"
cl /D "MSWindows" /EP $(IntDir)\$(InputName).rrc > "$(ProjectDir)"\\"$(InputName)".rc
"
+ Outputs="$(ProjectDir)\$(InputName).rc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Compiling the PiPL"
+ CommandLine="cl /I "$(ProjectDir)..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Headers" /D USE_AE_EFFECT_VERS /EP "..\..\..\$(InputName).r" > "$(IntDir)"\\"$(InputName).rr"
"$(ProjectDir)..\..\..\..\..\ext\Adobe After Effects CS5 SDK\Examples\Resources\PiPLTool" "$(IntDir)\$(InputName).rr" "$(IntDir)\$(InputName).rrc"
cl /D "MSWindows" /EP $(IntDir)\$(InputName).rrc > "$(ProjectDir)"\\"$(InputName)".rc
"
+ Outputs="$(ProjectDir)\$(InputName).rc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath=".\OpenColorIO_AE_PiPL.rc"
+ >
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ ShowProgress="true"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ ShowProgress="true"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\..\..\DrawbotBot.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_ArbData.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_Context.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\win\OpenColorIO_AE_Dialogs_Win.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\win\OpenColorIO_AE_GL_Win.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\OpenColorIO_AE_UI.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/src/aftereffects/vc/vc9/ext/glew.vcproj b/src/aftereffects/vc/vc9/ext/glew.vcproj new file mode 100644 index 0000000..dad7be7 --- /dev/null +++ b/src/aftereffects/vc/vc9/ext/glew.vcproj @@ -0,0 +1,319 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="glew"
+ ProjectGUID="{CC244BA5-4CA8-4B4F-B4CA-3394BF9E9FED}"
+ RootNamespace="glew"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\glew-1.7.0\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;GLEW_STATIC"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\glew-1.7.0\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GLEW_STATIC"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\glew-1.7.0\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;GLEW_STATIC"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\glew-1.7.0\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GLEW_STATIC"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\glew-1.7.0\src\glew.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\glew-1.7.0\src\glewinfo.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\glew-1.7.0\include\GL\glew.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\glew-1.7.0\include\GL\glxew.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\glew-1.7.0\include\GL\wglew.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/src/aftereffects/vc/vc9/ext/lcms.vcproj b/src/aftereffects/vc/vc9/ext/lcms.vcproj new file mode 100644 index 0000000..d8dfbb4 --- /dev/null +++ b/src/aftereffects/vc/vc9/ext/lcms.vcproj @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="lcms"
+ ProjectGUID="{069FB60C-57CE-4D0F-9EC2-068E2A3F2930}"
+ RootNamespace="lcms"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\lcms2-2.1\include""
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\lcms2-2.1\include""
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\lcms2-2.1\include""
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\lcms2-2.1\include""
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmscam02.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmscgats.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmscnvrt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmserr.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsgamma.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsgmt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsintrp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsio0.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsio1.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmslut.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsmd5.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsmtrx.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsnamed.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsopt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmspack.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmspcs.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsplugin.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsps2.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmssamp.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmssm.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmstypes.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsvirt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmswtpnt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\cmsxform.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\include\lcms2.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\src\lcms2_internal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\lcms2-2.1\include\lcms2_plugin.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/src/aftereffects/vc/vc9/ext/tinyxml.vcproj b/src/aftereffects/vc/vc9/ext/tinyxml.vcproj new file mode 100644 index 0000000..691f399 --- /dev/null +++ b/src/aftereffects/vc/vc9/ext/tinyxml.vcproj @@ -0,0 +1,323 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="tinyxml"
+ ProjectGUID="{A19BA95E-D8ED-4958-883B-32561AF905EA}"
+ RootNamespace="tinyxml"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\tinyxml"
+ PreprocessorDefinitions="TIXML_USE_STL"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\tinyxml"
+ PreprocessorDefinitions="TIXML_USE_STL"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\tinyxml"
+ PreprocessorDefinitions="NDEBUG;TIXML_USE_STL"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\..\..\ext\tinyxml"
+ PreprocessorDefinitions="NDEBUG;TIXML_USE_STL"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\tinyxml\tinystr.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\tinyxml\tinyxml.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\tinyxml\tinyxmlerror.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\tinyxml\tinyxmlparser.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\tinyxml\tinystr.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\tinyxml\tinyxml.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/src/aftereffects/vc/vc9/ext/yaml.vcproj b/src/aftereffects/vc/vc9/ext/yaml.vcproj new file mode 100644 index 0000000..46a0fe5 --- /dev/null +++ b/src/aftereffects/vc/vc9/ext/yaml.vcproj @@ -0,0 +1,603 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="yaml"
+ ProjectGUID="{F1DAC6DE-348A-4215-87B2-7584578291AC}"
+ RootNamespace="yaml"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\yaml-cpp\include""
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\yaml-cpp\include""
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\yaml-cpp\include""
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="build\$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(ProjectName)\$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories=""..\..\..\..\..\ext\yaml-cpp\include""
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\aliasmanager.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\binary.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\conversion.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\directives.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\emitfromevents.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\emitter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\emitterstate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\emitterutils.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\exp.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\contrib\graphbuilder.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\contrib\graphbuilderadapter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\contrib\graphbuilderadapter.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\iterator.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\node.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\nodebuilder.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\nodeownership.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\null.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\ostream.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\parser.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\regex.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scanner.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scanscalar.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scantag.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scantoken.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\simplekey.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\singledocparser.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\stream.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\tag.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\aliasmanager.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\anchor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\contrib\anchordict.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\collectionstack.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\conversion.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\directives.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\dll.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\emitfromevents.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\emitter.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\emittermanip.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\emitterstate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\emitterutils.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\eventhandler.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\exceptions.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\exp.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\contrib\graphbuilder.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\indentation.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\iterator.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\iterpriv.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\ltnode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\mark.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\node.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\nodebuilder.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\nodeimpl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\nodeownership.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\nodereadimpl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\nodeutil.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\noncopyable.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\null.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\ostream.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\parser.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\ptr_stack.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\ptr_vector.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\regex.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\regeximpl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scanner.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scanscalar.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\scantag.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\setting.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\singledocparser.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\stlemitter.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\stlnode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\stream.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\streamcharsource.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\stringsource.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\tag.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\src\token.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\traits.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\ext\yaml-cpp\include\yaml-cpp\yaml.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/src/aftereffects/win/OpenColorIO.rc b/src/aftereffects/win/OpenColorIO.rc new file mode 100644 index 0000000..e93fa8c --- /dev/null +++ b/src/aftereffects/win/OpenColorIO.rc @@ -0,0 +1,99 @@ +// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+PROFILEDIALOG DIALOGEX 0, 0, 233, 78
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "OpenColorIO"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,176,57,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,117,57,50,14
+ COMBOBOX 3,74,20,133,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Monitor Profile:",IDC_STATIC,15,20,55,12,SS_CENTERIMAGE,WS_EX_RIGHT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ "PROFILEDIALOG", DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 226
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 71
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/src/aftereffects/win/OpenColorIO_AE_Dialogs_Win.cpp b/src/aftereffects/win/OpenColorIO_AE_Dialogs_Win.cpp new file mode 100644 index 0000000..78e8648 --- /dev/null +++ b/src/aftereffects/win/OpenColorIO_AE_Dialogs_Win.cpp @@ -0,0 +1,564 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_Dialogs.h" + +#include <list> + +#include <Windows.h> +#include <Shlobj.h> +#include <Icm.h> + + +#include "lcms2.h" + + +HINSTANCE hDllInstance = NULL; + +static void AppendString(char *text, int &length, const char *str, int len = -1) +{ + if(len < 0) + len = strlen(str); + + const char *in = str; + char *out = &text[length]; + + for(int i=0; i < len; i++) + { + *out++ = *in++; + + length++; + } +} + +static void AppendNull(char *text, int &length) +{ + AppendString(text, length, "\0\0", 1); +} + +static void MakeFilterText(char *filter_text, + const ExtensionMap &extensions, + bool do_combined) +{ + // Construct the Windows file dialog filter string, which looks like this: + // + // "All OCIO files\0" + // "*.ocio;*.cube;*.vf;*.mga\0" + // "OpenColorIO (*.ocio)\0" + // "*.ocio\0" + // "Iridas (*.cube)\0" + // "*.cube\0" + // "Nuke Vectorfield (*.vf)\0" + // "*.vf\0" + // "Apple Color (*.mga)\0" + // "*.mga\0" + // "\0"; + // + // Note the inline nulls and final double-null, which foil regular string functions. + + char combined_entry[512]; + int combined_length = 0; + + char seperate_entries[512]; + int seperate_length = 0; + + AppendString(combined_entry, combined_length, "All OCIO files"); + AppendNull(combined_entry, combined_length); + + for(ExtensionMap::const_iterator i = extensions.begin(); i != extensions.end(); i++) + { + std::string extension = i->first; + std::string format = i->second; + + std::string format_part = format + " (*." + extension + ")"; + std::string extension_part = "*." + extension; + std::string combined_part = extension_part + ";"; + + AppendString(seperate_entries, seperate_length, format_part.c_str(), format_part.size()); + AppendNull(seperate_entries, seperate_length); + AppendString(seperate_entries, seperate_length, extension_part.c_str(), extension_part.size()); + AppendNull(seperate_entries, seperate_length); + + AppendString(combined_entry, combined_length, combined_part.c_str(), combined_part.size()); + } + + AppendNull(seperate_entries, seperate_length); + AppendNull(combined_entry, combined_length); + + + char *in = combined_entry; + char *out = filter_text; + + if(do_combined) + { + for(int i=0; i < combined_length; i++) + *out++ = *in++; + } + + in = seperate_entries; + + for(int i=0; i < seperate_length; i++) + *out++ = *in++; +} + + +bool OpenFile(char *path, int buf_len, const ExtensionMap &extensions, const void *hwnd) +{ + const char *my_lpstrTitle = "Import OCIO"; + const char *my_lpstrDefExt = "ocio"; + + char my_lpstrFilter[512]; + MakeFilterText(my_lpstrFilter, extensions, true); + + + OPENFILENAME lpofn; + + lpofn.lStructSize = sizeof(lpofn); + lpofn.hwndOwner = (HWND)hwnd; + lpofn.hInstance = hDllInstance; + lpofn.lpstrFilter = my_lpstrFilter; + lpofn.lpstrCustomFilter = NULL; + lpofn.nMaxCustFilter = 0; + lpofn.nFilterIndex = 0; + lpofn.lpstrFile = path; + lpofn.nMaxFile = buf_len; + lpofn.lpstrFileTitle = path; + lpofn.nMaxFileTitle = buf_len; + lpofn.lpstrInitialDir = NULL; + lpofn.lpstrTitle = my_lpstrTitle; + lpofn.Flags = OFN_LONGNAMES | + OFN_HIDEREADONLY | + OFN_PATHMUSTEXIST | + OFN_OVERWRITEPROMPT; + lpofn.nFileOffset = 0; + lpofn.nFileExtension = 0; + lpofn.lpstrDefExt = my_lpstrDefExt; + lpofn.lCustData = 0; + lpofn.lpfnHook = NULL; + lpofn.lpTemplateName = NULL; + lpofn.lStructSize = sizeof(lpofn); + + return GetOpenFileName(&lpofn); +} + + +bool SaveFile(char *path, int buf_len, const ExtensionMap &extensions, const void *hwnd) +{ + const char *my_lpstrTitle = "Export OCIO"; + const char *my_lpstrDefExt = "icc"; + + char my_lpstrFilter[256]; + MakeFilterText(my_lpstrFilter, extensions, false); + + + OPENFILENAME lpofn; + + lpofn.lStructSize = sizeof(lpofn); + lpofn.hwndOwner = (HWND)hwnd; + lpofn.hInstance = hDllInstance; + lpofn.lpstrFilter = my_lpstrFilter; + lpofn.lpstrCustomFilter = NULL; + lpofn.nMaxCustFilter = 0; + lpofn.nFilterIndex = 0; + lpofn.lpstrFile = path; + lpofn.nMaxFile = buf_len; + lpofn.lpstrFileTitle = path; + lpofn.nMaxFileTitle = buf_len; + lpofn.lpstrInitialDir = NULL; + lpofn.lpstrTitle = my_lpstrTitle; + lpofn.Flags = OFN_LONGNAMES | + OFN_HIDEREADONLY | + OFN_PATHMUSTEXIST | + OFN_OVERWRITEPROMPT; + lpofn.nFileOffset = 0; + lpofn.nFileExtension = 0; + lpofn.lpstrDefExt = my_lpstrDefExt; + lpofn.lCustData = 0; + lpofn.lpfnHook = NULL; + lpofn.lpTemplateName = NULL; + lpofn.lStructSize = sizeof(lpofn); + + return GetSaveFileName(&lpofn); +} + +// dialog item IDs +enum { + DLOG_noUI = -1, + DLOG_OK = IDOK, // was 1 + DLOG_Cancel = IDCANCEL, // was 2 + DLOG_Profile_Menu = 3 +}; + + +static std::vector<std::string> *g_profile_vec = NULL; +static int g_selected_item = DLOG_noUI; + +static WORD g_item_clicked = 0; + +static BOOL CALLBACK DialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + BOOL fError; + + switch (message) + { + case WM_INITDIALOG: + do{ + // add profile list to combo boxe + HWND menu = GetDlgItem(hwndDlg, DLOG_Profile_Menu); + + for(int i=0; i < g_profile_vec->size(); i++) + { + SendMessage(menu, (UINT)CB_ADDSTRING, + (WPARAM)wParam, (LPARAM)(LPCTSTR)g_profile_vec->at(i).c_str() ); + + SendMessage(menu,(UINT)CB_SETITEMDATA, + (WPARAM)i, (LPARAM)(DWORD)i); // channel index number + + if( g_selected_item == i ) + SendMessage(menu, CB_SETCURSEL, (WPARAM)i, (LPARAM)0); + } + }while(0); + return FALSE; + + case WM_COMMAND: + g_item_clicked = LOWORD(wParam); + + switch(LOWORD(wParam)) + { + case DLOG_OK: + case DLOG_Cancel: // do the same thing, but g_item_clicked differ + do{ + HWND menu = GetDlgItem(hwndDlg, DLOG_Profile_Menu); + + LRESULT cur_sel = SendMessage(menu, (UINT)CB_GETCURSEL, + (WPARAM)0, (LPARAM)0); + + g_selected_item = SendMessage(menu, (UINT)CB_GETITEMDATA, + (WPARAM)cur_sel, (LPARAM)0); + + }while(0); + + EndDialog(hwndDlg, 0); + return TRUE; + } + } + + return FALSE; +} + +bool GetMonitorProfile(char *path, int buf_len, const void *hwnd) +{ + std::list<std::string> profile_descriptions; + std::map<std::string, std::string> profile_paths; + + // path to the monitor's profile + char monitor_profile_path[256] = { '\0' }; + DWORD path_size = 256; + BOOL get_icm_result = GetICMProfile(GetDC((HWND)hwnd), &path_size, monitor_profile_path); + + // directory where Windows stores its profiles + char profile_directory[256] = { '\0' }; + DWORD dir_name_size = 256; + BOOL get_color_dir_result = GetColorDirectory(NULL, profile_directory, &dir_name_size); + + // Get the profile file names from Windows + ENUMTYPE enum_type; + enum_type.dwSize = sizeof(ENUMTYPE); + enum_type.dwVersion = ENUM_TYPE_VERSION; + enum_type.dwFields = ET_DEVICECLASS; // alternately could use ET_CLASS + enum_type.dwDeviceClass = CLASS_MONITOR; + + BYTE *buf = NULL; + DWORD buf_size = 0; + DWORD num_profiles = 0; + + BOOL other_enum_result = EnumColorProfiles(NULL, &enum_type, + buf, &buf_size, &num_profiles); + + if(buf_size > 0 && num_profiles > 0) + { + buf = (BYTE *)malloc(buf_size); + + other_enum_result = EnumColorProfiles(NULL, &enum_type, + buf, &buf_size, &num_profiles); + + if(other_enum_result) + { + // build a list of the profile descriptions + // and a map to return the paths + char *prof_name = (char *)buf; + + for(int i=0; i < num_profiles; i++) + { + std::string prof = prof_name; + std::string prof_path = std::string(profile_directory) + "\\" + prof_name; + + cmsHPROFILE hProfile = cmsOpenProfileFromFile(prof_path.c_str(), "r"); + + // Note: Windows will give us profiles that aren't ICC (.cdmp for example). + // Don't worry, LittleCMS will just return NULL for those. + if(hProfile) + { + char profile_description[256]; + + cmsUInt32Number got_desc = cmsGetProfileInfoASCII(hProfile, + cmsInfoDescription, + "en", "US", + profile_description, + 256); + + if(got_desc) + { + profile_descriptions.push_back(profile_description); + + profile_paths[ profile_description ] = prof_path; + } + + cmsCloseProfile(hProfile); + } + + prof_name += strlen(prof_name) + 1; + } + } + + free(buf); + } + + + if(profile_descriptions.size() > 0) + { + // set a vector and selected index for building the profile menu + profile_descriptions.sort(); + profile_descriptions.unique(); + + std::vector<std::string> profile_vec; + int selected = 0; + + for(std::list<std::string>::const_iterator i = profile_descriptions.begin(); i != profile_descriptions.end(); i++) + { + profile_vec.push_back( *i ); + + if( profile_paths[ *i ] == monitor_profile_path) + { + selected = profile_vec.size() - 1; + } + } + + // run the dialog + g_profile_vec = &profile_vec; + g_selected_item = selected; + + int status = DialogBox(hDllInstance, (LPSTR)"PROFILEDIALOG", + (HWND)hwnd, (DLGPROC)DialogProc); + + + if(status == -1) + { + // dialog didn't open, my bad + return true; + } + else if(g_item_clicked == DLOG_Cancel) + { + return false; + } + else + { + strncpy(path, profile_paths[ profile_vec[ g_selected_item ] ].c_str(), buf_len); + + return true; + } + } + else + return true; +} + + +int PopUpMenu(const MenuVec &menu_items, int selected_index, const void *hwnd) +{ + HMENU menu = CreatePopupMenu(); + + if(menu) + { + for(int i=0; i < menu_items.size(); i++) + { + std::string label = menu_items[i]; + + UINT flags = (i == selected_index ? (MF_STRING | MF_CHECKED) : MF_STRING); + + if(label == "(-") + { + flags |= MF_SEPARATOR; + } + else if(label == "$OCIO") + { + char *file = std::getenv("OCIO"); + + if(file == NULL) + flags |= MF_GRAYED; + } + else if(label == "(nada)") + { + flags |= MF_GRAYED; + + char appdata_path[MAX_PATH]; + HRESULT result = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, + SHGFP_TYPE_CURRENT, appdata_path); + + if(result == S_OK) + { + label = "No configs in " + std::string(appdata_path) + "\\OpenColorIO\\"; + } + } + + AppendMenu(menu, flags, i + 1, label.c_str()); + } + + POINT pos; + GetCursorPos(&pos); + + int result = TrackPopupMenuEx(menu, + (TPM_NONOTIFY | TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD), + pos.x, pos.y, (HWND)hwnd, NULL); + + DestroyMenu(menu); + + if(result == 0) + { + // means the user clicked off the menu + return selected_index; + } + else + return result - 1; + } + else + return selected_index; +} + + +void GetStdConfigs(ConfigVec &configs) +{ + char appdata_path[MAX_PATH]; + + HRESULT result = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, + SHGFP_TYPE_CURRENT, appdata_path); + + if(result == S_OK) + { + std::string dir_path = std::string(appdata_path) + "\\OpenColorIO\\"; + + std::string search_path = dir_path + "*"; + + WIN32_FIND_DATA find_data; + + HANDLE searchH = FindFirstFile(search_path.c_str(), &find_data); + + if(searchH != INVALID_HANDLE_VALUE) + { + if(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + std::string config_path = dir_path + find_data.cFileName + "\\config.ocio"; + + WIN32_FIND_DATA find_data_temp; + + HANDLE fileH = FindFirstFile(config_path.c_str(), &find_data_temp); + + if(fileH != INVALID_HANDLE_VALUE) + { + configs.push_back(find_data.cFileName); + + FindClose(fileH); + } + } + + while( FindNextFile(searchH, &find_data) ) + { + if(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + std::string config_path = dir_path + find_data.cFileName + "\\config.ocio"; + + WIN32_FIND_DATA find_data_temp; + + HANDLE fileH = FindFirstFile(config_path.c_str(), &find_data_temp); + + if(fileH != INVALID_HANDLE_VALUE) + { + configs.push_back(find_data.cFileName); + + FindClose(fileH); + } + } + } + + FindClose(searchH); + } + } +} + + +std::string GetStdConfigPath(const std::string &name) +{ + char appdata_path[MAX_PATH]; + + HRESULT result = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, + SHGFP_TYPE_CURRENT, appdata_path); + + if(result == S_OK) + { + std::string config_path = std::string(appdata_path) + "\\OpenColorIO\\" + + name + "\\config.ocio"; + + WIN32_FIND_DATA find_data; + + HANDLE searchH = FindFirstFile(config_path.c_str(), &find_data); + + if(searchH != INVALID_HANDLE_VALUE) + { + FindClose(searchH); + + return config_path; + } + } + + return ""; +} + + +void ErrorMessage(const char *message , const void *hwnd) +{ + MessageBox((HWND)hwnd, message, "OpenColorIO", MB_OK); +} + + +BOOL WINAPI DllMain(HANDLE hInstance, DWORD fdwReason, LPVOID lpReserved) +{ + if (fdwReason == DLL_PROCESS_ATTACH) + hDllInstance = (HINSTANCE)hInstance; + + return TRUE; +} diff --git a/src/aftereffects/win/OpenColorIO_AE_GL_Win.cpp b/src/aftereffects/win/OpenColorIO_AE_GL_Win.cpp new file mode 100644 index 0000000..867522a --- /dev/null +++ b/src/aftereffects/win/OpenColorIO_AE_GL_Win.cpp @@ -0,0 +1,212 @@ +/* +Copyright (c) 2003-2012 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 "OpenColorIO_AE_GL.h" + +#include <windows.h> +#include <stdlib.h> +#include <stdio.h> + +static HWND g_win = NULL; +static HDC g_hdc = NULL; +static HGLRC g_context = NULL; +static GLuint g_framebuffer; + + +static bool HaveRequiredExtensions() +{ + const GLubyte *strVersion = glGetString(GL_VERSION); + const GLubyte *strExt = glGetString(GL_EXTENSIONS); + + if(strVersion == NULL) + return false; + +#define CheckExtension(N) glewIsExtensionSupported(N) + + return (GLEW_VERSION_2_0 && + CheckExtension("GL_ARB_color_buffer_float") && + CheckExtension("GL_ARB_texture_float") && + CheckExtension("GL_ARB_vertex_program") && + CheckExtension("GL_ARB_vertex_shader") && + CheckExtension("GL_ARB_texture_cube_map") && + CheckExtension("GL_ARB_fragment_shader") && + CheckExtension("GL_ARB_draw_buffers") && + CheckExtension("GL_ARB_framebuffer_object") ); +} + + +void GlobalSetup_GL() +{ + GLenum init = glewInit(); + + if(init != GLEW_OK) + return; + + + WNDCLASSEX winClass; + MSG uMsg; + + memset(&uMsg,0,sizeof(uMsg)); + + winClass.lpszClassName = "OpenColorIO_AE_Win_Class"; + winClass.cbSize = sizeof(WNDCLASSEX); + winClass.style = CS_HREDRAW | CS_VREDRAW; + winClass.lpfnWndProc = DefWindowProc; + winClass.hInstance = NULL; + winClass.hIcon = NULL; + winClass.hIconSm = NULL; + winClass.hCursor = LoadCursor(NULL, IDC_ARROW); + winClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); + winClass.lpszMenuName = NULL; + winClass.cbClsExtra = 0; + winClass.cbWndExtra = 0; + + if( !( RegisterClassEx(&winClass) ) ) + return; + + g_win = CreateWindowEx( NULL, "OpenColorIO_AE_Win_Class", + "OpenGL-using FBOs in AE", + 0, 0, + 0, 50, 50, + NULL, + NULL, + NULL, + NULL ); + + if(g_win == NULL) + return; + + g_hdc = GetDC(g_win); + + + int pixelFormat; + + PIXELFORMATDESCRIPTOR pfd; + ZeroMemory( &pfd, sizeof( pfd ) ); + + pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); + pfd.nVersion = 1; + pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; + pfd.iPixelType = PFD_TYPE_RGBA; + pfd.cColorBits = 128; + pfd.cDepthBits = 32; + pfd.cStencilBits = 32; + pfd.iLayerType = PFD_MAIN_PLANE; + + pixelFormat = ChoosePixelFormat(g_hdc, &pfd); + + BOOL set_format = SetPixelFormat(g_hdc, pixelFormat, &pfd); + + if(!set_format) + { + GlobalSetdown_GL(); + return; + } + + g_context = wglCreateContext(g_hdc); + + glFlush(); + + if(g_context == NULL) + { + GlobalSetdown_GL(); + return; + } + + + SetPluginContext(); + + + GLint units; + glGetIntegerv(GL_MAX_TEXTURE_UNITS, &units); + + + if( !HaveRequiredExtensions() || units < 2) + { + GlobalSetdown_GL(); + SetAEContext(); + return; + } + + glGenFramebuffersEXT(1, &g_framebuffer); + + + SetAEContext(); +} + + +bool HaveOpenGL() +{ + return (g_context != NULL && g_win != NULL); +} + + +static HDC g_ae_hdc; +static HGLRC g_ae_context; + +void SetPluginContext() +{ + g_ae_hdc = wglGetCurrentDC(); + g_ae_context = wglGetCurrentContext(); + + wglMakeCurrent(g_hdc, g_context); +} + + +void SetAEContext() +{ + wglMakeCurrent(g_ae_hdc, g_ae_context); +} + + +GLuint GetFrameBuffer() +{ + return g_framebuffer; +} + + +void GlobalSetdown_GL() +{ + if(g_context) + { + wglDeleteContext(g_context); + g_context = NULL; + + glDeleteFramebuffersEXT(1, &g_framebuffer); + } + + if(g_win) + { + ReleaseDC(g_win, g_hdc); + g_win = NULL; + g_hdc = NULL; + + UnregisterClass("OpenColorIO_AE_Win_Class", NULL); + } +} diff --git a/src/aftereffects/win/resource.h b/src/aftereffects/win/resource.h new file mode 100644 index 0000000..2191cce --- /dev/null +++ b/src/aftereffects/win/resource.h @@ -0,0 +1,17 @@ +//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by OpenColorIO.rc
+//
+#define IDB_BITMAP1 102
+#define BANNER1 102
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 103
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1002
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/src/aftereffects/xcode/OpenColorABI.h b/src/aftereffects/xcode/OpenColorABI.h new file mode 100644 index 0000000..a3ce756 --- /dev/null +++ b/src/aftereffects/xcode/OpenColorABI.h @@ -0,0 +1,100 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +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 Sony Pictures Imageworks nor the names of its + contributors 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 INCLUDED_OCIO_OPENCOLORABI_H +#define INCLUDED_OCIO_OPENCOLORABI_H + +// Makefile configuration options +#define OCIO_NAMESPACE OpenColorIO +#define OCIO_USE_BOOST_PTR 0 +#define OCIO_VERSION "1.0.7" +#define OCIO_VERSION_NS v1 + +/* Version as a single 4-byte hex number, e.g. 0x01050200 == 1.5.2 + Use this for numeric comparisons, e.g. #if OCIO_VERSION_HEX >= ... + Note: in the case where SOVERSION is overridden at compile-time, + this will reflect the original API version number. + */ +#define OCIO_VERSION_HEX ((1 << 24) | \ + (0 << 16) | \ + (7 << 8)) + + +// Namespace / version mojo +#define OCIO_NAMESPACE_ENTER namespace OCIO_NAMESPACE { namespace OCIO_VERSION_NS +#define OCIO_NAMESPACE_EXIT using namespace OCIO_VERSION_NS; } +#define OCIO_NAMESPACE_USING using namespace OCIO_NAMESPACE; + +// shared_ptr / dynamic_pointer_cast +#if OCIO_USE_BOOST_PTR +#include <boost/shared_ptr.hpp> +#define OCIO_SHARED_PTR boost::shared_ptr +#define OCIO_DYNAMIC_POINTER_CAST boost::dynamic_pointer_cast +#elif __GNUC__ >= 4 +#include <tr1/memory> +#define OCIO_SHARED_PTR std::tr1::shared_ptr +#define OCIO_DYNAMIC_POINTER_CAST std::tr1::dynamic_pointer_cast +#else +#error OCIO needs gcc 4 or later to get access to <tr1/memory> (or specify USE_BOOST_PTR instead) +#endif + +#ifdef OpenColorIO_SHARED + // If supported, define OCIOEXPORT, OCIOHIDDEN + // (used to choose which symbols to export from OpenColorIO) + #if defined __linux__ || __APPLE__ + #if __GNUC__ >= 4 + #define OCIOEXPORT __attribute__ ((visibility("default"))) + #define OCIOHIDDEN __attribute__ ((visibility("hidden"))) + #else + #define OCIOEXPORT + #define OCIOHIDDEN + #endif + #elif defined(_WIN32) || defined(_WIN64) || defined(_WINDOWS) || defined(_MSC_VER) + // Windows requires you to export from the main library and then import in any others + #if defined OpenColorIO_EXPORTS + #define OCIOEXPORT __declspec(dllexport) + #else + #define OCIOEXPORT __declspec(dllimport) + #endif + #define OCIOHIDDEN + #else // Others platforms not supported atm + #define OCIOEXPORT + #define OCIOHIDDEN + #endif +#else + #define OCIOEXPORT + #define OCIOHIDDEN +#endif + +// Windows defines these troublesome macros that collide with std::limits +#if defined(_WIN32) || defined(_WIN64) || defined(_WINDOWS) || defined(_MSC_VER) +#undef min +#undef max +#endif + +#endif // INCLUDED_OCIO_OPENCOLORABI_H diff --git a/src/aftereffects/xcode/OpenColorIO.xcodeproj/project.pbxproj b/src/aftereffects/xcode/OpenColorIO.xcodeproj/project.pbxproj new file mode 100644 index 0000000..eb84949 --- /dev/null +++ b/src/aftereffects/xcode/OpenColorIO.xcodeproj/project.pbxproj @@ -0,0 +1,589 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 2A7CACBB15536CD700F52C98 /* FileFormatIridasLook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7CACB515536CD700F52C98 /* FileFormatIridasLook.cpp */; }; + 2A7CACBC15536CD700F52C98 /* LookParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7CACB615536CD700F52C98 /* LookParse.cpp */; }; + 2A7CACBD15536CD700F52C98 /* LookParse.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7CACB715536CD700F52C98 /* LookParse.h */; }; + 2A7CACBE15536CD700F52C98 /* NoOps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7CACB815536CD700F52C98 /* NoOps.cpp */; }; + 2A7CACBF15536CD700F52C98 /* NoOps.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7CACB915536CD700F52C98 /* NoOps.h */; }; + 2A7CACC015536CD700F52C98 /* OpOptimizers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7CACBA15536CD700F52C98 /* OpOptimizers.cpp */; }; + 2ACF56CC14776A1E00991ED5 /* AllocationOp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567614776A1E00991ED5 /* AllocationOp.cpp */; }; + 2ACF56CD14776A1E00991ED5 /* AllocationOp.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF567714776A1E00991ED5 /* AllocationOp.h */; }; + 2ACF56CE14776A1E00991ED5 /* AllocationTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567814776A1E00991ED5 /* AllocationTransform.cpp */; }; + 2ACF56CF14776A1E00991ED5 /* Baker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567914776A1E00991ED5 /* Baker.cpp */; }; + 2ACF56D014776A1E00991ED5 /* Caching.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567A14776A1E00991ED5 /* Caching.cpp */; }; + 2ACF56D114776A1E00991ED5 /* CDLTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567B14776A1E00991ED5 /* CDLTransform.cpp */; }; + 2ACF56D214776A1E00991ED5 /* CDLTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF567C14776A1E00991ED5 /* CDLTransform.h */; }; + 2ACF56D314776A1E00991ED5 /* ColorSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567D14776A1E00991ED5 /* ColorSpace.cpp */; }; + 2ACF56D414776A1E00991ED5 /* ColorSpaceTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567E14776A1E00991ED5 /* ColorSpaceTransform.cpp */; }; + 2ACF56D514776A1E00991ED5 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF567F14776A1E00991ED5 /* Config.cpp */; }; + 2ACF56D614776A1E00991ED5 /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568014776A1E00991ED5 /* Context.cpp */; }; + 2ACF56D714776A1E00991ED5 /* DisplayTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568114776A1E00991ED5 /* DisplayTransform.cpp */; }; + 2ACF56D814776A1E00991ED5 /* Exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568214776A1E00991ED5 /* Exception.cpp */; }; + 2ACF56D914776A1E00991ED5 /* ExponentOps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568314776A1E00991ED5 /* ExponentOps.cpp */; }; + 2ACF56DA14776A1E00991ED5 /* ExponentOps.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF568414776A1E00991ED5 /* ExponentOps.h */; }; + 2ACF56DB14776A1E00991ED5 /* ExponentTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568514776A1E00991ED5 /* ExponentTransform.cpp */; }; + 2ACF56DC14776A1E00991ED5 /* FileFormat3DL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568614776A1E00991ED5 /* FileFormat3DL.cpp */; }; + 2ACF56DD14776A1E00991ED5 /* FileFormatCC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568714776A1E00991ED5 /* FileFormatCC.cpp */; }; + 2ACF56DE14776A1E00991ED5 /* FileFormatCCC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568814776A1E00991ED5 /* FileFormatCCC.cpp */; }; + 2ACF56DF14776A1E00991ED5 /* FileFormatCSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568914776A1E00991ED5 /* FileFormatCSP.cpp */; }; + 2ACF56E014776A1E00991ED5 /* FileFormatHDL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568A14776A1E00991ED5 /* FileFormatHDL.cpp */; }; + 2ACF56E114776A1E00991ED5 /* FileFormatIridasCube.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568B14776A1E00991ED5 /* FileFormatIridasCube.cpp */; }; + 2ACF56E214776A1E00991ED5 /* FileFormatIridasItx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568C14776A1E00991ED5 /* FileFormatIridasItx.cpp */; }; + 2ACF56E314776A1E00991ED5 /* FileFormatPandora.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568D14776A1E00991ED5 /* FileFormatPandora.cpp */; }; + 2ACF56E414776A1E00991ED5 /* FileFormatSpi1D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568E14776A1E00991ED5 /* FileFormatSpi1D.cpp */; }; + 2ACF56E514776A1E00991ED5 /* FileFormatSpi3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF568F14776A1E00991ED5 /* FileFormatSpi3D.cpp */; }; + 2ACF56E614776A1E00991ED5 /* FileFormatSpiMtx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569014776A1E00991ED5 /* FileFormatSpiMtx.cpp */; }; + 2ACF56E714776A1E00991ED5 /* FileFormatTruelight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569114776A1E00991ED5 /* FileFormatTruelight.cpp */; }; + 2ACF56E814776A1E00991ED5 /* FileFormatVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569214776A1E00991ED5 /* FileFormatVF.cpp */; }; + 2ACF56E914776A1E00991ED5 /* FileTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569314776A1E00991ED5 /* FileTransform.cpp */; }; + 2ACF56EA14776A1E00991ED5 /* FileTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF569414776A1E00991ED5 /* FileTransform.h */; }; + 2ACF56EC14776A1E00991ED5 /* GpuShaderDesc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569614776A1E00991ED5 /* GpuShaderDesc.cpp */; }; + 2ACF56ED14776A1E00991ED5 /* GpuShaderUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569714776A1E00991ED5 /* GpuShaderUtils.cpp */; }; + 2ACF56EE14776A1E00991ED5 /* GpuShaderUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF569814776A1E00991ED5 /* GpuShaderUtils.h */; }; + 2ACF56EF14776A1E00991ED5 /* GroupTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569914776A1E00991ED5 /* GroupTransform.cpp */; }; + 2ACF56F014776A1E00991ED5 /* HashUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569A14776A1E00991ED5 /* HashUtils.cpp */; }; + 2ACF56F114776A1E00991ED5 /* HashUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF569B14776A1E00991ED5 /* HashUtils.h */; }; + 2ACF56F214776A1E00991ED5 /* ImageDesc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569C14776A1E00991ED5 /* ImageDesc.cpp */; }; + 2ACF56F314776A1E00991ED5 /* ImagePacking.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569D14776A1E00991ED5 /* ImagePacking.cpp */; }; + 2ACF56F414776A1E00991ED5 /* ImagePacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF569E14776A1E00991ED5 /* ImagePacking.h */; }; + 2ACF56F514776A1E00991ED5 /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF569F14776A1E00991ED5 /* Logging.cpp */; }; + 2ACF56F614776A1E00991ED5 /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56A014776A1E00991ED5 /* Logging.h */; }; + 2ACF56F714776A1E00991ED5 /* LogOps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56A114776A1E00991ED5 /* LogOps.cpp */; }; + 2ACF56F814776A1E00991ED5 /* LogOps.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56A214776A1E00991ED5 /* LogOps.h */; }; + 2ACF56F914776A1E00991ED5 /* LogTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56A314776A1E00991ED5 /* LogTransform.cpp */; }; + 2ACF56FA14776A1E00991ED5 /* Look.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56A414776A1E00991ED5 /* Look.cpp */; }; + 2ACF56FB14776A1E00991ED5 /* LookTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56A514776A1E00991ED5 /* LookTransform.cpp */; }; + 2ACF56FC14776A1E00991ED5 /* Lut1DOp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56A614776A1E00991ED5 /* Lut1DOp.cpp */; }; + 2ACF56FD14776A1E00991ED5 /* Lut1DOp.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56A714776A1E00991ED5 /* Lut1DOp.h */; }; + 2ACF56FE14776A1E00991ED5 /* Lut3DOp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56A814776A1E00991ED5 /* Lut3DOp.cpp */; }; + 2ACF56FF14776A1E00991ED5 /* Lut3DOp.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56A914776A1E00991ED5 /* Lut3DOp.h */; }; + 2ACF570014776A1E00991ED5 /* MathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56AA14776A1E00991ED5 /* MathUtils.cpp */; }; + 2ACF570114776A1E00991ED5 /* MathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56AB14776A1E00991ED5 /* MathUtils.h */; }; + 2ACF570214776A1E00991ED5 /* MatrixOps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56AC14776A1E00991ED5 /* MatrixOps.cpp */; }; + 2ACF570314776A1E00991ED5 /* MatrixOps.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56AD14776A1E00991ED5 /* MatrixOps.h */; }; + 2ACF570414776A1E00991ED5 /* MatrixTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56AE14776A1E00991ED5 /* MatrixTransform.cpp */; }; + 2ACF570514776A1E00991ED5 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56B014776A1E00991ED5 /* md5.cpp */; }; + 2ACF570614776A1E00991ED5 /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56B114776A1E00991ED5 /* md5.h */; }; + 2ACF570714776A1E00991ED5 /* Mutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56B214776A1E00991ED5 /* Mutex.h */; }; + 2ACF570814776A1E00991ED5 /* OCIOYaml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56B314776A1E00991ED5 /* OCIOYaml.cpp */; }; + 2ACF570914776A1E00991ED5 /* OCIOYaml.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56B414776A1E00991ED5 /* OCIOYaml.h */; }; + 2ACF570A14776A1E00991ED5 /* Op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56B514776A1E00991ED5 /* Op.cpp */; }; + 2ACF570B14776A1E00991ED5 /* Op.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56B614776A1E00991ED5 /* Op.h */; }; + 2ACF570C14776A1E00991ED5 /* OpBuilders.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56B714776A1E00991ED5 /* OpBuilders.h */; }; + 2ACF570D14776A1E00991ED5 /* ParseUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56B814776A1E00991ED5 /* ParseUtils.cpp */; }; + 2ACF570E14776A1E00991ED5 /* ParseUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56B914776A1E00991ED5 /* ParseUtils.h */; }; + 2ACF570F14776A1E00991ED5 /* PathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56BA14776A1E00991ED5 /* PathUtils.cpp */; }; + 2ACF571014776A1E00991ED5 /* PathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56BB14776A1E00991ED5 /* PathUtils.h */; }; + 2ACF571114776A1E00991ED5 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56BC14776A1E00991ED5 /* Platform.h */; }; + 2ACF571214776A1E00991ED5 /* PrivateTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56BD14776A1E00991ED5 /* PrivateTypes.h */; }; + 2ACF571314776A1E00991ED5 /* Processor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56BE14776A1E00991ED5 /* Processor.cpp */; }; + 2ACF571414776A1E00991ED5 /* Processor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56BF14776A1E00991ED5 /* Processor.h */; }; + 2ACF571514776A1E00991ED5 /* pystring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56C114776A1E00991ED5 /* pystring.cpp */; }; + 2ACF571614776A1E00991ED5 /* pystring.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56C214776A1E00991ED5 /* pystring.h */; }; + 2ACF571714776A1E00991ED5 /* ScanlineHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56C314776A1E00991ED5 /* ScanlineHelper.cpp */; }; + 2ACF571814776A1E00991ED5 /* ScanlineHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56C414776A1E00991ED5 /* ScanlineHelper.h */; }; + 2ACF571914776A1E00991ED5 /* SSE.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56C514776A1E00991ED5 /* SSE.h */; }; + 2ACF571A14776A1E00991ED5 /* Transform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56C614776A1E00991ED5 /* Transform.cpp */; }; + 2ACF571B14776A1E00991ED5 /* TruelightOp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56C714776A1E00991ED5 /* TruelightOp.cpp */; }; + 2ACF571C14776A1E00991ED5 /* TruelightOp.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56C814776A1E00991ED5 /* TruelightOp.h */; }; + 2ACF571D14776A1E00991ED5 /* TruelightTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56C914776A1E00991ED5 /* TruelightTransform.cpp */; }; + 2ACF571E14776A1E00991ED5 /* UnitTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF56CA14776A1E00991ED5 /* UnitTest.cpp */; }; + 2ACF571F14776A1E00991ED5 /* UnitTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF56CB14776A1E00991ED5 /* UnitTest.h */; }; + 2ACF573F14776B7000991ED5 /* OpenColorABI.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF573E14776B7000991ED5 /* OpenColorABI.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2A7CACB515536CD700F52C98 /* FileFormatIridasLook.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatIridasLook.cpp; sourceTree = "<group>"; }; + 2A7CACB615536CD700F52C98 /* LookParse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LookParse.cpp; sourceTree = "<group>"; }; + 2A7CACB715536CD700F52C98 /* LookParse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LookParse.h; sourceTree = "<group>"; }; + 2A7CACB815536CD700F52C98 /* NoOps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NoOps.cpp; sourceTree = "<group>"; }; + 2A7CACB915536CD700F52C98 /* NoOps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoOps.h; sourceTree = "<group>"; }; + 2A7CACBA15536CD700F52C98 /* OpOptimizers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OpOptimizers.cpp; sourceTree = "<group>"; }; + 2ACF567114776A0A00991ED5 /* libOpenColorIO.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libOpenColorIO.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2ACF567614776A1E00991ED5 /* AllocationOp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AllocationOp.cpp; sourceTree = "<group>"; }; + 2ACF567714776A1E00991ED5 /* AllocationOp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllocationOp.h; sourceTree = "<group>"; }; + 2ACF567814776A1E00991ED5 /* AllocationTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AllocationTransform.cpp; sourceTree = "<group>"; }; + 2ACF567914776A1E00991ED5 /* Baker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Baker.cpp; sourceTree = "<group>"; }; + 2ACF567A14776A1E00991ED5 /* Caching.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Caching.cpp; sourceTree = "<group>"; }; + 2ACF567B14776A1E00991ED5 /* CDLTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CDLTransform.cpp; sourceTree = "<group>"; }; + 2ACF567C14776A1E00991ED5 /* CDLTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDLTransform.h; sourceTree = "<group>"; }; + 2ACF567D14776A1E00991ED5 /* ColorSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorSpace.cpp; sourceTree = "<group>"; }; + 2ACF567E14776A1E00991ED5 /* ColorSpaceTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorSpaceTransform.cpp; sourceTree = "<group>"; }; + 2ACF567F14776A1E00991ED5 /* Config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = "<group>"; }; + 2ACF568014776A1E00991ED5 /* Context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Context.cpp; sourceTree = "<group>"; }; + 2ACF568114776A1E00991ED5 /* DisplayTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayTransform.cpp; sourceTree = "<group>"; }; + 2ACF568214776A1E00991ED5 /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = "<group>"; }; + 2ACF568314776A1E00991ED5 /* ExponentOps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExponentOps.cpp; sourceTree = "<group>"; }; + 2ACF568414776A1E00991ED5 /* ExponentOps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExponentOps.h; sourceTree = "<group>"; }; + 2ACF568514776A1E00991ED5 /* ExponentTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExponentTransform.cpp; sourceTree = "<group>"; }; + 2ACF568614776A1E00991ED5 /* FileFormat3DL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormat3DL.cpp; sourceTree = "<group>"; }; + 2ACF568714776A1E00991ED5 /* FileFormatCC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatCC.cpp; sourceTree = "<group>"; }; + 2ACF568814776A1E00991ED5 /* FileFormatCCC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatCCC.cpp; sourceTree = "<group>"; }; + 2ACF568914776A1E00991ED5 /* FileFormatCSP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatCSP.cpp; sourceTree = "<group>"; }; + 2ACF568A14776A1E00991ED5 /* FileFormatHDL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatHDL.cpp; sourceTree = "<group>"; }; + 2ACF568B14776A1E00991ED5 /* FileFormatIridasCube.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatIridasCube.cpp; sourceTree = "<group>"; }; + 2ACF568C14776A1E00991ED5 /* FileFormatIridasItx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatIridasItx.cpp; sourceTree = "<group>"; }; + 2ACF568D14776A1E00991ED5 /* FileFormatPandora.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatPandora.cpp; sourceTree = "<group>"; }; + 2ACF568E14776A1E00991ED5 /* FileFormatSpi1D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatSpi1D.cpp; sourceTree = "<group>"; }; + 2ACF568F14776A1E00991ED5 /* FileFormatSpi3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatSpi3D.cpp; sourceTree = "<group>"; }; + 2ACF569014776A1E00991ED5 /* FileFormatSpiMtx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatSpiMtx.cpp; sourceTree = "<group>"; }; + 2ACF569114776A1E00991ED5 /* FileFormatTruelight.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatTruelight.cpp; sourceTree = "<group>"; }; + 2ACF569214776A1E00991ED5 /* FileFormatVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileFormatVF.cpp; sourceTree = "<group>"; }; + 2ACF569314776A1E00991ED5 /* FileTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileTransform.cpp; sourceTree = "<group>"; }; + 2ACF569414776A1E00991ED5 /* FileTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileTransform.h; sourceTree = "<group>"; }; + 2ACF569614776A1E00991ED5 /* GpuShaderDesc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GpuShaderDesc.cpp; sourceTree = "<group>"; }; + 2ACF569714776A1E00991ED5 /* GpuShaderUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GpuShaderUtils.cpp; sourceTree = "<group>"; }; + 2ACF569814776A1E00991ED5 /* GpuShaderUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GpuShaderUtils.h; sourceTree = "<group>"; }; + 2ACF569914776A1E00991ED5 /* GroupTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GroupTransform.cpp; sourceTree = "<group>"; }; + 2ACF569A14776A1E00991ED5 /* HashUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HashUtils.cpp; sourceTree = "<group>"; }; + 2ACF569B14776A1E00991ED5 /* HashUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashUtils.h; sourceTree = "<group>"; }; + 2ACF569C14776A1E00991ED5 /* ImageDesc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageDesc.cpp; sourceTree = "<group>"; }; + 2ACF569D14776A1E00991ED5 /* ImagePacking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImagePacking.cpp; sourceTree = "<group>"; }; + 2ACF569E14776A1E00991ED5 /* ImagePacking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImagePacking.h; sourceTree = "<group>"; }; + 2ACF569F14776A1E00991ED5 /* Logging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Logging.cpp; sourceTree = "<group>"; }; + 2ACF56A014776A1E00991ED5 /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logging.h; sourceTree = "<group>"; }; + 2ACF56A114776A1E00991ED5 /* LogOps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LogOps.cpp; sourceTree = "<group>"; }; + 2ACF56A214776A1E00991ED5 /* LogOps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogOps.h; sourceTree = "<group>"; }; + 2ACF56A314776A1E00991ED5 /* LogTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LogTransform.cpp; sourceTree = "<group>"; }; + 2ACF56A414776A1E00991ED5 /* Look.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Look.cpp; sourceTree = "<group>"; }; + 2ACF56A514776A1E00991ED5 /* LookTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LookTransform.cpp; sourceTree = "<group>"; }; + 2ACF56A614776A1E00991ED5 /* Lut1DOp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lut1DOp.cpp; sourceTree = "<group>"; }; + 2ACF56A714776A1E00991ED5 /* Lut1DOp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lut1DOp.h; sourceTree = "<group>"; }; + 2ACF56A814776A1E00991ED5 /* Lut3DOp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lut3DOp.cpp; sourceTree = "<group>"; }; + 2ACF56A914776A1E00991ED5 /* Lut3DOp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lut3DOp.h; sourceTree = "<group>"; }; + 2ACF56AA14776A1E00991ED5 /* MathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathUtils.cpp; sourceTree = "<group>"; }; + 2ACF56AB14776A1E00991ED5 /* MathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathUtils.h; sourceTree = "<group>"; }; + 2ACF56AC14776A1E00991ED5 /* MatrixOps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MatrixOps.cpp; sourceTree = "<group>"; }; + 2ACF56AD14776A1E00991ED5 /* MatrixOps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MatrixOps.h; sourceTree = "<group>"; }; + 2ACF56AE14776A1E00991ED5 /* MatrixTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MatrixTransform.cpp; sourceTree = "<group>"; }; + 2ACF56B014776A1E00991ED5 /* md5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = md5.cpp; sourceTree = "<group>"; }; + 2ACF56B114776A1E00991ED5 /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; }; + 2ACF56B214776A1E00991ED5 /* Mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mutex.h; sourceTree = "<group>"; }; + 2ACF56B314776A1E00991ED5 /* OCIOYaml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OCIOYaml.cpp; sourceTree = "<group>"; }; + 2ACF56B414776A1E00991ED5 /* OCIOYaml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCIOYaml.h; sourceTree = "<group>"; }; + 2ACF56B514776A1E00991ED5 /* Op.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Op.cpp; sourceTree = "<group>"; }; + 2ACF56B614776A1E00991ED5 /* Op.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Op.h; sourceTree = "<group>"; }; + 2ACF56B714776A1E00991ED5 /* OpBuilders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpBuilders.h; sourceTree = "<group>"; }; + 2ACF56B814776A1E00991ED5 /* ParseUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParseUtils.cpp; sourceTree = "<group>"; }; + 2ACF56B914776A1E00991ED5 /* ParseUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParseUtils.h; sourceTree = "<group>"; }; + 2ACF56BA14776A1E00991ED5 /* PathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PathUtils.cpp; sourceTree = "<group>"; }; + 2ACF56BB14776A1E00991ED5 /* PathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PathUtils.h; sourceTree = "<group>"; }; + 2ACF56BC14776A1E00991ED5 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = "<group>"; }; + 2ACF56BD14776A1E00991ED5 /* PrivateTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrivateTypes.h; sourceTree = "<group>"; }; + 2ACF56BE14776A1E00991ED5 /* Processor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Processor.cpp; sourceTree = "<group>"; }; + 2ACF56BF14776A1E00991ED5 /* Processor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Processor.h; sourceTree = "<group>"; }; + 2ACF56C114776A1E00991ED5 /* pystring.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pystring.cpp; sourceTree = "<group>"; }; + 2ACF56C214776A1E00991ED5 /* pystring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pystring.h; sourceTree = "<group>"; }; + 2ACF56C314776A1E00991ED5 /* ScanlineHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScanlineHelper.cpp; sourceTree = "<group>"; }; + 2ACF56C414776A1E00991ED5 /* ScanlineHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScanlineHelper.h; sourceTree = "<group>"; }; + 2ACF56C514776A1E00991ED5 /* SSE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSE.h; sourceTree = "<group>"; }; + 2ACF56C614776A1E00991ED5 /* Transform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Transform.cpp; sourceTree = "<group>"; }; + 2ACF56C714776A1E00991ED5 /* TruelightOp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TruelightOp.cpp; sourceTree = "<group>"; }; + 2ACF56C814776A1E00991ED5 /* TruelightOp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TruelightOp.h; sourceTree = "<group>"; }; + 2ACF56C914776A1E00991ED5 /* TruelightTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TruelightTransform.cpp; sourceTree = "<group>"; }; + 2ACF56CA14776A1E00991ED5 /* UnitTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UnitTest.cpp; sourceTree = "<group>"; }; + 2ACF56CB14776A1E00991ED5 /* UnitTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnitTest.h; sourceTree = "<group>"; }; + 2ACF573E14776B7000991ED5 /* OpenColorABI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenColorABI.h; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2ACF566F14776A0A00991ED5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 2ACF567114776A0A00991ED5 /* libOpenColorIO.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 0867D691FE84028FC02AAC07 /* OpenColorIO */ = { + isa = PBXGroup; + children = ( + 2ACF573E14776B7000991ED5 /* OpenColorABI.h */, + 2ACF567514776A1E00991ED5 /* core */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = OpenColorIO; + sourceTree = "<group>"; + }; + 2ACF567514776A1E00991ED5 /* core */ = { + isa = PBXGroup; + children = ( + 2ACF567614776A1E00991ED5 /* AllocationOp.cpp */, + 2ACF567714776A1E00991ED5 /* AllocationOp.h */, + 2ACF567814776A1E00991ED5 /* AllocationTransform.cpp */, + 2ACF567914776A1E00991ED5 /* Baker.cpp */, + 2ACF567A14776A1E00991ED5 /* Caching.cpp */, + 2ACF567B14776A1E00991ED5 /* CDLTransform.cpp */, + 2ACF567C14776A1E00991ED5 /* CDLTransform.h */, + 2ACF567D14776A1E00991ED5 /* ColorSpace.cpp */, + 2ACF567E14776A1E00991ED5 /* ColorSpaceTransform.cpp */, + 2ACF567F14776A1E00991ED5 /* Config.cpp */, + 2ACF568014776A1E00991ED5 /* Context.cpp */, + 2ACF568114776A1E00991ED5 /* DisplayTransform.cpp */, + 2ACF568214776A1E00991ED5 /* Exception.cpp */, + 2ACF568314776A1E00991ED5 /* ExponentOps.cpp */, + 2ACF568414776A1E00991ED5 /* ExponentOps.h */, + 2ACF568514776A1E00991ED5 /* ExponentTransform.cpp */, + 2ACF568614776A1E00991ED5 /* FileFormat3DL.cpp */, + 2ACF568714776A1E00991ED5 /* FileFormatCC.cpp */, + 2ACF568814776A1E00991ED5 /* FileFormatCCC.cpp */, + 2ACF568914776A1E00991ED5 /* FileFormatCSP.cpp */, + 2ACF568A14776A1E00991ED5 /* FileFormatHDL.cpp */, + 2ACF568B14776A1E00991ED5 /* FileFormatIridasCube.cpp */, + 2ACF568C14776A1E00991ED5 /* FileFormatIridasItx.cpp */, + 2A7CACB515536CD700F52C98 /* FileFormatIridasLook.cpp */, + 2ACF568D14776A1E00991ED5 /* FileFormatPandora.cpp */, + 2ACF568E14776A1E00991ED5 /* FileFormatSpi1D.cpp */, + 2ACF568F14776A1E00991ED5 /* FileFormatSpi3D.cpp */, + 2ACF569014776A1E00991ED5 /* FileFormatSpiMtx.cpp */, + 2ACF569114776A1E00991ED5 /* FileFormatTruelight.cpp */, + 2ACF569214776A1E00991ED5 /* FileFormatVF.cpp */, + 2ACF569314776A1E00991ED5 /* FileTransform.cpp */, + 2ACF569414776A1E00991ED5 /* FileTransform.h */, + 2ACF569614776A1E00991ED5 /* GpuShaderDesc.cpp */, + 2ACF569714776A1E00991ED5 /* GpuShaderUtils.cpp */, + 2ACF569814776A1E00991ED5 /* GpuShaderUtils.h */, + 2ACF569914776A1E00991ED5 /* GroupTransform.cpp */, + 2ACF569A14776A1E00991ED5 /* HashUtils.cpp */, + 2ACF569B14776A1E00991ED5 /* HashUtils.h */, + 2ACF569C14776A1E00991ED5 /* ImageDesc.cpp */, + 2ACF569D14776A1E00991ED5 /* ImagePacking.cpp */, + 2ACF569E14776A1E00991ED5 /* ImagePacking.h */, + 2ACF569F14776A1E00991ED5 /* Logging.cpp */, + 2ACF56A014776A1E00991ED5 /* Logging.h */, + 2ACF56A114776A1E00991ED5 /* LogOps.cpp */, + 2ACF56A214776A1E00991ED5 /* LogOps.h */, + 2A7CACB615536CD700F52C98 /* LookParse.cpp */, + 2A7CACB715536CD700F52C98 /* LookParse.h */, + 2ACF56A314776A1E00991ED5 /* LogTransform.cpp */, + 2ACF56A414776A1E00991ED5 /* Look.cpp */, + 2ACF56A514776A1E00991ED5 /* LookTransform.cpp */, + 2ACF56A614776A1E00991ED5 /* Lut1DOp.cpp */, + 2ACF56A714776A1E00991ED5 /* Lut1DOp.h */, + 2ACF56A814776A1E00991ED5 /* Lut3DOp.cpp */, + 2ACF56A914776A1E00991ED5 /* Lut3DOp.h */, + 2ACF56AA14776A1E00991ED5 /* MathUtils.cpp */, + 2ACF56AB14776A1E00991ED5 /* MathUtils.h */, + 2ACF56AC14776A1E00991ED5 /* MatrixOps.cpp */, + 2ACF56AD14776A1E00991ED5 /* MatrixOps.h */, + 2ACF56AE14776A1E00991ED5 /* MatrixTransform.cpp */, + 2ACF56AF14776A1E00991ED5 /* md5 */, + 2ACF56B214776A1E00991ED5 /* Mutex.h */, + 2A7CACB815536CD700F52C98 /* NoOps.cpp */, + 2A7CACB915536CD700F52C98 /* NoOps.h */, + 2ACF56B314776A1E00991ED5 /* OCIOYaml.cpp */, + 2ACF56B414776A1E00991ED5 /* OCIOYaml.h */, + 2ACF56B514776A1E00991ED5 /* Op.cpp */, + 2ACF56B614776A1E00991ED5 /* Op.h */, + 2ACF56B714776A1E00991ED5 /* OpBuilders.h */, + 2A7CACBA15536CD700F52C98 /* OpOptimizers.cpp */, + 2ACF56B814776A1E00991ED5 /* ParseUtils.cpp */, + 2ACF56B914776A1E00991ED5 /* ParseUtils.h */, + 2ACF56BA14776A1E00991ED5 /* PathUtils.cpp */, + 2ACF56BB14776A1E00991ED5 /* PathUtils.h */, + 2ACF56BC14776A1E00991ED5 /* Platform.h */, + 2ACF56BD14776A1E00991ED5 /* PrivateTypes.h */, + 2ACF56BE14776A1E00991ED5 /* Processor.cpp */, + 2ACF56BF14776A1E00991ED5 /* Processor.h */, + 2ACF56C014776A1E00991ED5 /* pystring */, + 2ACF56C314776A1E00991ED5 /* ScanlineHelper.cpp */, + 2ACF56C414776A1E00991ED5 /* ScanlineHelper.h */, + 2ACF56C514776A1E00991ED5 /* SSE.h */, + 2ACF56C614776A1E00991ED5 /* Transform.cpp */, + 2ACF56C714776A1E00991ED5 /* TruelightOp.cpp */, + 2ACF56C814776A1E00991ED5 /* TruelightOp.h */, + 2ACF56C914776A1E00991ED5 /* TruelightTransform.cpp */, + 2ACF56CA14776A1E00991ED5 /* UnitTest.cpp */, + 2ACF56CB14776A1E00991ED5 /* UnitTest.h */, + ); + name = core; + path = ../../core; + sourceTree = SOURCE_ROOT; + }; + 2ACF56AF14776A1E00991ED5 /* md5 */ = { + isa = PBXGroup; + children = ( + 2ACF56B014776A1E00991ED5 /* md5.cpp */, + 2ACF56B114776A1E00991ED5 /* md5.h */, + ); + path = md5; + sourceTree = "<group>"; + }; + 2ACF56C014776A1E00991ED5 /* pystring */ = { + isa = PBXGroup; + children = ( + 2ACF56C114776A1E00991ED5 /* pystring.cpp */, + 2ACF56C214776A1E00991ED5 /* pystring.h */, + ); + path = pystring; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2ACF566D14776A0A00991ED5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF56CD14776A1E00991ED5 /* AllocationOp.h in Headers */, + 2ACF56D214776A1E00991ED5 /* CDLTransform.h in Headers */, + 2ACF56DA14776A1E00991ED5 /* ExponentOps.h in Headers */, + 2ACF56EA14776A1E00991ED5 /* FileTransform.h in Headers */, + 2ACF56EE14776A1E00991ED5 /* GpuShaderUtils.h in Headers */, + 2ACF56F114776A1E00991ED5 /* HashUtils.h in Headers */, + 2ACF56F414776A1E00991ED5 /* ImagePacking.h in Headers */, + 2ACF56F614776A1E00991ED5 /* Logging.h in Headers */, + 2ACF56F814776A1E00991ED5 /* LogOps.h in Headers */, + 2ACF56FD14776A1E00991ED5 /* Lut1DOp.h in Headers */, + 2ACF56FF14776A1E00991ED5 /* Lut3DOp.h in Headers */, + 2ACF570114776A1E00991ED5 /* MathUtils.h in Headers */, + 2ACF570314776A1E00991ED5 /* MatrixOps.h in Headers */, + 2ACF570614776A1E00991ED5 /* md5.h in Headers */, + 2ACF570714776A1E00991ED5 /* Mutex.h in Headers */, + 2ACF570914776A1E00991ED5 /* OCIOYaml.h in Headers */, + 2ACF570B14776A1E00991ED5 /* Op.h in Headers */, + 2ACF570C14776A1E00991ED5 /* OpBuilders.h in Headers */, + 2ACF570E14776A1E00991ED5 /* ParseUtils.h in Headers */, + 2ACF571014776A1E00991ED5 /* PathUtils.h in Headers */, + 2ACF571114776A1E00991ED5 /* Platform.h in Headers */, + 2ACF571214776A1E00991ED5 /* PrivateTypes.h in Headers */, + 2ACF571414776A1E00991ED5 /* Processor.h in Headers */, + 2ACF571614776A1E00991ED5 /* pystring.h in Headers */, + 2ACF571814776A1E00991ED5 /* ScanlineHelper.h in Headers */, + 2ACF571914776A1E00991ED5 /* SSE.h in Headers */, + 2ACF571C14776A1E00991ED5 /* TruelightOp.h in Headers */, + 2ACF571F14776A1E00991ED5 /* UnitTest.h in Headers */, + 2ACF573F14776B7000991ED5 /* OpenColorABI.h in Headers */, + 2A7CACBD15536CD700F52C98 /* LookParse.h in Headers */, + 2A7CACBF15536CD700F52C98 /* NoOps.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2ACF567014776A0A00991ED5 /* OpenColorIO */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2ACF567414776A1300991ED5 /* Build configuration list for PBXNativeTarget "OpenColorIO" */; + buildPhases = ( + 2ACF566D14776A0A00991ED5 /* Headers */, + 2ACF566E14776A0A00991ED5 /* Sources */, + 2ACF566F14776A0A00991ED5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = OpenColorIO; + productName = OpenColorIO; + productReference = 2ACF567114776A0A00991ED5 /* libOpenColorIO.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "OpenColorIO" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* OpenColorIO */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2ACF567014776A0A00991ED5 /* OpenColorIO */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 2ACF566E14776A0A00991ED5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF56CC14776A1E00991ED5 /* AllocationOp.cpp in Sources */, + 2ACF56CE14776A1E00991ED5 /* AllocationTransform.cpp in Sources */, + 2ACF56CF14776A1E00991ED5 /* Baker.cpp in Sources */, + 2ACF56D014776A1E00991ED5 /* Caching.cpp in Sources */, + 2ACF56D114776A1E00991ED5 /* CDLTransform.cpp in Sources */, + 2ACF56D314776A1E00991ED5 /* ColorSpace.cpp in Sources */, + 2ACF56D414776A1E00991ED5 /* ColorSpaceTransform.cpp in Sources */, + 2ACF56D514776A1E00991ED5 /* Config.cpp in Sources */, + 2ACF56D614776A1E00991ED5 /* Context.cpp in Sources */, + 2ACF56D714776A1E00991ED5 /* DisplayTransform.cpp in Sources */, + 2ACF56D814776A1E00991ED5 /* Exception.cpp in Sources */, + 2ACF56D914776A1E00991ED5 /* ExponentOps.cpp in Sources */, + 2ACF56DB14776A1E00991ED5 /* ExponentTransform.cpp in Sources */, + 2ACF56DC14776A1E00991ED5 /* FileFormat3DL.cpp in Sources */, + 2ACF56DD14776A1E00991ED5 /* FileFormatCC.cpp in Sources */, + 2ACF56DE14776A1E00991ED5 /* FileFormatCCC.cpp in Sources */, + 2ACF56DF14776A1E00991ED5 /* FileFormatCSP.cpp in Sources */, + 2ACF56E014776A1E00991ED5 /* FileFormatHDL.cpp in Sources */, + 2ACF56E114776A1E00991ED5 /* FileFormatIridasCube.cpp in Sources */, + 2ACF56E214776A1E00991ED5 /* FileFormatIridasItx.cpp in Sources */, + 2ACF56E314776A1E00991ED5 /* FileFormatPandora.cpp in Sources */, + 2ACF56E414776A1E00991ED5 /* FileFormatSpi1D.cpp in Sources */, + 2ACF56E514776A1E00991ED5 /* FileFormatSpi3D.cpp in Sources */, + 2ACF56E614776A1E00991ED5 /* FileFormatSpiMtx.cpp in Sources */, + 2ACF56E714776A1E00991ED5 /* FileFormatTruelight.cpp in Sources */, + 2ACF56E814776A1E00991ED5 /* FileFormatVF.cpp in Sources */, + 2ACF56E914776A1E00991ED5 /* FileTransform.cpp in Sources */, + 2ACF56EC14776A1E00991ED5 /* GpuShaderDesc.cpp in Sources */, + 2ACF56ED14776A1E00991ED5 /* GpuShaderUtils.cpp in Sources */, + 2ACF56EF14776A1E00991ED5 /* GroupTransform.cpp in Sources */, + 2ACF56F014776A1E00991ED5 /* HashUtils.cpp in Sources */, + 2ACF56F214776A1E00991ED5 /* ImageDesc.cpp in Sources */, + 2ACF56F314776A1E00991ED5 /* ImagePacking.cpp in Sources */, + 2ACF56F514776A1E00991ED5 /* Logging.cpp in Sources */, + 2ACF56F714776A1E00991ED5 /* LogOps.cpp in Sources */, + 2ACF56F914776A1E00991ED5 /* LogTransform.cpp in Sources */, + 2ACF56FA14776A1E00991ED5 /* Look.cpp in Sources */, + 2ACF56FB14776A1E00991ED5 /* LookTransform.cpp in Sources */, + 2ACF56FC14776A1E00991ED5 /* Lut1DOp.cpp in Sources */, + 2ACF56FE14776A1E00991ED5 /* Lut3DOp.cpp in Sources */, + 2ACF570014776A1E00991ED5 /* MathUtils.cpp in Sources */, + 2ACF570214776A1E00991ED5 /* MatrixOps.cpp in Sources */, + 2ACF570414776A1E00991ED5 /* MatrixTransform.cpp in Sources */, + 2ACF570514776A1E00991ED5 /* md5.cpp in Sources */, + 2ACF570814776A1E00991ED5 /* OCIOYaml.cpp in Sources */, + 2ACF570A14776A1E00991ED5 /* Op.cpp in Sources */, + 2ACF570D14776A1E00991ED5 /* ParseUtils.cpp in Sources */, + 2ACF570F14776A1E00991ED5 /* PathUtils.cpp in Sources */, + 2ACF571314776A1E00991ED5 /* Processor.cpp in Sources */, + 2ACF571514776A1E00991ED5 /* pystring.cpp in Sources */, + 2ACF571714776A1E00991ED5 /* ScanlineHelper.cpp in Sources */, + 2ACF571A14776A1E00991ED5 /* Transform.cpp in Sources */, + 2ACF571B14776A1E00991ED5 /* TruelightOp.cpp in Sources */, + 2ACF571D14776A1E00991ED5 /* TruelightTransform.cpp in Sources */, + 2ACF571E14776A1E00991ED5 /* UnitTest.cpp in Sources */, + 2A7CACBB15536CD700F52C98 /* FileFormatIridasLook.cpp in Sources */, + 2A7CACBC15536CD700F52C98 /* LookParse.cpp in Sources */, + 2A7CACBE15536CD700F52C98 /* NoOps.cpp in Sources */, + 2A7CACC015536CD700F52C98 /* OpOptimizers.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB916508733D950010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = TIXML_USE_STL; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + ../../../export, + ../../../ext/tinyxml, + "../../../ext/yaml-cpp/include", + ); + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Debug; + }; + 1DEB916608733D950010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + NDEBUG, + TIXML_USE_STL, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + ../../../export, + ../../../ext/tinyxml, + "../../../ext/yaml-cpp/include", + ); + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Release; + }; + 2ACF567214776A0A00991ED5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = OpenColorIO; + }; + name = Debug; + }; + 2ACF567314776A0A00991ED5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = OpenColorIO; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "OpenColorIO" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB916508733D950010E9CD /* Debug */, + 1DEB916608733D950010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2ACF567414776A1300991ED5 /* Build configuration list for PBXNativeTarget "OpenColorIO" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2ACF567214776A0A00991ED5 /* Debug */, + 2ACF567314776A0A00991ED5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/src/aftereffects/xcode/aftereffects/OpenColorIO_AE.xcodeproj/project.pbxproj b/src/aftereffects/xcode/aftereffects/OpenColorIO_AE.xcodeproj/project.pbxproj new file mode 100755 index 0000000..84253ae --- /dev/null +++ b/src/aftereffects/xcode/aftereffects/OpenColorIO_AE.xcodeproj/project.pbxproj @@ -0,0 +1,509 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 44; + objects = { + +/* Begin PBXBuildFile section */ + 2A180A6914801EB90000D11A /* OpenColorIO_AE_MonitorProfileChooser.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A180A6814801EB90000D11A /* OpenColorIO_AE_MonitorProfileChooser.xib */; }; + 2A180A6D14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A180A6B14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.m */; }; + 2A3BAA7110C0F40600AD32F2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A3BAA7010C0F40600AD32F2 /* Cocoa.framework */; }; + 2A4A0AF61554679400D5AEB7 /* ocioicc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A4A0AF41554679400D5AEB7 /* ocioicc.cpp */; }; + 2A60CADB1491A51C009D6DBF /* OpenColorIO_AE_GL_Cocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A60CADA1491A51C009D6DBF /* OpenColorIO_AE_GL_Cocoa.mm */; }; + 2A60CB091491A9FF009D6DBF /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A60CB081491A9FF009D6DBF /* AGL.framework */; }; + 2A60CB0B1491A9FF009D6DBF /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A60CB0A1491A9FF009D6DBF /* OpenGL.framework */; }; + 2AF56B96147A431100F9968C /* OpenColorIO_AE_ArbData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56B8F147A431100F9968C /* OpenColorIO_AE_ArbData.cpp */; }; + 2AF56B99147A431100F9968C /* OpenColorIO_AE_PiPL.r in Rez */ = {isa = PBXBuildFile; fileRef = 2AF56B92147A431100F9968C /* OpenColorIO_AE_PiPL.r */; }; + 2AF56B9A147A431100F9968C /* OpenColorIO_AE_UI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56B93147A431100F9968C /* OpenColorIO_AE_UI.cpp */; }; + 2AF56B9B147A431100F9968C /* OpenColorIO_AE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56B94147A431100F9968C /* OpenColorIO_AE.cpp */; }; + 2AF56BA0147A458800F9968C /* AEGP_SuiteHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56B9D147A458800F9968C /* AEGP_SuiteHandler.cpp */; }; + 2AF56BA1147A458800F9968C /* MissingSuiteError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56B9F147A458800F9968C /* MissingSuiteError.cpp */; }; + 2AF56C24147A54A300F9968C /* OpenColorIO_AE_Dialogs_Cocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56B90147A431100F9968C /* OpenColorIO_AE_Dialogs_Cocoa.mm */; }; + 2AF56D06147AB5C900F9968C /* DrawbotBot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF56D04147AB5C900F9968C /* DrawbotBot.cpp */; }; + 2AF56EE8147AD11200F9968C /* libOpenColorIO.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF56EE7147AD10E00F9968C /* libOpenColorIO.a */; }; + 2AF57004147AE17200F9968C /* libtinyxml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF56FFB147AE16A00F9968C /* libtinyxml.a */; }; + 2AF57005147AE17400F9968C /* libyaml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF57001147AE16A00F9968C /* libyaml.a */; }; + 2AF57B93147C6FE000F9968C /* OpenColorIO_AE_Menu.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AF57B92147C6FE000F9968C /* OpenColorIO_AE_Menu.m */; }; + 2AF57D20147C994100F9968C /* OpenColorIO_AE_Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AF57D1F147C994100F9968C /* OpenColorIO_AE_Context.cpp */; }; + 2AF999CB147E1DD200FEB83B /* liblcms.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF999C8147E1DCA00FEB83B /* liblcms.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2AF56EE6147AD10E00F9968C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF56EE2147AD10E00F9968C /* OpenColorIO.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2ACF567114776A0A00991ED5; + remoteInfo = OpenColorIO; + }; + 2AF56FFA147AE16A00F9968C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF56FF0147AE16A00F9968C /* tinyxml.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2ACF55441477682B00991ED5; + remoteInfo = tinyxml; + }; + 2AF57000147AE16A00F9968C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF56FF3147AE16A00F9968C /* yaml.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2ACF559C1477692300991ED5; + remoteInfo = yaml; + }; + 2AF57012147AE18600F9968C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF56FF0147AE16A00F9968C /* tinyxml.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 2ACF55431477682B00991ED5; + remoteInfo = tinyxml; + }; + 2AF57014147AE18600F9968C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF56FF3147AE16A00F9968C /* yaml.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 2ACF559B1477692300991ED5; + remoteInfo = yaml; + }; + 2AF57016147AE18600F9968C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF56EE2147AD10E00F9968C /* OpenColorIO.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 2ACF567014776A0A00991ED5; + remoteInfo = OpenColorIO; + }; + 2AF999C7147E1DCA00FEB83B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF999C0147E1DCA00FEB83B /* lcms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2ACF9E56147824F500991ED5; + remoteInfo = lcms; + }; + 2AF999CC147E1DDB00FEB83B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2AF999C0147E1DCA00FEB83B /* lcms.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 2ACF9E55147824F500991ED5; + remoteInfo = lcms; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2A180A6814801EB90000D11A /* OpenColorIO_AE_MonitorProfileChooser.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = OpenColorIO_AE_MonitorProfileChooser.xib; path = ../../mac/OpenColorIO_AE_MonitorProfileChooser.xib; sourceTree = "<group>"; }; + 2A180A6B14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OpenColorIO_AE_MonitorProfileChooser_Controller.m; path = ../../mac/OpenColorIO_AE_MonitorProfileChooser_Controller.m; sourceTree = "<group>"; usesTabs = 0; }; + 2A180A6C14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenColorIO_AE_MonitorProfileChooser_Controller.h; path = ../../mac/OpenColorIO_AE_MonitorProfileChooser_Controller.h; sourceTree = "<group>"; usesTabs = 0; }; + 2A3BAA7010C0F40600AD32F2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 2A4A0AF41554679400D5AEB7 /* ocioicc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ocioicc.cpp; path = ../../../apps/ociobakelut/ocioicc.cpp; sourceTree = SOURCE_ROOT; }; + 2A4A0AF51554679400D5AEB7 /* ocioicc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ocioicc.h; path = ../../../apps/ociobakelut/ocioicc.h; sourceTree = SOURCE_ROOT; }; + 2A60CAD91491A506009D6DBF /* OpenColorIO_AE_GL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenColorIO_AE_GL.h; path = ../../OpenColorIO_AE_GL.h; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2A60CADA1491A51C009D6DBF /* OpenColorIO_AE_GL_Cocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenColorIO_AE_GL_Cocoa.mm; path = ../../mac/OpenColorIO_AE_GL_Cocoa.mm; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2A60CB081491A9FF009D6DBF /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = System/Library/Frameworks/AGL.framework; sourceTree = SDKROOT; }; + 2A60CB0A1491A9FF009D6DBF /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + 2AF56B8F147A431100F9968C /* OpenColorIO_AE_ArbData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenColorIO_AE_ArbData.cpp; path = ../../OpenColorIO_AE_ArbData.cpp; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B90147A431100F9968C /* OpenColorIO_AE_Dialogs_Cocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenColorIO_AE_Dialogs_Cocoa.mm; path = ../../mac/OpenColorIO_AE_Dialogs_Cocoa.mm; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B92147A431100F9968C /* OpenColorIO_AE_PiPL.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; name = OpenColorIO_AE_PiPL.r; path = ../../OpenColorIO_AE_PiPL.r; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B93147A431100F9968C /* OpenColorIO_AE_UI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenColorIO_AE_UI.cpp; path = ../../OpenColorIO_AE_UI.cpp; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B94147A431100F9968C /* OpenColorIO_AE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenColorIO_AE.cpp; path = ../../OpenColorIO_AE.cpp; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B95147A431100F9968C /* OpenColorIO_AE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenColorIO_AE.h; path = ../../OpenColorIO_AE.h; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B9D147A458800F9968C /* AEGP_SuiteHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AEGP_SuiteHandler.cpp; path = "../../../../ext/Adobe After Effects CS5 SDK/Examples/Util/AEGP_SuiteHandler.cpp"; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B9E147A458800F9968C /* AEGP_SuiteHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AEGP_SuiteHandler.h; path = "../../../../ext/Adobe After Effects CS5 SDK/Examples/Util/AEGP_SuiteHandler.h"; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56B9F147A458800F9968C /* MissingSuiteError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MissingSuiteError.cpp; path = "../../../../ext/Adobe After Effects CS5 SDK/Examples/Util/MissingSuiteError.cpp"; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56D04147AB5C900F9968C /* DrawbotBot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DrawbotBot.cpp; path = ../../DrawbotBot.cpp; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56D05147AB5C900F9968C /* DrawbotBot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DrawbotBot.h; path = ../../DrawbotBot.h; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF56EE2147AD10E00F9968C /* OpenColorIO.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = OpenColorIO.xcodeproj; path = ../OpenColorIO.xcodeproj; sourceTree = SOURCE_ROOT; }; + 2AF56FF0147AE16A00F9968C /* tinyxml.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = tinyxml.xcodeproj; path = ../ext/tinyxml.xcodeproj; sourceTree = SOURCE_ROOT; }; + 2AF56FF3147AE16A00F9968C /* yaml.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = yaml.xcodeproj; path = ../ext/yaml.xcodeproj; sourceTree = SOURCE_ROOT; }; + 2AF57171147B36F300F9968C /* OpenColorIO_AE_Dialogs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenColorIO_AE_Dialogs.h; path = ../../OpenColorIO_AE_Dialogs.h; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF57B91147C6FE000F9968C /* OpenColorIO_AE_Menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenColorIO_AE_Menu.h; path = ../../mac/OpenColorIO_AE_Menu.h; sourceTree = "<group>"; usesTabs = 0; }; + 2AF57B92147C6FE000F9968C /* OpenColorIO_AE_Menu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OpenColorIO_AE_Menu.m; path = ../../mac/OpenColorIO_AE_Menu.m; sourceTree = "<group>"; usesTabs = 0; }; + 2AF57D1E147C994100F9968C /* OpenColorIO_AE_Context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenColorIO_AE_Context.h; path = ../../OpenColorIO_AE_Context.h; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF57D1F147C994100F9968C /* OpenColorIO_AE_Context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenColorIO_AE_Context.cpp; path = ../../OpenColorIO_AE_Context.cpp; sourceTree = SOURCE_ROOT; usesTabs = 0; }; + 2AF999C0147E1DCA00FEB83B /* lcms.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = lcms.xcodeproj; path = ../ext/lcms.xcodeproj; sourceTree = SOURCE_ROOT; }; + C4E618CC095A3CE80012CA3F /* OpenColorIO.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OpenColorIO.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C4E618CA095A3CE80012CA3F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A3BAA7110C0F40600AD32F2 /* Cocoa.framework in Frameworks */, + 2AF56EE8147AD11200F9968C /* libOpenColorIO.a in Frameworks */, + 2AF57004147AE17200F9968C /* libtinyxml.a in Frameworks */, + 2AF57005147AE17400F9968C /* libyaml.a in Frameworks */, + 2AF999CB147E1DD200FEB83B /* liblcms.a in Frameworks */, + 2A60CB091491A9FF009D6DBF /* AGL.framework in Frameworks */, + 2A60CB0B1491A9FF009D6DBF /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2AF56EE3147AD10E00F9968C /* Products */ = { + isa = PBXGroup; + children = ( + 2AF56EE7147AD10E00F9968C /* libOpenColorIO.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 2AF56FF1147AE16A00F9968C /* Products */ = { + isa = PBXGroup; + children = ( + 2AF56FFB147AE16A00F9968C /* libtinyxml.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 2AF56FF4147AE16A00F9968C /* Products */ = { + isa = PBXGroup; + children = ( + 2AF57001147AE16A00F9968C /* libyaml.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 2AF999C1147E1DCA00FEB83B /* Products */ = { + isa = PBXGroup; + children = ( + 2AF999C8147E1DCA00FEB83B /* liblcms.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + C4E6187C095A3C800012CA3F = { + isa = PBXGroup; + children = ( + 2AF56B95147A431100F9968C /* OpenColorIO_AE.h */, + 2AF56B94147A431100F9968C /* OpenColorIO_AE.cpp */, + 2AF57D1E147C994100F9968C /* OpenColorIO_AE_Context.h */, + 2AF57D1F147C994100F9968C /* OpenColorIO_AE_Context.cpp */, + 2AF56B8F147A431100F9968C /* OpenColorIO_AE_ArbData.cpp */, + 2AF56B93147A431100F9968C /* OpenColorIO_AE_UI.cpp */, + 2A60CAD91491A506009D6DBF /* OpenColorIO_AE_GL.h */, + 2A60CADA1491A51C009D6DBF /* OpenColorIO_AE_GL_Cocoa.mm */, + 2AF57171147B36F300F9968C /* OpenColorIO_AE_Dialogs.h */, + 2AF56B90147A431100F9968C /* OpenColorIO_AE_Dialogs_Cocoa.mm */, + 2AF57B91147C6FE000F9968C /* OpenColorIO_AE_Menu.h */, + 2AF57B92147C6FE000F9968C /* OpenColorIO_AE_Menu.m */, + 2AF56B92147A431100F9968C /* OpenColorIO_AE_PiPL.r */, + 2AF56B9E147A458800F9968C /* AEGP_SuiteHandler.h */, + 2AF56B9D147A458800F9968C /* AEGP_SuiteHandler.cpp */, + 2AF56B9F147A458800F9968C /* MissingSuiteError.cpp */, + 2AF56D05147AB5C900F9968C /* DrawbotBot.h */, + 2AF56D04147AB5C900F9968C /* DrawbotBot.cpp */, + 2A4A0AF51554679400D5AEB7 /* ocioicc.h */, + 2A4A0AF41554679400D5AEB7 /* ocioicc.cpp */, + 2A180A6814801EB90000D11A /* OpenColorIO_AE_MonitorProfileChooser.xib */, + 2A180A6C14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.h */, + 2A180A6B14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.m */, + 2AF56EE2147AD10E00F9968C /* OpenColorIO.xcodeproj */, + 2AF56FF0147AE16A00F9968C /* tinyxml.xcodeproj */, + 2AF56FF3147AE16A00F9968C /* yaml.xcodeproj */, + 2AF999C0147E1DCA00FEB83B /* lcms.xcodeproj */, + C4E6188C095A3C800012CA3F /* Products */, + 2A3BAA7010C0F40600AD32F2 /* Cocoa.framework */, + 2A60CB081491A9FF009D6DBF /* AGL.framework */, + 2A60CB0A1491A9FF009D6DBF /* OpenGL.framework */, + ); + comments = "SDK Backwards is some pretty rudimentary audio processing, but the flags and params are handled in an appropriate manner."; + sourceTree = "<group>"; + }; + C4E6188C095A3C800012CA3F /* Products */ = { + isa = PBXGroup; + children = ( + C4E618CC095A3CE80012CA3F /* OpenColorIO.plugin */, + ); + name = Products; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C4E618CB095A3CE80012CA3F /* OpenColorIO */ = { + isa = PBXNativeTarget; + buildConfigurationList = C4E618CE095A3CE90012CA3F /* Build configuration list for PBXNativeTarget "OpenColorIO" */; + buildPhases = ( + C4E618C8095A3CE80012CA3F /* Resources */, + C4E618C9095A3CE80012CA3F /* Sources */, + C4E618CA095A3CE80012CA3F /* Frameworks */, + C4E618EA095A3E040012CA3F /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + 2AF57013147AE18600F9968C /* PBXTargetDependency */, + 2AF57015147AE18600F9968C /* PBXTargetDependency */, + 2AF57017147AE18600F9968C /* PBXTargetDependency */, + 2AF999CD147E1DDB00FEB83B /* PBXTargetDependency */, + ); + name = OpenColorIO; + productName = SDK_Backwards.plugin; + productReference = C4E618CC095A3CE80012CA3F /* OpenColorIO.plugin */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C4E6187E095A3C800012CA3F /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C4E6187F095A3C800012CA3F /* Build configuration list for PBXProject "OpenColorIO_AE" */; + compatibilityVersion = "Xcode 3.0"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = C4E6187C095A3C800012CA3F; + productRefGroup = C4E6188C095A3C800012CA3F /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 2AF999C1147E1DCA00FEB83B /* Products */; + ProjectRef = 2AF999C0147E1DCA00FEB83B /* lcms.xcodeproj */; + }, + { + ProductGroup = 2AF56EE3147AD10E00F9968C /* Products */; + ProjectRef = 2AF56EE2147AD10E00F9968C /* OpenColorIO.xcodeproj */; + }, + { + ProductGroup = 2AF56FF1147AE16A00F9968C /* Products */; + ProjectRef = 2AF56FF0147AE16A00F9968C /* tinyxml.xcodeproj */; + }, + { + ProductGroup = 2AF56FF4147AE16A00F9968C /* Products */; + ProjectRef = 2AF56FF3147AE16A00F9968C /* yaml.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + C4E618CB095A3CE80012CA3F /* OpenColorIO */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2AF56EE7147AD10E00F9968C /* libOpenColorIO.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libOpenColorIO.a; + remoteRef = 2AF56EE6147AD10E00F9968C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2AF56FFB147AE16A00F9968C /* libtinyxml.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libtinyxml.a; + remoteRef = 2AF56FFA147AE16A00F9968C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2AF57001147AE16A00F9968C /* libyaml.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyaml.a; + remoteRef = 2AF57000147AE16A00F9968C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2AF999C8147E1DCA00FEB83B /* liblcms.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = liblcms.a; + remoteRef = 2AF999C7147E1DCA00FEB83B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + C4E618C8095A3CE80012CA3F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A180A6914801EB90000D11A /* OpenColorIO_AE_MonitorProfileChooser.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + C4E618EA095A3E040012CA3F /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + 2AF56B99147A431100F9968C /* OpenColorIO_AE_PiPL.r in Rez */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C4E618C9095A3CE80012CA3F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2AF56B96147A431100F9968C /* OpenColorIO_AE_ArbData.cpp in Sources */, + 2AF56B9A147A431100F9968C /* OpenColorIO_AE_UI.cpp in Sources */, + 2AF56B9B147A431100F9968C /* OpenColorIO_AE.cpp in Sources */, + 2AF56BA0147A458800F9968C /* AEGP_SuiteHandler.cpp in Sources */, + 2AF56BA1147A458800F9968C /* MissingSuiteError.cpp in Sources */, + 2AF56C24147A54A300F9968C /* OpenColorIO_AE_Dialogs_Cocoa.mm in Sources */, + 2AF56D06147AB5C900F9968C /* DrawbotBot.cpp in Sources */, + 2AF57B93147C6FE000F9968C /* OpenColorIO_AE_Menu.m in Sources */, + 2AF57D20147C994100F9968C /* OpenColorIO_AE_Context.cpp in Sources */, + 2A180A6D14801FFA0000D11A /* OpenColorIO_AE_MonitorProfileChooser_Controller.m in Sources */, + 2A60CADB1491A51C009D6DBF /* OpenColorIO_AE_GL_Cocoa.mm in Sources */, + 2A4A0AF61554679400D5AEB7 /* ocioicc.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 2AF57013147AE18600F9968C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tinyxml; + targetProxy = 2AF57012147AE18600F9968C /* PBXContainerItemProxy */; + }; + 2AF57015147AE18600F9968C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = yaml; + targetProxy = 2AF57014147AE18600F9968C /* PBXContainerItemProxy */; + }; + 2AF57017147AE18600F9968C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = OpenColorIO; + targetProxy = 2AF57016147AE18600F9968C /* PBXContainerItemProxy */; + }; + 2AF999CD147E1DDB00FEB83B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = lcms; + targetProxy = 2AF999CC147E1DDB00FEB83B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2A1BAC2310C3C82A00244D12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + AE_SDK = "\"../../../../ext/Adobe After Effects CS5 SDK\""; + "AE_SDK[arch=i386]" = "\"../../../../ext/Adobe After Effects CS3 SDK\""; + "AE_SDK[arch=ppc]" = "\"../../../../ext/Adobe After Effects CS3 SDK\""; + ARCHS = x86_64; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = ""; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; + GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; + HEADER_SEARCH_PATHS = ( + ../, + "$(AE_SDK)/Examples/Headers", + "$(AE_SDK)/Examples/Util", + "$(AE_SDK)/Examples/Headers/SP", + "$(AE_SDK)/Examples/Resources", + ../../../../export, + ../../../../src/core, + ../../../../ext/tinyxml, + "../../../../ext/yaml-cpp/include", + "../../../../ext/lcms2-2.1/include", + ); + REZ_PREPROCESSOR_DEFINITIONS = __MACH__; + REZ_SEARCH_PATHS = "$(SDK_PATH)/Developer/Headers/FlatCarbon"; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Release; + }; + 2A1BAC2410C3C82A00244D12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SDKROOT)/System/Library/Frameworks/Carbon.framework/Headers/Carbon.h"; + GENERATE_PKGINFO_FILE = YES; + INFOPLIST_FILE = "../../mac/OpenColorIO_AE.plugin-Info.plist"; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + LINK_WITH_STANDARD_LIBRARIES = YES; + PREBINDING = NO; + PRODUCT_NAME = OpenColorIO; + WRAPPER_EXTENSION = plugin; + ZERO_LINK = NO; + }; + name = Release; + }; + C4E61880095A3C800012CA3F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + AE_SDK = "\"../../../../ext/Adobe After Effects CS5 SDK\""; + "AE_SDK[arch=i386]" = "\"../../../../ext/Adobe After Effects CS3 SDK\""; + "AE_SDK[arch=ppc]" = "\"../../../../ext/Adobe After Effects CS3 SDK\""; + ARCHS = x86_64; + COPY_PHASE_STRIP = NO; + GCC_MODEL_TUNING = ""; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; + HEADER_SEARCH_PATHS = ( + ../, + "$(AE_SDK)/Examples/Headers", + "$(AE_SDK)/Examples/Util", + "$(AE_SDK)/Examples/Headers/SP", + "$(AE_SDK)/Examples/Resources", + ../../../../export, + ../../../../src/core, + ../../../../ext/tinyxml, + "../../../../ext/yaml-cpp/include", + "../../../../ext/lcms2-2.1/include", + ); + REZ_PREPROCESSOR_DEFINITIONS = __MACH__; + REZ_SEARCH_PATHS = "$(SDK_PATH)/Developer/Headers/FlatCarbon"; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + STRIP_INSTALLED_PRODUCT = NO; + }; + name = Debug; + }; + C4E618CF095A3CE90012CA3F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SDKROOT)/System/Library/Frameworks/Carbon.framework/Headers/Carbon.h"; + GENERATE_PKGINFO_FILE = YES; + INFOPLIST_FILE = "../../mac/OpenColorIO_AE.plugin-Info.plist"; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + LINK_WITH_STANDARD_LIBRARIES = YES; + PREBINDING = NO; + PRODUCT_NAME = OpenColorIO; + WRAPPER_EXTENSION = plugin; + ZERO_LINK = NO; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C4E6187F095A3C800012CA3F /* Build configuration list for PBXProject "OpenColorIO_AE" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C4E61880095A3C800012CA3F /* Debug */, + 2A1BAC2310C3C82A00244D12 /* Release */, + ); + defaultConfigurationIsVisible = 1; + defaultConfigurationName = Debug; + }; + C4E618CE095A3CE90012CA3F /* Build configuration list for PBXNativeTarget "OpenColorIO" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C4E618CF095A3CE90012CA3F /* Debug */, + 2A1BAC2410C3C82A00244D12 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = C4E6187E095A3C800012CA3F /* Project object */; +} diff --git a/src/aftereffects/xcode/ext/lcms.xcodeproj/project.pbxproj b/src/aftereffects/xcode/ext/lcms.xcodeproj/project.pbxproj new file mode 100644 index 0000000..42e7bda --- /dev/null +++ b/src/aftereffects/xcode/ext/lcms.xcodeproj/project.pbxproj @@ -0,0 +1,343 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 2ACF9F2C1478251500991ED5 /* lcms2.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF9E6D1478251500991ED5 /* lcms2.h */; }; + 2ACF9F2D1478251500991ED5 /* lcms2_plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF9E6E1478251500991ED5 /* lcms2_plugin.h */; }; + 2ACF9F311478251500991ED5 /* cmscam02.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ECE1478251500991ED5 /* cmscam02.c */; }; + 2ACF9F321478251500991ED5 /* cmscgats.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ECF1478251500991ED5 /* cmscgats.c */; }; + 2ACF9F331478251500991ED5 /* cmscnvrt.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED01478251500991ED5 /* cmscnvrt.c */; }; + 2ACF9F341478251500991ED5 /* cmserr.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED11478251500991ED5 /* cmserr.c */; }; + 2ACF9F351478251500991ED5 /* cmsgamma.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED21478251500991ED5 /* cmsgamma.c */; }; + 2ACF9F361478251500991ED5 /* cmsgmt.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED31478251500991ED5 /* cmsgmt.c */; }; + 2ACF9F371478251500991ED5 /* cmsintrp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED41478251500991ED5 /* cmsintrp.c */; }; + 2ACF9F381478251500991ED5 /* cmsio0.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED51478251500991ED5 /* cmsio0.c */; }; + 2ACF9F391478251500991ED5 /* cmsio1.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED61478251500991ED5 /* cmsio1.c */; }; + 2ACF9F3A1478251500991ED5 /* cmslut.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED71478251500991ED5 /* cmslut.c */; }; + 2ACF9F3B1478251500991ED5 /* cmsmd5.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED81478251500991ED5 /* cmsmd5.c */; }; + 2ACF9F3C1478251500991ED5 /* cmsmtrx.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9ED91478251500991ED5 /* cmsmtrx.c */; }; + 2ACF9F3D1478251500991ED5 /* cmsnamed.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EDA1478251500991ED5 /* cmsnamed.c */; }; + 2ACF9F3E1478251500991ED5 /* cmsopt.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EDB1478251500991ED5 /* cmsopt.c */; }; + 2ACF9F3F1478251500991ED5 /* cmspack.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EDC1478251500991ED5 /* cmspack.c */; }; + 2ACF9F401478251500991ED5 /* cmspcs.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EDD1478251500991ED5 /* cmspcs.c */; }; + 2ACF9F411478251500991ED5 /* cmsplugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EDE1478251500991ED5 /* cmsplugin.c */; }; + 2ACF9F421478251500991ED5 /* cmsps2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EDF1478251500991ED5 /* cmsps2.c */; }; + 2ACF9F431478251500991ED5 /* cmssamp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EE01478251500991ED5 /* cmssamp.c */; }; + 2ACF9F441478251500991ED5 /* cmssm.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EE11478251500991ED5 /* cmssm.c */; }; + 2ACF9F451478251500991ED5 /* cmstypes.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EE21478251500991ED5 /* cmstypes.c */; }; + 2ACF9F461478251500991ED5 /* cmsvirt.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EE31478251500991ED5 /* cmsvirt.c */; }; + 2ACF9F471478251500991ED5 /* cmswtpnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EE41478251500991ED5 /* cmswtpnt.c */; }; + 2ACF9F481478251500991ED5 /* cmsxform.c in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF9EE51478251500991ED5 /* cmsxform.c */; }; + 2ACF9F491478251500991ED5 /* lcms2_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF9EE71478251500991ED5 /* lcms2_internal.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2ACF9E56147824F500991ED5 /* liblcms.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblcms.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2ACF9E6D1478251500991ED5 /* lcms2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lcms2.h; sourceTree = "<group>"; }; + 2ACF9E6E1478251500991ED5 /* lcms2_plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lcms2_plugin.h; sourceTree = "<group>"; }; + 2ACF9ECE1478251500991ED5 /* cmscam02.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmscam02.c; sourceTree = "<group>"; }; + 2ACF9ECF1478251500991ED5 /* cmscgats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmscgats.c; sourceTree = "<group>"; }; + 2ACF9ED01478251500991ED5 /* cmscnvrt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmscnvrt.c; sourceTree = "<group>"; }; + 2ACF9ED11478251500991ED5 /* cmserr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmserr.c; sourceTree = "<group>"; }; + 2ACF9ED21478251500991ED5 /* cmsgamma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsgamma.c; sourceTree = "<group>"; }; + 2ACF9ED31478251500991ED5 /* cmsgmt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsgmt.c; sourceTree = "<group>"; }; + 2ACF9ED41478251500991ED5 /* cmsintrp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsintrp.c; sourceTree = "<group>"; }; + 2ACF9ED51478251500991ED5 /* cmsio0.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsio0.c; sourceTree = "<group>"; }; + 2ACF9ED61478251500991ED5 /* cmsio1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsio1.c; sourceTree = "<group>"; }; + 2ACF9ED71478251500991ED5 /* cmslut.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmslut.c; sourceTree = "<group>"; }; + 2ACF9ED81478251500991ED5 /* cmsmd5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsmd5.c; sourceTree = "<group>"; }; + 2ACF9ED91478251500991ED5 /* cmsmtrx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsmtrx.c; sourceTree = "<group>"; }; + 2ACF9EDA1478251500991ED5 /* cmsnamed.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsnamed.c; sourceTree = "<group>"; }; + 2ACF9EDB1478251500991ED5 /* cmsopt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsopt.c; sourceTree = "<group>"; }; + 2ACF9EDC1478251500991ED5 /* cmspack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmspack.c; sourceTree = "<group>"; }; + 2ACF9EDD1478251500991ED5 /* cmspcs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmspcs.c; sourceTree = "<group>"; }; + 2ACF9EDE1478251500991ED5 /* cmsplugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsplugin.c; sourceTree = "<group>"; }; + 2ACF9EDF1478251500991ED5 /* cmsps2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsps2.c; sourceTree = "<group>"; }; + 2ACF9EE01478251500991ED5 /* cmssamp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmssamp.c; sourceTree = "<group>"; }; + 2ACF9EE11478251500991ED5 /* cmssm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmssm.c; sourceTree = "<group>"; }; + 2ACF9EE21478251500991ED5 /* cmstypes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmstypes.c; sourceTree = "<group>"; }; + 2ACF9EE31478251500991ED5 /* cmsvirt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsvirt.c; sourceTree = "<group>"; }; + 2ACF9EE41478251500991ED5 /* cmswtpnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmswtpnt.c; sourceTree = "<group>"; }; + 2ACF9EE51478251500991ED5 /* cmsxform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmsxform.c; sourceTree = "<group>"; }; + 2ACF9EE71478251500991ED5 /* lcms2_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lcms2_internal.h; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2ACF9E54147824F500991ED5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 2ACF9E56147824F500991ED5 /* liblcms.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 0867D691FE84028FC02AAC07 /* lcms */ = { + isa = PBXGroup; + children = ( + 2ACF9E5A1478251500991ED5 /* lcms2-2.1 */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = lcms; + sourceTree = "<group>"; + }; + 2ACF9E5A1478251500991ED5 /* lcms2-2.1 */ = { + isa = PBXGroup; + children = ( + 2ACF9E6C1478251500991ED5 /* include */, + 2ACF9ECD1478251500991ED5 /* src */, + ); + name = "lcms2-2.1"; + path = "../../../../ext/lcms2-2.1"; + sourceTree = SOURCE_ROOT; + }; + 2ACF9E6C1478251500991ED5 /* include */ = { + isa = PBXGroup; + children = ( + 2ACF9E6D1478251500991ED5 /* lcms2.h */, + 2ACF9E6E1478251500991ED5 /* lcms2_plugin.h */, + ); + path = include; + sourceTree = "<group>"; + }; + 2ACF9ECD1478251500991ED5 /* src */ = { + isa = PBXGroup; + children = ( + 2ACF9ECE1478251500991ED5 /* cmscam02.c */, + 2ACF9ECF1478251500991ED5 /* cmscgats.c */, + 2ACF9ED01478251500991ED5 /* cmscnvrt.c */, + 2ACF9ED11478251500991ED5 /* cmserr.c */, + 2ACF9ED21478251500991ED5 /* cmsgamma.c */, + 2ACF9ED31478251500991ED5 /* cmsgmt.c */, + 2ACF9ED41478251500991ED5 /* cmsintrp.c */, + 2ACF9ED51478251500991ED5 /* cmsio0.c */, + 2ACF9ED61478251500991ED5 /* cmsio1.c */, + 2ACF9ED71478251500991ED5 /* cmslut.c */, + 2ACF9ED81478251500991ED5 /* cmsmd5.c */, + 2ACF9ED91478251500991ED5 /* cmsmtrx.c */, + 2ACF9EDA1478251500991ED5 /* cmsnamed.c */, + 2ACF9EDB1478251500991ED5 /* cmsopt.c */, + 2ACF9EDC1478251500991ED5 /* cmspack.c */, + 2ACF9EDD1478251500991ED5 /* cmspcs.c */, + 2ACF9EDE1478251500991ED5 /* cmsplugin.c */, + 2ACF9EDF1478251500991ED5 /* cmsps2.c */, + 2ACF9EE01478251500991ED5 /* cmssamp.c */, + 2ACF9EE11478251500991ED5 /* cmssm.c */, + 2ACF9EE21478251500991ED5 /* cmstypes.c */, + 2ACF9EE31478251500991ED5 /* cmsvirt.c */, + 2ACF9EE41478251500991ED5 /* cmswtpnt.c */, + 2ACF9EE51478251500991ED5 /* cmsxform.c */, + 2ACF9EE71478251500991ED5 /* lcms2_internal.h */, + ); + path = src; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2ACF9E52147824F500991ED5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF9F2C1478251500991ED5 /* lcms2.h in Headers */, + 2ACF9F2D1478251500991ED5 /* lcms2_plugin.h in Headers */, + 2ACF9F491478251500991ED5 /* lcms2_internal.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2ACF9E55147824F500991ED5 /* lcms */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2ACF9E59147824FB00991ED5 /* Build configuration list for PBXNativeTarget "lcms" */; + buildPhases = ( + 2AF569A814799AF900F9968C /* Unpack lcms2 */, + 2ACF9E52147824F500991ED5 /* Headers */, + 2ACF9E53147824F500991ED5 /* Sources */, + 2ACF9E54147824F500991ED5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = lcms; + productName = lcms; + productReference = 2ACF9E56147824F500991ED5 /* liblcms.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "lcms" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* lcms */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2ACF9E55147824F500991ED5 /* lcms */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2AF569A814799AF900F9968C /* Unpack lcms2 */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/../../../../ext/lcms2-2.1.tar.gz", + ); + name = "Unpack lcms2"; + outputPaths = ( + "$(SRCROOT)/../../../../ext/lcms2-2.1", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd $SRCROOT/../../../../ext\n\nif [ ! -d lcms2-2.1 ]\nthen\n\ttar -xzf lcms2-2.1.tar.gz\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2ACF9E53147824F500991ED5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF9F311478251500991ED5 /* cmscam02.c in Sources */, + 2ACF9F321478251500991ED5 /* cmscgats.c in Sources */, + 2ACF9F331478251500991ED5 /* cmscnvrt.c in Sources */, + 2ACF9F341478251500991ED5 /* cmserr.c in Sources */, + 2ACF9F351478251500991ED5 /* cmsgamma.c in Sources */, + 2ACF9F361478251500991ED5 /* cmsgmt.c in Sources */, + 2ACF9F371478251500991ED5 /* cmsintrp.c in Sources */, + 2ACF9F381478251500991ED5 /* cmsio0.c in Sources */, + 2ACF9F391478251500991ED5 /* cmsio1.c in Sources */, + 2ACF9F3A1478251500991ED5 /* cmslut.c in Sources */, + 2ACF9F3B1478251500991ED5 /* cmsmd5.c in Sources */, + 2ACF9F3C1478251500991ED5 /* cmsmtrx.c in Sources */, + 2ACF9F3D1478251500991ED5 /* cmsnamed.c in Sources */, + 2ACF9F3E1478251500991ED5 /* cmsopt.c in Sources */, + 2ACF9F3F1478251500991ED5 /* cmspack.c in Sources */, + 2ACF9F401478251500991ED5 /* cmspcs.c in Sources */, + 2ACF9F411478251500991ED5 /* cmsplugin.c in Sources */, + 2ACF9F421478251500991ED5 /* cmsps2.c in Sources */, + 2ACF9F431478251500991ED5 /* cmssamp.c in Sources */, + 2ACF9F441478251500991ED5 /* cmssm.c in Sources */, + 2ACF9F451478251500991ED5 /* cmstypes.c in Sources */, + 2ACF9F461478251500991ED5 /* cmsvirt.c in Sources */, + 2ACF9F471478251500991ED5 /* cmswtpnt.c in Sources */, + 2ACF9F481478251500991ED5 /* cmsxform.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB916508733D950010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Debug; + }; + 1DEB916608733D950010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Release; + }; + 2ACF9E57147824F600991ED5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = lcms; + }; + name = Debug; + }; + 2ACF9E58147824F600991ED5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = lcms; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "lcms" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB916508733D950010E9CD /* Debug */, + 1DEB916608733D950010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2ACF9E59147824FB00991ED5 /* Build configuration list for PBXNativeTarget "lcms" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2ACF9E57147824F600991ED5 /* Debug */, + 2ACF9E58147824F600991ED5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/src/aftereffects/xcode/ext/tinyxml.xcodeproj/project.pbxproj b/src/aftereffects/xcode/ext/tinyxml.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2f07451 --- /dev/null +++ b/src/aftereffects/xcode/ext/tinyxml.xcodeproj/project.pbxproj @@ -0,0 +1,248 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 2ACF55501477685000991ED5 /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF554A1477685000991ED5 /* tinystr.cpp */; }; + 2ACF55511477685000991ED5 /* tinystr.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF554B1477685000991ED5 /* tinystr.h */; }; + 2ACF55521477685000991ED5 /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF554C1477685000991ED5 /* tinyxml.cpp */; }; + 2ACF55531477685000991ED5 /* tinyxml.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF554D1477685000991ED5 /* tinyxml.h */; }; + 2ACF55541477685000991ED5 /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF554E1477685000991ED5 /* tinyxmlerror.cpp */; }; + 2ACF55551477685000991ED5 /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF554F1477685000991ED5 /* tinyxmlparser.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2ACF55441477682B00991ED5 /* libtinyxml.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtinyxml.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2ACF554A1477685000991ED5 /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; }; + 2ACF554B1477685000991ED5 /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; }; + 2ACF554C1477685000991ED5 /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; }; + 2ACF554D1477685000991ED5 /* tinyxml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinyxml.h; sourceTree = "<group>"; }; + 2ACF554E1477685000991ED5 /* tinyxmlerror.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlerror.cpp; sourceTree = "<group>"; }; + 2ACF554F1477685000991ED5 /* tinyxmlparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2ACF55421477682B00991ED5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 2ACF55441477682B00991ED5 /* libtinyxml.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 0867D691FE84028FC02AAC07 /* tinyxml */ = { + isa = PBXGroup; + children = ( + 2ACF55481477685000991ED5 /* tinyxml */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = tinyxml; + sourceTree = "<group>"; + }; + 2ACF55481477685000991ED5 /* tinyxml */ = { + isa = PBXGroup; + children = ( + 2ACF554A1477685000991ED5 /* tinystr.cpp */, + 2ACF554B1477685000991ED5 /* tinystr.h */, + 2ACF554C1477685000991ED5 /* tinyxml.cpp */, + 2ACF554D1477685000991ED5 /* tinyxml.h */, + 2ACF554E1477685000991ED5 /* tinyxmlerror.cpp */, + 2ACF554F1477685000991ED5 /* tinyxmlparser.cpp */, + ); + name = tinyxml; + path = ../../../../ext/tinyxml; + sourceTree = SOURCE_ROOT; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2ACF55401477682B00991ED5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF55511477685000991ED5 /* tinystr.h in Headers */, + 2ACF55531477685000991ED5 /* tinyxml.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2ACF55431477682B00991ED5 /* tinyxml */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2ACF55471477683C00991ED5 /* Build configuration list for PBXNativeTarget "tinyxml" */; + buildPhases = ( + 2AF569961479999900F9968C /* Unpack tinyxml */, + 2ACF55401477682B00991ED5 /* Headers */, + 2ACF55411477682B00991ED5 /* Sources */, + 2ACF55421477682B00991ED5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = tinyxml; + productName = tinyxml; + productReference = 2ACF55441477682B00991ED5 /* libtinyxml.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "tinyxml" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* tinyxml */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2ACF55431477682B00991ED5 /* tinyxml */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2AF569961479999900F9968C /* Unpack tinyxml */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/../../../../ext/tinyxml_2_6_1.tar.gz", + "$(SRCROOT)/../../../../ext/tinyxml_2_6_1.patch", + ); + name = "Unpack tinyxml"; + outputPaths = ( + "$(SRCROOT)/../../../../ext/tinyxml", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd $SRCROOT/../../../../ext\n\nif [ ! -d tinyxml ]\nthen\n\ttar -xzf tinyxml_2_6_1.tar.gz\n\tpatch -p0 < tinyxml_2_6_1.patch\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2ACF55411477682B00991ED5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF55501477685000991ED5 /* tinystr.cpp in Sources */, + 2ACF55521477685000991ED5 /* tinyxml.cpp in Sources */, + 2ACF55541477685000991ED5 /* tinyxmlerror.cpp in Sources */, + 2ACF55551477685000991ED5 /* tinyxmlparser.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB916508733D950010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = TIXML_USE_STL; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Debug; + }; + 1DEB916608733D950010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + NDEBUG, + TIXML_USE_STL, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Release; + }; + 2ACF55451477682B00991ED5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = tinyxml; + }; + name = Debug; + }; + 2ACF55461477682B00991ED5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = tinyxml; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "tinyxml" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB916508733D950010E9CD /* Debug */, + 1DEB916608733D950010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2ACF55471477683C00991ED5 /* Build configuration list for PBXNativeTarget "tinyxml" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2ACF55451477682B00991ED5 /* Debug */, + 2ACF55461477682B00991ED5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/src/aftereffects/xcode/ext/yaml.xcodeproj/project.pbxproj b/src/aftereffects/xcode/ext/yaml.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2dc9cbc --- /dev/null +++ b/src/aftereffects/xcode/ext/yaml.xcodeproj/project.pbxproj @@ -0,0 +1,571 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 2AB6B01315538484007C3547 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AB6B01215538484007C3547 /* binary.cpp */; }; + 2ACF55F21477693B00991ED5 /* aliasmanager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55A31477693B00991ED5 /* aliasmanager.h */; }; + 2ACF55F31477693B00991ED5 /* anchor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55A41477693B00991ED5 /* anchor.h */; }; + 2ACF55F41477693B00991ED5 /* anchordict.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55A61477693B00991ED5 /* anchordict.h */; }; + 2ACF55F51477693B00991ED5 /* graphbuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55A71477693B00991ED5 /* graphbuilder.h */; }; + 2ACF55F61477693B00991ED5 /* conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55A81477693B00991ED5 /* conversion.h */; }; + 2ACF55F71477693B00991ED5 /* dll.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55A91477693B00991ED5 /* dll.h */; }; + 2ACF55F81477693B00991ED5 /* emitfromevents.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55AA1477693B00991ED5 /* emitfromevents.h */; }; + 2ACF55F91477693B00991ED5 /* emitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55AB1477693B00991ED5 /* emitter.h */; }; + 2ACF55FA1477693B00991ED5 /* emittermanip.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55AC1477693B00991ED5 /* emittermanip.h */; }; + 2ACF55FB1477693B00991ED5 /* eventhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55AD1477693B00991ED5 /* eventhandler.h */; }; + 2ACF55FC1477693B00991ED5 /* exceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55AE1477693B00991ED5 /* exceptions.h */; }; + 2ACF55FD1477693B00991ED5 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55AF1477693B00991ED5 /* iterator.h */; }; + 2ACF55FE1477693B00991ED5 /* ltnode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B01477693B00991ED5 /* ltnode.h */; }; + 2ACF55FF1477693B00991ED5 /* mark.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B11477693B00991ED5 /* mark.h */; }; + 2ACF56001477693B00991ED5 /* node.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B21477693B00991ED5 /* node.h */; }; + 2ACF56011477693B00991ED5 /* nodeimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B31477693B00991ED5 /* nodeimpl.h */; }; + 2ACF56021477693B00991ED5 /* nodereadimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B41477693B00991ED5 /* nodereadimpl.h */; }; + 2ACF56031477693B00991ED5 /* nodeutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B51477693B00991ED5 /* nodeutil.h */; }; + 2ACF56041477693B00991ED5 /* noncopyable.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B61477693B00991ED5 /* noncopyable.h */; }; + 2ACF56051477693B00991ED5 /* null.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B71477693B00991ED5 /* null.h */; }; + 2ACF56061477693B00991ED5 /* ostream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B81477693B00991ED5 /* ostream.h */; }; + 2ACF56071477693B00991ED5 /* parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55B91477693B00991ED5 /* parser.h */; }; + 2ACF56081477693B00991ED5 /* stlemitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55BA1477693B00991ED5 /* stlemitter.h */; }; + 2ACF56091477693B00991ED5 /* stlnode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55BB1477693B00991ED5 /* stlnode.h */; }; + 2ACF560A1477693B00991ED5 /* traits.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55BC1477693B00991ED5 /* traits.h */; }; + 2ACF560B1477693B00991ED5 /* yaml.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55BD1477693B00991ED5 /* yaml.h */; }; + 2ACF560C1477693B00991ED5 /* aliasmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55BF1477693B00991ED5 /* aliasmanager.cpp */; }; + 2ACF560D1477693B00991ED5 /* collectionstack.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55C01477693B00991ED5 /* collectionstack.h */; }; + 2ACF560E1477693B00991ED5 /* graphbuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55C21477693B00991ED5 /* graphbuilder.cpp */; }; + 2ACF560F1477693B00991ED5 /* graphbuilderadapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55C31477693B00991ED5 /* graphbuilderadapter.cpp */; }; + 2ACF56101477693B00991ED5 /* graphbuilderadapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55C41477693B00991ED5 /* graphbuilderadapter.h */; }; + 2ACF56111477693B00991ED5 /* conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55C51477693B00991ED5 /* conversion.cpp */; }; + 2ACF56121477693B00991ED5 /* directives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55C61477693B00991ED5 /* directives.cpp */; }; + 2ACF56131477693B00991ED5 /* directives.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55C71477693B00991ED5 /* directives.h */; }; + 2ACF56141477693B00991ED5 /* emitfromevents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55C81477693B00991ED5 /* emitfromevents.cpp */; }; + 2ACF56151477693B00991ED5 /* emitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55C91477693B00991ED5 /* emitter.cpp */; }; + 2ACF56161477693B00991ED5 /* emitterstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55CA1477693B00991ED5 /* emitterstate.cpp */; }; + 2ACF56171477693B00991ED5 /* emitterstate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55CB1477693B00991ED5 /* emitterstate.h */; }; + 2ACF56181477693B00991ED5 /* emitterutils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55CC1477693B00991ED5 /* emitterutils.cpp */; }; + 2ACF56191477693B00991ED5 /* emitterutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55CD1477693B00991ED5 /* emitterutils.h */; }; + 2ACF561A1477693B00991ED5 /* exp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55CE1477693B00991ED5 /* exp.cpp */; }; + 2ACF561B1477693B00991ED5 /* exp.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55CF1477693B00991ED5 /* exp.h */; }; + 2ACF561C1477693B00991ED5 /* indentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55D01477693B00991ED5 /* indentation.h */; }; + 2ACF561D1477693B00991ED5 /* iterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55D11477693B00991ED5 /* iterator.cpp */; }; + 2ACF561E1477693B00991ED5 /* iterpriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55D21477693B00991ED5 /* iterpriv.h */; }; + 2ACF561F1477693B00991ED5 /* node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55D31477693B00991ED5 /* node.cpp */; }; + 2ACF56201477693B00991ED5 /* nodebuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55D41477693B00991ED5 /* nodebuilder.cpp */; }; + 2ACF56211477693B00991ED5 /* nodebuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55D51477693B00991ED5 /* nodebuilder.h */; }; + 2ACF56221477693B00991ED5 /* nodeownership.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55D61477693B00991ED5 /* nodeownership.cpp */; }; + 2ACF56231477693B00991ED5 /* nodeownership.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55D71477693B00991ED5 /* nodeownership.h */; }; + 2ACF56241477693B00991ED5 /* null.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55D81477693B00991ED5 /* null.cpp */; }; + 2ACF56251477693B00991ED5 /* ostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55D91477693B00991ED5 /* ostream.cpp */; }; + 2ACF56261477693B00991ED5 /* parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55DA1477693B00991ED5 /* parser.cpp */; }; + 2ACF56271477693B00991ED5 /* ptr_stack.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55DB1477693B00991ED5 /* ptr_stack.h */; }; + 2ACF56281477693B00991ED5 /* ptr_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55DC1477693B00991ED5 /* ptr_vector.h */; }; + 2ACF56291477693B00991ED5 /* regex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55DD1477693B00991ED5 /* regex.cpp */; }; + 2ACF562A1477693B00991ED5 /* regex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55DE1477693B00991ED5 /* regex.h */; }; + 2ACF562B1477693B00991ED5 /* regeximpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55DF1477693B00991ED5 /* regeximpl.h */; }; + 2ACF562C1477693B00991ED5 /* scanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55E01477693B00991ED5 /* scanner.cpp */; }; + 2ACF562D1477693B00991ED5 /* scanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55E11477693B00991ED5 /* scanner.h */; }; + 2ACF562E1477693B00991ED5 /* scanscalar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55E21477693B00991ED5 /* scanscalar.cpp */; }; + 2ACF562F1477693B00991ED5 /* scanscalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55E31477693B00991ED5 /* scanscalar.h */; }; + 2ACF56301477693B00991ED5 /* scantag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55E41477693B00991ED5 /* scantag.cpp */; }; + 2ACF56311477693B00991ED5 /* scantag.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55E51477693B00991ED5 /* scantag.h */; }; + 2ACF56321477693B00991ED5 /* scantoken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55E61477693B00991ED5 /* scantoken.cpp */; }; + 2ACF56331477693B00991ED5 /* setting.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55E71477693B00991ED5 /* setting.h */; }; + 2ACF56341477693B00991ED5 /* simplekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55E81477693B00991ED5 /* simplekey.cpp */; }; + 2ACF56351477693B00991ED5 /* singledocparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55E91477693B00991ED5 /* singledocparser.cpp */; }; + 2ACF56361477693B00991ED5 /* singledocparser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55EA1477693B00991ED5 /* singledocparser.h */; }; + 2ACF56371477693B00991ED5 /* stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55EB1477693B00991ED5 /* stream.cpp */; }; + 2ACF56381477693B00991ED5 /* stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55EC1477693B00991ED5 /* stream.h */; }; + 2ACF56391477693B00991ED5 /* streamcharsource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55ED1477693B00991ED5 /* streamcharsource.h */; }; + 2ACF563A1477693B00991ED5 /* stringsource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55EE1477693B00991ED5 /* stringsource.h */; }; + 2ACF563B1477693B00991ED5 /* tag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF55EF1477693B00991ED5 /* tag.cpp */; }; + 2ACF563C1477693B00991ED5 /* tag.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55F01477693B00991ED5 /* tag.h */; }; + 2ACF563D1477693B00991ED5 /* token.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF55F11477693B00991ED5 /* token.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2AB6B01215538484007C3547 /* binary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = binary.cpp; sourceTree = "<group>"; }; + 2ACF559C1477692300991ED5 /* libyaml.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libyaml.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2ACF55A31477693B00991ED5 /* aliasmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aliasmanager.h; sourceTree = "<group>"; }; + 2ACF55A41477693B00991ED5 /* anchor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = anchor.h; sourceTree = "<group>"; }; + 2ACF55A61477693B00991ED5 /* anchordict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = anchordict.h; sourceTree = "<group>"; }; + 2ACF55A71477693B00991ED5 /* graphbuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphbuilder.h; sourceTree = "<group>"; }; + 2ACF55A81477693B00991ED5 /* conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conversion.h; sourceTree = "<group>"; }; + 2ACF55A91477693B00991ED5 /* dll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dll.h; sourceTree = "<group>"; }; + 2ACF55AA1477693B00991ED5 /* emitfromevents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emitfromevents.h; sourceTree = "<group>"; }; + 2ACF55AB1477693B00991ED5 /* emitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emitter.h; sourceTree = "<group>"; }; + 2ACF55AC1477693B00991ED5 /* emittermanip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emittermanip.h; sourceTree = "<group>"; }; + 2ACF55AD1477693B00991ED5 /* eventhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventhandler.h; sourceTree = "<group>"; }; + 2ACF55AE1477693B00991ED5 /* exceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exceptions.h; sourceTree = "<group>"; }; + 2ACF55AF1477693B00991ED5 /* iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iterator.h; sourceTree = "<group>"; }; + 2ACF55B01477693B00991ED5 /* ltnode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ltnode.h; sourceTree = "<group>"; }; + 2ACF55B11477693B00991ED5 /* mark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mark.h; sourceTree = "<group>"; }; + 2ACF55B21477693B00991ED5 /* node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node.h; sourceTree = "<group>"; }; + 2ACF55B31477693B00991ED5 /* nodeimpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nodeimpl.h; sourceTree = "<group>"; }; + 2ACF55B41477693B00991ED5 /* nodereadimpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nodereadimpl.h; sourceTree = "<group>"; }; + 2ACF55B51477693B00991ED5 /* nodeutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nodeutil.h; sourceTree = "<group>"; }; + 2ACF55B61477693B00991ED5 /* noncopyable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = noncopyable.h; sourceTree = "<group>"; }; + 2ACF55B71477693B00991ED5 /* null.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = null.h; sourceTree = "<group>"; }; + 2ACF55B81477693B00991ED5 /* ostream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ostream.h; sourceTree = "<group>"; }; + 2ACF55B91477693B00991ED5 /* parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parser.h; sourceTree = "<group>"; }; + 2ACF55BA1477693B00991ED5 /* stlemitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stlemitter.h; sourceTree = "<group>"; }; + 2ACF55BB1477693B00991ED5 /* stlnode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stlnode.h; sourceTree = "<group>"; }; + 2ACF55BC1477693B00991ED5 /* traits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = traits.h; sourceTree = "<group>"; }; + 2ACF55BD1477693B00991ED5 /* yaml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yaml.h; sourceTree = "<group>"; }; + 2ACF55BF1477693B00991ED5 /* aliasmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aliasmanager.cpp; sourceTree = "<group>"; }; + 2ACF55C01477693B00991ED5 /* collectionstack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectionstack.h; sourceTree = "<group>"; }; + 2ACF55C21477693B00991ED5 /* graphbuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphbuilder.cpp; sourceTree = "<group>"; }; + 2ACF55C31477693B00991ED5 /* graphbuilderadapter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphbuilderadapter.cpp; sourceTree = "<group>"; }; + 2ACF55C41477693B00991ED5 /* graphbuilderadapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphbuilderadapter.h; sourceTree = "<group>"; }; + 2ACF55C51477693B00991ED5 /* conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conversion.cpp; sourceTree = "<group>"; }; + 2ACF55C61477693B00991ED5 /* directives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = directives.cpp; sourceTree = "<group>"; }; + 2ACF55C71477693B00991ED5 /* directives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = directives.h; sourceTree = "<group>"; }; + 2ACF55C81477693B00991ED5 /* emitfromevents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emitfromevents.cpp; sourceTree = "<group>"; }; + 2ACF55C91477693B00991ED5 /* emitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emitter.cpp; sourceTree = "<group>"; }; + 2ACF55CA1477693B00991ED5 /* emitterstate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emitterstate.cpp; sourceTree = "<group>"; }; + 2ACF55CB1477693B00991ED5 /* emitterstate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emitterstate.h; sourceTree = "<group>"; }; + 2ACF55CC1477693B00991ED5 /* emitterutils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emitterutils.cpp; sourceTree = "<group>"; }; + 2ACF55CD1477693B00991ED5 /* emitterutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emitterutils.h; sourceTree = "<group>"; }; + 2ACF55CE1477693B00991ED5 /* exp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = exp.cpp; sourceTree = "<group>"; }; + 2ACF55CF1477693B00991ED5 /* exp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exp.h; sourceTree = "<group>"; }; + 2ACF55D01477693B00991ED5 /* indentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = indentation.h; sourceTree = "<group>"; }; + 2ACF55D11477693B00991ED5 /* iterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iterator.cpp; sourceTree = "<group>"; }; + 2ACF55D21477693B00991ED5 /* iterpriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iterpriv.h; sourceTree = "<group>"; }; + 2ACF55D31477693B00991ED5 /* node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = node.cpp; sourceTree = "<group>"; }; + 2ACF55D41477693B00991ED5 /* nodebuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nodebuilder.cpp; sourceTree = "<group>"; }; + 2ACF55D51477693B00991ED5 /* nodebuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nodebuilder.h; sourceTree = "<group>"; }; + 2ACF55D61477693B00991ED5 /* nodeownership.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nodeownership.cpp; sourceTree = "<group>"; }; + 2ACF55D71477693B00991ED5 /* nodeownership.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nodeownership.h; sourceTree = "<group>"; }; + 2ACF55D81477693B00991ED5 /* null.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = null.cpp; sourceTree = "<group>"; }; + 2ACF55D91477693B00991ED5 /* ostream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ostream.cpp; sourceTree = "<group>"; }; + 2ACF55DA1477693B00991ED5 /* parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parser.cpp; sourceTree = "<group>"; }; + 2ACF55DB1477693B00991ED5 /* ptr_stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ptr_stack.h; sourceTree = "<group>"; }; + 2ACF55DC1477693B00991ED5 /* ptr_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ptr_vector.h; sourceTree = "<group>"; }; + 2ACF55DD1477693B00991ED5 /* regex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = regex.cpp; sourceTree = "<group>"; }; + 2ACF55DE1477693B00991ED5 /* regex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regex.h; sourceTree = "<group>"; }; + 2ACF55DF1477693B00991ED5 /* regeximpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regeximpl.h; sourceTree = "<group>"; }; + 2ACF55E01477693B00991ED5 /* scanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scanner.cpp; sourceTree = "<group>"; }; + 2ACF55E11477693B00991ED5 /* scanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scanner.h; sourceTree = "<group>"; }; + 2ACF55E21477693B00991ED5 /* scanscalar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scanscalar.cpp; sourceTree = "<group>"; }; + 2ACF55E31477693B00991ED5 /* scanscalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scanscalar.h; sourceTree = "<group>"; }; + 2ACF55E41477693B00991ED5 /* scantag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scantag.cpp; sourceTree = "<group>"; }; + 2ACF55E51477693B00991ED5 /* scantag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scantag.h; sourceTree = "<group>"; }; + 2ACF55E61477693B00991ED5 /* scantoken.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scantoken.cpp; sourceTree = "<group>"; }; + 2ACF55E71477693B00991ED5 /* setting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setting.h; sourceTree = "<group>"; }; + 2ACF55E81477693B00991ED5 /* simplekey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplekey.cpp; sourceTree = "<group>"; }; + 2ACF55E91477693B00991ED5 /* singledocparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = singledocparser.cpp; sourceTree = "<group>"; }; + 2ACF55EA1477693B00991ED5 /* singledocparser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = singledocparser.h; sourceTree = "<group>"; }; + 2ACF55EB1477693B00991ED5 /* stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stream.cpp; sourceTree = "<group>"; }; + 2ACF55EC1477693B00991ED5 /* stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = "<group>"; }; + 2ACF55ED1477693B00991ED5 /* streamcharsource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = streamcharsource.h; sourceTree = "<group>"; }; + 2ACF55EE1477693B00991ED5 /* stringsource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringsource.h; sourceTree = "<group>"; }; + 2ACF55EF1477693B00991ED5 /* tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tag.cpp; sourceTree = "<group>"; }; + 2ACF55F01477693B00991ED5 /* tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tag.h; sourceTree = "<group>"; }; + 2ACF55F11477693B00991ED5 /* token.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = token.h; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2ACF559A1477692300991ED5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 2ACF559C1477692300991ED5 /* libyaml.a */, + ); + name = Products; + sourceTree = "<group>"; + }; + 0867D691FE84028FC02AAC07 /* yaml */ = { + isa = PBXGroup; + children = ( + 2ACF55A01477693B00991ED5 /* yaml-cpp */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = yaml; + sourceTree = "<group>"; + }; + 2ACF55A01477693B00991ED5 /* yaml-cpp */ = { + isa = PBXGroup; + children = ( + 2ACF55A11477693B00991ED5 /* include */, + 2ACF55BE1477693B00991ED5 /* src */, + ); + name = "yaml-cpp"; + path = "../../../../ext/yaml-cpp"; + sourceTree = SOURCE_ROOT; + }; + 2ACF55A11477693B00991ED5 /* include */ = { + isa = PBXGroup; + children = ( + 2ACF55A21477693B00991ED5 /* yaml-cpp */, + ); + path = include; + sourceTree = "<group>"; + }; + 2ACF55A21477693B00991ED5 /* yaml-cpp */ = { + isa = PBXGroup; + children = ( + 2ACF55A31477693B00991ED5 /* aliasmanager.h */, + 2ACF55A41477693B00991ED5 /* anchor.h */, + 2ACF55A51477693B00991ED5 /* contrib */, + 2ACF55A81477693B00991ED5 /* conversion.h */, + 2ACF55A91477693B00991ED5 /* dll.h */, + 2ACF55AA1477693B00991ED5 /* emitfromevents.h */, + 2ACF55AB1477693B00991ED5 /* emitter.h */, + 2ACF55AC1477693B00991ED5 /* emittermanip.h */, + 2ACF55AD1477693B00991ED5 /* eventhandler.h */, + 2ACF55AE1477693B00991ED5 /* exceptions.h */, + 2ACF55AF1477693B00991ED5 /* iterator.h */, + 2ACF55B01477693B00991ED5 /* ltnode.h */, + 2ACF55B11477693B00991ED5 /* mark.h */, + 2ACF55B21477693B00991ED5 /* node.h */, + 2ACF55B31477693B00991ED5 /* nodeimpl.h */, + 2ACF55B41477693B00991ED5 /* nodereadimpl.h */, + 2ACF55B51477693B00991ED5 /* nodeutil.h */, + 2ACF55B61477693B00991ED5 /* noncopyable.h */, + 2ACF55B71477693B00991ED5 /* null.h */, + 2ACF55B81477693B00991ED5 /* ostream.h */, + 2ACF55B91477693B00991ED5 /* parser.h */, + 2ACF55BA1477693B00991ED5 /* stlemitter.h */, + 2ACF55BB1477693B00991ED5 /* stlnode.h */, + 2ACF55BC1477693B00991ED5 /* traits.h */, + 2ACF55BD1477693B00991ED5 /* yaml.h */, + ); + path = "yaml-cpp"; + sourceTree = "<group>"; + }; + 2ACF55A51477693B00991ED5 /* contrib */ = { + isa = PBXGroup; + children = ( + 2ACF55A61477693B00991ED5 /* anchordict.h */, + 2ACF55A71477693B00991ED5 /* graphbuilder.h */, + ); + path = contrib; + sourceTree = "<group>"; + }; + 2ACF55BE1477693B00991ED5 /* src */ = { + isa = PBXGroup; + children = ( + 2ACF55BF1477693B00991ED5 /* aliasmanager.cpp */, + 2AB6B01215538484007C3547 /* binary.cpp */, + 2ACF55C01477693B00991ED5 /* collectionstack.h */, + 2ACF55C11477693B00991ED5 /* contrib */, + 2ACF55C51477693B00991ED5 /* conversion.cpp */, + 2ACF55C61477693B00991ED5 /* directives.cpp */, + 2ACF55C71477693B00991ED5 /* directives.h */, + 2ACF55C81477693B00991ED5 /* emitfromevents.cpp */, + 2ACF55C91477693B00991ED5 /* emitter.cpp */, + 2ACF55CA1477693B00991ED5 /* emitterstate.cpp */, + 2ACF55CB1477693B00991ED5 /* emitterstate.h */, + 2ACF55CC1477693B00991ED5 /* emitterutils.cpp */, + 2ACF55CD1477693B00991ED5 /* emitterutils.h */, + 2ACF55CE1477693B00991ED5 /* exp.cpp */, + 2ACF55CF1477693B00991ED5 /* exp.h */, + 2ACF55D01477693B00991ED5 /* indentation.h */, + 2ACF55D11477693B00991ED5 /* iterator.cpp */, + 2ACF55D21477693B00991ED5 /* iterpriv.h */, + 2ACF55D31477693B00991ED5 /* node.cpp */, + 2ACF55D41477693B00991ED5 /* nodebuilder.cpp */, + 2ACF55D51477693B00991ED5 /* nodebuilder.h */, + 2ACF55D61477693B00991ED5 /* nodeownership.cpp */, + 2ACF55D71477693B00991ED5 /* nodeownership.h */, + 2ACF55D81477693B00991ED5 /* null.cpp */, + 2ACF55D91477693B00991ED5 /* ostream.cpp */, + 2ACF55DA1477693B00991ED5 /* parser.cpp */, + 2ACF55DB1477693B00991ED5 /* ptr_stack.h */, + 2ACF55DC1477693B00991ED5 /* ptr_vector.h */, + 2ACF55DD1477693B00991ED5 /* regex.cpp */, + 2ACF55DE1477693B00991ED5 /* regex.h */, + 2ACF55DF1477693B00991ED5 /* regeximpl.h */, + 2ACF55E01477693B00991ED5 /* scanner.cpp */, + 2ACF55E11477693B00991ED5 /* scanner.h */, + 2ACF55E21477693B00991ED5 /* scanscalar.cpp */, + 2ACF55E31477693B00991ED5 /* scanscalar.h */, + 2ACF55E41477693B00991ED5 /* scantag.cpp */, + 2ACF55E51477693B00991ED5 /* scantag.h */, + 2ACF55E61477693B00991ED5 /* scantoken.cpp */, + 2ACF55E71477693B00991ED5 /* setting.h */, + 2ACF55E81477693B00991ED5 /* simplekey.cpp */, + 2ACF55E91477693B00991ED5 /* singledocparser.cpp */, + 2ACF55EA1477693B00991ED5 /* singledocparser.h */, + 2ACF55EB1477693B00991ED5 /* stream.cpp */, + 2ACF55EC1477693B00991ED5 /* stream.h */, + 2ACF55ED1477693B00991ED5 /* streamcharsource.h */, + 2ACF55EE1477693B00991ED5 /* stringsource.h */, + 2ACF55EF1477693B00991ED5 /* tag.cpp */, + 2ACF55F01477693B00991ED5 /* tag.h */, + 2ACF55F11477693B00991ED5 /* token.h */, + ); + path = src; + sourceTree = "<group>"; + }; + 2ACF55C11477693B00991ED5 /* contrib */ = { + isa = PBXGroup; + children = ( + 2ACF55C21477693B00991ED5 /* graphbuilder.cpp */, + 2ACF55C31477693B00991ED5 /* graphbuilderadapter.cpp */, + 2ACF55C41477693B00991ED5 /* graphbuilderadapter.h */, + ); + path = contrib; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2ACF55981477692300991ED5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF55F21477693B00991ED5 /* aliasmanager.h in Headers */, + 2ACF55F31477693B00991ED5 /* anchor.h in Headers */, + 2ACF55F41477693B00991ED5 /* anchordict.h in Headers */, + 2ACF55F51477693B00991ED5 /* graphbuilder.h in Headers */, + 2ACF55F61477693B00991ED5 /* conversion.h in Headers */, + 2ACF55F71477693B00991ED5 /* dll.h in Headers */, + 2ACF55F81477693B00991ED5 /* emitfromevents.h in Headers */, + 2ACF55F91477693B00991ED5 /* emitter.h in Headers */, + 2ACF55FA1477693B00991ED5 /* emittermanip.h in Headers */, + 2ACF55FB1477693B00991ED5 /* eventhandler.h in Headers */, + 2ACF55FC1477693B00991ED5 /* exceptions.h in Headers */, + 2ACF55FD1477693B00991ED5 /* iterator.h in Headers */, + 2ACF55FE1477693B00991ED5 /* ltnode.h in Headers */, + 2ACF55FF1477693B00991ED5 /* mark.h in Headers */, + 2ACF56001477693B00991ED5 /* node.h in Headers */, + 2ACF56011477693B00991ED5 /* nodeimpl.h in Headers */, + 2ACF56021477693B00991ED5 /* nodereadimpl.h in Headers */, + 2ACF56031477693B00991ED5 /* nodeutil.h in Headers */, + 2ACF56041477693B00991ED5 /* noncopyable.h in Headers */, + 2ACF56051477693B00991ED5 /* null.h in Headers */, + 2ACF56061477693B00991ED5 /* ostream.h in Headers */, + 2ACF56071477693B00991ED5 /* parser.h in Headers */, + 2ACF56081477693B00991ED5 /* stlemitter.h in Headers */, + 2ACF56091477693B00991ED5 /* stlnode.h in Headers */, + 2ACF560A1477693B00991ED5 /* traits.h in Headers */, + 2ACF560B1477693B00991ED5 /* yaml.h in Headers */, + 2ACF560D1477693B00991ED5 /* collectionstack.h in Headers */, + 2ACF56101477693B00991ED5 /* graphbuilderadapter.h in Headers */, + 2ACF56131477693B00991ED5 /* directives.h in Headers */, + 2ACF56171477693B00991ED5 /* emitterstate.h in Headers */, + 2ACF56191477693B00991ED5 /* emitterutils.h in Headers */, + 2ACF561B1477693B00991ED5 /* exp.h in Headers */, + 2ACF561C1477693B00991ED5 /* indentation.h in Headers */, + 2ACF561E1477693B00991ED5 /* iterpriv.h in Headers */, + 2ACF56211477693B00991ED5 /* nodebuilder.h in Headers */, + 2ACF56231477693B00991ED5 /* nodeownership.h in Headers */, + 2ACF56271477693B00991ED5 /* ptr_stack.h in Headers */, + 2ACF56281477693B00991ED5 /* ptr_vector.h in Headers */, + 2ACF562A1477693B00991ED5 /* regex.h in Headers */, + 2ACF562B1477693B00991ED5 /* regeximpl.h in Headers */, + 2ACF562D1477693B00991ED5 /* scanner.h in Headers */, + 2ACF562F1477693B00991ED5 /* scanscalar.h in Headers */, + 2ACF56311477693B00991ED5 /* scantag.h in Headers */, + 2ACF56331477693B00991ED5 /* setting.h in Headers */, + 2ACF56361477693B00991ED5 /* singledocparser.h in Headers */, + 2ACF56381477693B00991ED5 /* stream.h in Headers */, + 2ACF56391477693B00991ED5 /* streamcharsource.h in Headers */, + 2ACF563A1477693B00991ED5 /* stringsource.h in Headers */, + 2ACF563C1477693B00991ED5 /* tag.h in Headers */, + 2ACF563D1477693B00991ED5 /* token.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2ACF559B1477692300991ED5 /* yaml */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2ACF559F1477692B00991ED5 /* Build configuration list for PBXNativeTarget "yaml" */; + buildPhases = ( + 2AF56976147991F700F9968C /* Unpack yaml */, + 2ACF55981477692300991ED5 /* Headers */, + 2ACF55991477692300991ED5 /* Sources */, + 2ACF559A1477692300991ED5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = yaml; + productName = yaml; + productReference = 2ACF559C1477692300991ED5 /* libyaml.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "yaml" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* yaml */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2ACF559B1477692300991ED5 /* yaml */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2AF56976147991F700F9968C /* Unpack yaml */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/../../../../ext/yaml-cpp-0.3.0.tar.gz", + "$(SRCROOT)/../../../../ext/yaml-cpp-0.3.0.patch", + ); + name = "Unpack yaml"; + outputPaths = ( + "$(SRCROOT)/../../../../ext/yaml-cpp", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd $SRCROOT/../../../../ext\n\nif [ ! -d yaml-cpp ]\nthen\n\ttar -xzf yaml-cpp-0.3.0.tar.gz\n\tpatch -p0 < yaml-cpp-0.3.0.patch\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2ACF55991477692300991ED5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2ACF560C1477693B00991ED5 /* aliasmanager.cpp in Sources */, + 2ACF560E1477693B00991ED5 /* graphbuilder.cpp in Sources */, + 2ACF560F1477693B00991ED5 /* graphbuilderadapter.cpp in Sources */, + 2ACF56111477693B00991ED5 /* conversion.cpp in Sources */, + 2ACF56121477693B00991ED5 /* directives.cpp in Sources */, + 2ACF56141477693B00991ED5 /* emitfromevents.cpp in Sources */, + 2ACF56151477693B00991ED5 /* emitter.cpp in Sources */, + 2ACF56161477693B00991ED5 /* emitterstate.cpp in Sources */, + 2ACF56181477693B00991ED5 /* emitterutils.cpp in Sources */, + 2ACF561A1477693B00991ED5 /* exp.cpp in Sources */, + 2ACF561D1477693B00991ED5 /* iterator.cpp in Sources */, + 2ACF561F1477693B00991ED5 /* node.cpp in Sources */, + 2ACF56201477693B00991ED5 /* nodebuilder.cpp in Sources */, + 2ACF56221477693B00991ED5 /* nodeownership.cpp in Sources */, + 2ACF56241477693B00991ED5 /* null.cpp in Sources */, + 2ACF56251477693B00991ED5 /* ostream.cpp in Sources */, + 2ACF56261477693B00991ED5 /* parser.cpp in Sources */, + 2ACF56291477693B00991ED5 /* regex.cpp in Sources */, + 2ACF562C1477693B00991ED5 /* scanner.cpp in Sources */, + 2ACF562E1477693B00991ED5 /* scanscalar.cpp in Sources */, + 2ACF56301477693B00991ED5 /* scantag.cpp in Sources */, + 2ACF56321477693B00991ED5 /* scantoken.cpp in Sources */, + 2ACF56341477693B00991ED5 /* simplekey.cpp in Sources */, + 2ACF56351477693B00991ED5 /* singledocparser.cpp in Sources */, + 2ACF56371477693B00991ED5 /* stream.cpp in Sources */, + 2ACF563B1477693B00991ED5 /* tag.cpp in Sources */, + 2AB6B01315538484007C3547 /* binary.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB916508733D950010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "../../../../ext/yaml-cpp/include"; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Debug; + }; + 1DEB916608733D950010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "../../../../ext/yaml-cpp/include"; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Release; + }; + 2ACF559D1477692300991ED5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = yaml; + }; + name = Debug; + }; + 2ACF559E1477692300991ED5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PREBINDING = NO; + PRODUCT_NAME = yaml; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "yaml" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB916508733D950010E9CD /* Debug */, + 1DEB916608733D950010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2ACF559F1477692B00991ED5 /* Build configuration list for PBXNativeTarget "yaml" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2ACF559D1477692300991ED5 /* Debug */, + 2ACF559E1477692300991ED5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} |