2 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "texture-set-wrapper.h"
23 #include <rendering/texture-set-api.h>
24 #include <shared/api-function.h>
25 #include <shared/object-template-helper.h>
26 #include <dali-wrapper.h>
34 v8::Persistent<v8::ObjectTemplate> TextureSetWrapper::mTextureSetTemplate;
36 namespace // un-named name space
40 * Contains a list of all functions that can be called
42 const ApiFunction TextureSetFunctionTable[]=
44 /**************************************
45 * TextureSet API (in order of texture-set.h)
46 **************************************/
48 { "SetImage" , TextureSetApi::SetImage },
49 { "SetSampler" , TextureSetApi::SetSampler },
52 const unsigned int TextureSetFunctionTableCount = sizeof(TextureSetFunctionTable)/sizeof(TextureSetFunctionTable[0]);
56 TextureSetWrapper::TextureSetWrapper( const Dali::TextureSet& textureSet, GarbageCollectorInterface& gc )
57 : BaseWrappedObject( BaseWrappedObject::TEXTURE_SET, gc )
59 mTextureSet = textureSet;
62 v8::Handle<v8::Object> TextureSetWrapper::WrapTextureSet(v8::Isolate* isolate, const Dali::TextureSet& textureSet )
64 v8::EscapableHandleScope handleScope( isolate );
65 v8::Local<v8::ObjectTemplate> objectTemplate;
67 objectTemplate = GetTextureSetTemplate( isolate);
69 // create an instance of the template
70 v8::Local<v8::Object> localObject = objectTemplate->NewInstance();
72 // create the texture set wrapper
73 TextureSetWrapper* pointer = new TextureSetWrapper( textureSet, Dali::V8Plugin::DaliWrapper::Get().GetDaliGarbageCollector() );
75 // assign the JavaScript object to the wrapper.
76 pointer->SetJavascriptObject( isolate, localObject );
78 return handleScope.Escape( localObject );
81 v8::Local<v8::ObjectTemplate> TextureSetWrapper::GetTextureSetTemplate( v8::Isolate* isolate)
83 v8::EscapableHandleScope handleScope( isolate );
84 v8::Local<v8::ObjectTemplate> objectTemplate;
86 if( mTextureSetTemplate.IsEmpty() )
88 objectTemplate = MakeTextureSetTemplate( isolate );
89 mTextureSetTemplate.Reset( isolate, objectTemplate );
93 // get the object template
94 objectTemplate = v8::Local<v8::ObjectTemplate>::New( isolate, mTextureSetTemplate );
96 return handleScope.Escape( objectTemplate );
99 v8::Handle<v8::ObjectTemplate> TextureSetWrapper::MakeTextureSetTemplate( v8::Isolate* isolate )
101 v8::EscapableHandleScope handleScope( isolate );
103 v8::Local<v8::ObjectTemplate> objTemplate = v8::ObjectTemplate::New();
105 objTemplate->SetInternalFieldCount( BaseWrappedObject::FIELD_COUNT );
107 // add our function properties
108 ObjectTemplateHelper::InstallFunctions( isolate, objTemplate, TextureSetFunctionTable, TextureSetFunctionTableCount );
110 return handleScope.Escape( objTemplate );
113 void TextureSetWrapper::NewTextureSet( const v8::FunctionCallbackInfo< v8::Value >& args)
115 v8::Isolate* isolate = args.GetIsolate();
116 v8::HandleScope handleScope( isolate);
118 if(!args.IsConstructCall())
120 DALI_SCRIPT_EXCEPTION( isolate, "TextureSet constructor called without 'new'");
123 Dali::TextureSet textureSet = TextureSetApi::New( args );
127 v8::Local<v8::Object> localObject = WrapTextureSet( isolate, textureSet );
128 args.GetReturnValue().Set( localObject );
133 TextureSet TextureSetWrapper::GetTextureSet()
139 } // namespace V8Plugin