Changing Tag logo



  • On 29/10/2015 at 13:44, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:    
    Platform:      
    Language(s) :

    ---------
    Hi everyones,

    There is a way to update or change during my tag execution the logo displayed in object manager?

    Or maybe can I slide the current logo top to bottom or left to right ? In this way i'll have juste one res .tif image file to load and just slide during  execution ?

    Thanks in advance for any help on this.



  • On 30/10/2015 at 13:16, xxxxxxxx wrote:

    Hi,

    you need to listen to MSG_GETCUSTOMICON in your tag's Message() function. The structure provided is GetCustomIconData.
    With this you can provide new icons or draw overlays.



  • On 31/10/2015 at 02:17, xxxxxxxx wrote:

    Great !! I looking about it and I'll give you a feel back.

    Thanks for all this informations ;-)



  • On 02/11/2015 at 03:53, xxxxxxxx wrote:

    Hello Andreas. Thank a lot for your informations. But i can not make it work.
    I tried by multiples way but it seems not in my capability yet. Did you have a example in SDK ? Maybe a link with more information about this ?

    last, in any other way maybe a code snippet. I know every ones belong here are very busy...

    I can not make my bitmap slide. I tried with this...

      
      if (type == MSG_GETCUSTOMICON){  
          GetCustomIconData().dat->x = 32;  
      }  
    

    But as you probably know this throw me EXCEPTION ERROR because I guess I don't catch the right object. I Should instantiate something but i can't find it in SDK doc.

    And I can not change my logo neither with this...

      
      if (type == MSG_GETCUSTOMICON){  
          GetCustomIconData().dat->bmp = AutoBitmap("whatever.tif");  
      }  
    

    Same problem, i guess i should instance or catch something and after apply my GetCustomIconData() with additional problem : I not sure on the way to pass it a new data bitmap.

    Thanks on any help on this. Everything else on my plugin seems to work. Soon I'll will asking for a complete review of my code if some are interested (I'm the one most interested!!)



  • On 02/11/2015 at 04:38, xxxxxxxx wrote:

    Hi,

    one problem with your code is, that you are creating a new GetCustomIconData structure of your own.
    Instead you should use the one passed with the message (data parameter, which get's cast to the datatype delivered by the message type).

    Here's a small Message() function as an example. Note that _iconBase and _iconOverlayed are two BaseBitmap pointers, that are initialized with two different icons during my startup code.

    Bool MyPlugin::Message(GeListNode* node, Int32 type, void* data)
    {
      switch (type)
      {
      case MSG_GETCUSTOMICON:
      {
        GetCustomIconData* const gcid = static_cast<GetCustomIconData*>(data); // data pointer interpreted depending on message type
        if (!gcid || !gcid->dat || !_iconBase || !_iconOverlayed)
          break;
      
        BaseBitmap* const bmp = gcid->dat->bmp;
        if (bmp)
        {
          // There's already an icon setup, copy your icon into the existing BaseBitmap
          GeData d;
      
          node->GetParameter(TAG_ICON_OVERLAY, d, DESCFLAGS_GET_0); // TAG_ICON_OVERLAY is a bool parameter in my tag description
          if (d.GetBool())
            _iconOverlayed->ScaleIt(bmp, 256, true, false);
          else
            _iconBase->ScaleIt(bmp, 256, true, false);
        }
        else
        {
          // No icon, yet, provide a new BaseBitmap
          gcid->dat->bmp = _iconBase;
        }
        gcid->filled = true; // tell message sender, that you provided a new icon
        break;
      }
      }
      return SUPER::Message(node, type, data);
    }
    

    I hope, this helps.



  • On 02/11/2015 at 04:50, xxxxxxxx wrote:

    Wahooo ! I'll give you feel back when I have understood this.
    Very interesting. Thanks


Log in to reply