Skip to content

Commit 290c744

Browse files
Michael Fiessmfiess
authored andcommitted
imageA resource width and height properties (#1844)
* imageA resource width and height properties * adding tests
1 parent 5acc75c commit 290c744

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

examples/pxScene2d/src/pxResource.cpp

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,7 @@ void pxResource::processDownloadedResource(rtFileDownloadRequest* fileDownloadRe
864864
* rtImageResource
865865
*/
866866

867-
rtImageAResource::rtImageAResource(const char* url, const char* proxy) : pxResource(), mTimedOffscreenSequence()
867+
rtImageAResource::rtImageAResource(const char* url, const char* proxy) : pxResource(), mTimedOffscreenSequence(), mWidth(0), mHeight(0), mDimensionsMutex()
868868
{
869869
mTimedOffscreenSequence.init();
870870
setUrl(url, proxy);
@@ -904,6 +904,13 @@ uint32_t rtImageAResource::loadResourceData(rtFileDownloadRequest* fileDownloadR
904904

905905
if (pxLoadAImage(data, dataSize, mTimedOffscreenSequence) == RT_OK)
906906
{
907+
if (mTimedOffscreenSequence.numFrames() > 0)
908+
{
909+
pxOffscreen &o = mTimedOffscreenSequence.getFrameBuffer(0);
910+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
911+
mWidth = o.width();
912+
mHeight = o.height();
913+
}
907914
return PX_RESOURCE_LOAD_SUCCESS;
908915
}
909916
}
@@ -923,6 +930,41 @@ void rtImageAResource::loadResourceFromArchive(rtObjectRef archiveRef)
923930
setLoadStatus("statusCode",PX_RESOURCE_STATUS_UNKNOWN_ERROR);
924931
}
925932

933+
int32_t rtImageAResource::w() const
934+
{
935+
int32_t returnValue = 0;
936+
{
937+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
938+
returnValue = mWidth;
939+
}
940+
return returnValue;
941+
}
942+
rtError rtImageAResource::w(int32_t& v) const
943+
{
944+
{
945+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
946+
v = mWidth;
947+
}
948+
return RT_OK;
949+
}
950+
int32_t rtImageAResource::h() const
951+
{
952+
int32_t returnValue = 0;
953+
{
954+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
955+
returnValue = mHeight;
956+
}
957+
return returnValue;
958+
}
959+
rtError rtImageAResource::h(int32_t& v) const
960+
{
961+
{
962+
rtMutexLockGuard dimensionsMutexLock(mDimensionsMutex);
963+
v = mHeight;
964+
}
965+
return RT_OK;
966+
}
967+
926968
ImageMap pxImageManager::mImageMap;
927969
rtRef<rtImageResource> pxImageManager::emptyUrlResource = 0;
928970

@@ -1148,3 +1190,5 @@ rtDefineProperty(rtImageResource, w);
11481190
rtDefineProperty(rtImageResource, h);
11491191

11501192
rtDefineObject(rtImageAResource, pxResource);
1193+
rtDefineProperty(rtImageAResource, w);
1194+
rtDefineProperty(rtImageAResource, h);

examples/pxScene2d/src/pxResource.h

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

217217
rtDeclareObject(rtImageAResource, pxResource);
218218

219+
rtReadOnlyProperty(w, w, int32_t);
220+
rtReadOnlyProperty(h, h, int32_t);
221+
222+
virtual int32_t w() const;
223+
virtual rtError w(int32_t& v) const;
224+
virtual int32_t h() const;
225+
virtual rtError h(int32_t& v) const;
226+
219227
virtual unsigned long Release() ;
220228

221229
virtual void init();
@@ -231,6 +239,9 @@ class rtImageAResource : public pxResource
231239
void loadResourceFromArchive(rtObjectRef archiveRef);
232240
pxTimedOffscreenSequence mTimedOffscreenSequence;
233241

242+
int32_t mWidth;
243+
int32_t mHeight;
244+
mutable rtMutex mDimensionsMutex;
234245
};
235246

236247
// Weak Map

examples/pxScene2d/src/pxScene2d.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1936,7 +1936,6 @@ pxScene2d::pxScene2d(bool top, pxScriptView* scriptView)
19361936
mInfo.set("build", build);
19371937
mInfo.set("gfxmemory", context.currentTextureMemoryUsageInBytes());
19381938

1939-
19401939
//capability versions
19411940
mCapabilityVersions = new rtMapObject;
19421941
rtObjectRef graphicsCapabilities = new rtMapObject;
@@ -1945,6 +1944,7 @@ pxScene2d::pxScene2d(bool top, pxScriptView* scriptView)
19451944
#ifdef SUPPORT_GIF
19461945
graphicsCapabilities.set("gif", 1);
19471946
#endif //SUPPORT_GIF
1947+
graphicsCapabilities.set("imageAResource", 2);
19481948

19491949
mCapabilityVersions.set("graphics", graphicsCapabilities);
19501950

tests/pxScene2d/testRunner/tests.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
{"url":"../tests/test_pxImage.js", "title":"test_pxImage","useBaseURI":"true"},
2323
{"url":"../tests/test_pxImageA_2.js", "title":"test_pxImageA_2","useBaseURI":"true"},
2424
{"url":"../tests/test_pxImage9.js", "title":"test_pxImage9","useBaseURI":"true"},
25+
{"url":"../tests/test_imageASize.js", "title":"test_imageASize.js","useBaseURI":"true"},
2526
{"url":"../tests/test_textureMemoryUsage.js", "title":"test_textureMemoryUsage.js","useBaseURI":"true"},
2627
{"url":"../tests/test_moveForwardBackward.js", "title":"test_moveForwardBackward","useBaseURI":"true"},
2728
{"url":"../tests/test_imports.js", "title":"test_imports","useBaseURI":"true"},

0 commit comments

Comments
 (0)