Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Image data containers [SOLVED]

    SDK Help
    0
    3
    341
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      On 10/02/2017 at 02:43, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   R14 
      Platform:      
      Language(s) :     C++  ;

      ---------
      Hi all,

      could one of the fine folk here please provide an example of how we can set bitmap image data for proper 32bit images? Something like this (but in 32bit data land!) would help:

      // psuedo code
        
      void MyDialog::GetImageData(int width,int height,BaseBitmap* bmp)
      {
          UCHAR *img = gNew UCHAR[width*height*3];
      	
          // set one pixel to grey
          img[7*14 + 36 + 0] = 128; // R
          img[7*14 + 36 + 1] = 128; // G
          img[7*14 + 36 + 2] = 128; // B
        
          for(int h = 0; h < height;)
          {
              bmp->SetPixelCnt(o,h,width,(UCHAR* )img[h * width],COLORBYTES_RGB,COLORMODE_RGB,PIXELCNT_0);
        
              h++;
          }
        
          // free container etc.
      }
      

      Also, could they clarify what data range the image data should be in? E.g. 0.0 - 1.0 or 0 - 4294967295.

      Cheers,

      WP.

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 13/02/2017 at 09:00, xxxxxxxx wrote:

        Hello,

        32-bit image data is stored as Float32 data:

          
        AutoAlloc<BaseBitmap> bitmap;  
        if (!bitmap)  
          return false;  
          
        // define bitmap dimensions and bit depth  
        const Int32 width  = 1024;  
        const Int32 height = 1024;  
        const Int32 pixelBytes = COLORBYTES_RGBf; // RGBf format  
        const Int32 pixelBits  = pixelBytes * 8;  
          
        // initialize the BaseBitmap with the given dimensions and bit depth  
        const IMAGERESULT res = bitmap->Init(width, height, pixelBits);  
        if (res != IMAGERESULT_OK)  
          return false;  
          
        // allocate memory for one line  
        const Int32 bufferSize = width * 3;  
        PIX_F*      lineBuffer = NewMemClear(PIX_F, bufferSize);  
        if (!lineBuffer)  
          return false;  
          
        // loop through all lines  
        for (Int32 y = 0; y <= height; ++y)  
        {  
          // shade of red based on the position  
          const Float32 red = Float32(y) / Float32(height);  
          
          Int32 offset = 0;  
          for (Int32 x = 0; x < width; ++x)  
          {  
          // shade of green based on the position  
          const Float32 green = Float32(x) / Float32(width);  
          
          // fill buffer  
          lineBuffer[offset] = red;  
          lineBuffer[offset + 1] = green;  
          lineBuffer[offset + 2] = 0.0;  
          
          offset += 3;  
          }  
          
          // write full line into the bitmap  
          bitmap->SetPixelCnt(0, y, width, (UChar* )lineBuffer, pixelBytes, COLORMODE_RGBf, PIXELCNT_0);  
        }  
          
        // delete line memory  
        DeleteMem(lineBuffer);  
        

        best wishes,
        Sebastian

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 14/02/2017 at 02:27, xxxxxxxx wrote:

          Thanks Sebastian - that's got it working 👍

          WP.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post