Skip to content

Commit 09eb4e6

Browse files
Michael Fiessmfiess
authored andcommitted
imageA resource width and height properties (#1844)
* imageA resource width and height properties * adding tests
1 parent ab98275 commit 09eb4e6

File tree

4 files changed

+59
-1
lines changed

4 files changed

+59
-1
lines changed

examples/pxScene2d/src/pxResource.cpp

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -939,7 +939,7 @@ void pxResource::processDownloadedResource(rtFileDownloadRequest* fileDownloadRe
939939
* rtImageResource
940940
*/
941941

942-
rtImageAResource::rtImageAResource(const char* url, const char* proxy) : pxResource(), mTimedOffscreenSequence()
942+
rtImageAResource::rtImageAResource(const char* url, const char* proxy) : pxResource(), mTimedOffscreenSequence(), mWidth(0), mHeight(0), mDimensionsMutex()
943943
{
944944
mTimedOffscreenSequence.init();
945945
setUrl(url, proxy);
@@ -979,6 +979,13 @@ uint32_t rtImageAResource::loadResourceData(rtFileDownloadRequest* fileDownloadR
979979

980980
if (pxLoadAImage(data, dataSize, mTimedOffscreenSequence) == RT_OK)
981981
{
982+
if (mTimedOffscreenSequence.numFrames() > 0)
983+
{
984+
pxOffscreen &o = mTimedOffscreenSequence.getFrameBuffer(0);
985+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
986+
mWidth = o.width();
987+
mHeight = o.height();
988+
}
982989
return PX_RESOURCE_LOAD_SUCCESS;
983990
}
984991
}
@@ -998,6 +1005,41 @@ void rtImageAResource::loadResourceFromArchive(rtObjectRef archiveRef)
9981005
setLoadStatus("statusCode",PX_RESOURCE_STATUS_UNKNOWN_ERROR);
9991006
}
10001007

1008+
int32_t rtImageAResource::w() const
1009+
{
1010+
int32_t returnValue = 0;
1011+
{
1012+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
1013+
returnValue = mWidth;
1014+
}
1015+
return returnValue;
1016+
}
1017+
rtError rtImageAResource::w(int32_t& v) const
1018+
{
1019+
{
1020+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
1021+
v = mWidth;
1022+
}
1023+
return RT_OK;
1024+
}
1025+
int32_t rtImageAResource::h() const
1026+
{
1027+
int32_t returnValue = 0;
1028+
{
1029+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
1030+
returnValue = mHeight;
1031+
}
1032+
return returnValue;
1033+
}
1034+
rtError rtImageAResource::h(int32_t& v) const
1035+
{
1036+
{
1037+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
1038+
v = mHeight;
1039+
}
1040+
return RT_OK;
1041+
}
1042+
10011043
ImageMap pxImageManager::mImageMap;
10021044
rtRef<rtImageResource> pxImageManager::emptyUrlResource = 0;
10031045

@@ -1223,3 +1265,5 @@ rtDefineProperty(rtImageResource, w);
12231265
rtDefineProperty(rtImageResource, h);
12241266

12251267
rtDefineObject(rtImageAResource, pxResource);
1268+
rtDefineProperty(rtImageAResource, w);
1269+
rtDefineProperty(rtImageAResource, h);

examples/pxScene2d/src/pxResource.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,14 @@ class rtImageAResource : public pxResource
219219

220220
rtDeclareObject(rtImageAResource, pxResource);
221221

222+
rtReadOnlyProperty(w, w, int32_t);
223+
rtReadOnlyProperty(h, h, int32_t);
224+
225+
virtual int32_t w() const;
226+
virtual rtError w(int32_t& v) const;
227+
virtual int32_t h() const;
228+
virtual rtError h(int32_t& v) const;
229+
222230
virtual unsigned long Release() ;
223231

224232
virtual void init();
@@ -234,6 +242,9 @@ class rtImageAResource : public pxResource
234242
void loadResourceFromArchive(rtObjectRef archiveRef);
235243
pxTimedOffscreenSequence mTimedOffscreenSequence;
236244

245+
int32_t mWidth;
246+
int32_t mHeight;
247+
mutable rtMutex mDimensionsMutex;
237248
};
238249

239250
// Weak Map

examples/pxScene2d/src/pxScene2d.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ pxScene2d::pxScene2d(bool top, pxScriptView* scriptView)
520520
// capabilities.graphics.colors = 1
521521
// capabilities.graphics.screenshots = 2
522522
// capabilities.graphics.text = 3
523+
// capabilities.graphics.imageAResource = 2
523524
//
524525
// capabilities.scene.external = 1
525526
//
@@ -543,6 +544,7 @@ pxScene2d::pxScene2d(bool top, pxScriptView* scriptView)
543544
#ifdef SUPPORT_GIF
544545
graphicsCapabilities.set("gif", 1);
545546
#endif //SUPPORT_GIF
547+
graphicsCapabilities.set("imageAResource", 2);
546548

547549
graphicsCapabilities.set("screenshots", 2);
548550
graphicsCapabilities.set("text", 3);

tests/pxScene2d/testRunner/tests.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
{"url":"../tests/test_pxImage.js", "title":"test_pxImage","useBaseURI":"true"},
2626
{"url":"../tests/test_pxImageA_2.js", "title":"test_pxImageA_2","useBaseURI":"true"},
2727
{"url":"../tests/test_pxImage9.js", "title":"test_pxImage9","useBaseURI":"true"},
28+
{"url":"../tests/test_imageASize.js", "title":"test_imageASize.js","useBaseURI":"true"},
2829
{"url":"../tests/test_textureMemoryUsage.js", "title":"test_textureMemoryUsage.js","useBaseURI":"true"},
2930
{"url":"../tests/test_moveForwardBackward.js", "title":"test_moveForwardBackward","useBaseURI":"true"},
3031
{"url":"../tests/test_imports.js", "title":"test_imports","useBaseURI":"true"},

0 commit comments

Comments
 (0)