27 #include "../../../../geometry/Envelope.h" 28 #include "../../common/Utils.h" 34 ::v8::Handle<::v8::Value>
Envelope_LLXGetter(::v8::Local<::v8::String> , const ::v8::AccessorInfo& info)
38 if(info.Holder().IsEmpty())
39 return ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope llx getter!"));
41 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
43 return ::v8::Number::New(e->
m_llx);
46 void Envelope_LLXSetter(::v8::Local<::v8::String> , ::v8::Local<::v8::Value> value, const ::v8::AccessorInfo& info)
50 if(info.Holder().IsEmpty())
52 ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope llx setter!"));
56 if(value.IsEmpty() || !value->IsNumber())
58 ::v8::ThrowException(::v8::String::New(
"Missing value or wrong type in Envelope llx setter!"));
62 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
64 double llx = value->ToNumber()->Value();
71 ::v8::Handle<::v8::Value>
Envelope_LLYGetter(::v8::Local<::v8::String> , const ::v8::AccessorInfo& info)
75 if(info.Holder().IsEmpty())
76 return ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope lly getter!"));
78 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
80 return ::v8::Number::New(e->
m_lly);
83 void Envelope_LLYSetter(::v8::Local<::v8::String> , ::v8::Local<::v8::Value> value, const ::v8::AccessorInfo& info)
87 if(info.Holder().IsEmpty())
89 ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope lly setter!"));
93 if(value.IsEmpty() || !value->IsNumber())
95 ::v8::ThrowException(::v8::String::New(
"Missing value or wrong type in Envelope lly setter!"));
99 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
101 double lly = value->ToNumber()->Value();
108 ::v8::Handle<::v8::Value>
Envelope_URXGetter(::v8::Local<::v8::String> , const ::v8::AccessorInfo& info)
110 ::v8::HandleScope hs;
112 if(info.Holder().IsEmpty())
113 return ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope urx getter!"));
115 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
117 return ::v8::Number::New(e->
m_urx);
120 void Envelope_URXSetter(::v8::Local<::v8::String> , ::v8::Local<::v8::Value> value, const ::v8::AccessorInfo& info)
122 ::v8::HandleScope hs;
124 if(info.Holder().IsEmpty())
126 ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope urx setter!"));
130 if(value.IsEmpty() || !value->IsNumber())
132 ::v8::ThrowException(::v8::String::New(
"Missing value or wrong type in Envelope urx setter!"));
136 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
138 double urx = value->ToNumber()->Value();
145 ::v8::Handle<::v8::Value>
Envelope_URYGetter(::v8::Local<::v8::String> , const ::v8::AccessorInfo& info)
147 ::v8::HandleScope hs;
149 if(info.Holder().IsEmpty())
150 return ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope ury getter!"));
152 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
154 return ::v8::Number::New(e->
m_ury);
157 void Envelope_URYSetter(::v8::Local<::v8::String> , ::v8::Local<::v8::Value> value, const ::v8::AccessorInfo& info)
159 ::v8::HandleScope hs;
161 if(info.Holder().IsEmpty())
163 ::v8::ThrowException(::v8::String::New(
"Missing object in Envelope ury setter!"));
167 if(value.IsEmpty() || !value->IsNumber())
169 ::v8::ThrowException(::v8::String::New(
"Missing value or wrong type in Envelope ury setter!"));
173 te::gm::Envelope* e = te::v8::common::Unwrap<te::gm::Envelope>(info.Holder());
175 double ury = value->ToNumber()->Value();
184 ::v8::HandleScope hs;
186 if(!args.IsConstructCall())
187 return ::v8::ThrowException(::v8::String::New(
"In order to create an envelope you need call its constructor like: var e = new TeEnvelope(1.0, 1.0, 5.0, 5.0);"));
189 if(args.Holder().IsEmpty())
190 return ::v8::ThrowException(::v8::String::New(
"Envelope constructor must use object notation!"));
192 if((args.Length() != 4) || !args[0]->IsNumber() || !args[1]->IsNumber() || !args[2]->IsNumber() || !args[3]->IsNumber())
193 return ::v8::ThrowException(::v8::String::New(
"Missing parameter in Envelope constructor or wrong parameter type!"));
195 double llx = args[0]->ToNumber()->Value();
196 double lly = args[1]->ToNumber()->Value();
197 double urx = args[2]->ToNumber()->Value();
198 double ury = args[3]->ToNumber()->Value();
200 std::auto_ptr<te::gm::Envelope> e(
new te::gm::Envelope(llx, lly, urx, ury));
234 ::v8::HandleScope hs;
238 global->Set(::v8::String::New(
"TeEnvelope"), jsc->GetFunction());
247 ::v8::Local<::v8::FunctionTemplate> result = ::v8::FunctionTemplate::New();
249 ::v8::Handle<::v8::ObjectTemplate> prototype = result->PrototypeTemplate();
::v8::Local<::v8::Object > Make(T *obj, TF tfunc, const bool isOwner)
It creates a new JavaScript object from a C++ object (obj).
double m_urx
Upper right corner x-coordinate.
::v8::Persistent<::v8::FunctionTemplate > & GetEnvelopeTemplate()
It returns a reference to the persistent template of a Envelope object.
void Envelope_URYSetter(::v8::Local<::v8::String >,::v8::Local<::v8::Value > value, const ::v8::AccessorInfo &info)
double m_llx
Lower left corner x-coordinate.
An Envelope defines a 2D rectangular region.
static::v8::Persistent<::v8::FunctionTemplate > sg_envelope_template
void Envelope_URXSetter(::v8::Local<::v8::String >,::v8::Local<::v8::Value > value, const ::v8::AccessorInfo &info)
::v8::Handle<::v8::Value > Envelope_Constructor(const ::v8::Arguments &args)
::v8::Handle<::v8::Value > Envelope_LLXGetter(::v8::Local<::v8::String >, const ::v8::AccessorInfo &info)
double m_lly
Lower left corner y-coordinate.
::v8::Handle<::v8::Value > Envelope_URXGetter(::v8::Local<::v8::String >, const ::v8::AccessorInfo &info)
double m_ury
Upper right corner y-coordinate.
::v8::Handle<::v8::Value > Envelope_URYGetter(::v8::Local<::v8::String >, const ::v8::AccessorInfo &info)
void RegisterEnvelope(::v8::Local<::v8::Object > &global)
It register the Envelope class.
void Envelope_LLXSetter(::v8::Local<::v8::String >,::v8::Local<::v8::Value > value, const ::v8::AccessorInfo &info)
::v8::Handle<::v8::Value > Envelope_LLYGetter(::v8::Local<::v8::String >, const ::v8::AccessorInfo &info)
void Envelope_LLYSetter(::v8::Local<::v8::String >,::v8::Local<::v8::Value > value, const ::v8::AccessorInfo &info)