MCPcopy Create free account
hub / github.com/crownengine/crown / imageResizeRgba32fLinear

Function imageResizeRgba32fLinear

3rdparty/bimg/src/image_encode.cpp:544–587  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

542 }
543
544 bool imageResizeRgba32fLinear(ImageContainer* _dst, const ImageContainer* _src)
545 {
546 const uint16_t numSides = _src->m_numLayers * (_src->m_cubeMap ? 6 : 1);
547
548 for (uint16_t side = 0; side < numSides; ++side)
549 {
550 bimg::ImageMip srcMip;
551 bimg::imageGetRawData(*_src, side, 0, _src->m_data, _src->m_size, srcMip);
552
553 bimg::ImageMip dstMip;
554 bimg::imageGetRawData(*_dst, side, 0, _dst->m_data, _dst->m_size, dstMip);
555 uint8_t* dstData = const_cast<uint8_t*>(dstMip.m_data);
556
557 const uint32_t srcPitch = _src->m_width*16;
558 const uint32_t srcSlice = _src->m_height*srcPitch;
559 const uint32_t dstPitch = _dst->m_width*16;
560 const uint32_t dstSlice = _dst->m_height*dstPitch;
561
562 for (uint32_t zz = 0, depth = _dst->m_depth; zz < depth; ++zz, dstData += dstSlice)
563 {
564 const uint32_t srcDataStep = uint32_t(bx::floor(zz * _src->m_depth / float(_dst->m_depth) ) );
565 const uint8_t* srcData = &srcMip.m_data[srcDataStep*srcSlice];
566
567 int result = stbir_resize_float_generic(
568 (const float*)srcData, _src->m_width, _src->m_height, srcPitch
569 , ( float*)dstData, _dst->m_width, _dst->m_height, dstPitch
570 , 4, 3
571 , STBIR_FLAG_ALPHA_PREMULTIPLIED
572 , STBIR_EDGE_CLAMP
573 , STBIR_FILTER_BOX
574 , STBIR_COLORSPACE_LINEAR
575 , NULL
576 );
577
578 if (1 != result)
579 {
580 return false;
581 }
582 }
583
584 }
585
586 return true;
587 }
588
589 static float getAlpha(UnpackFn _unpack, const void* _data)
590 {

Callers 1

convertFunction · 0.85

Calls 3

imageGetRawDataFunction · 0.85
floorFunction · 0.85

Tested by

no test coverage detected