SoDetail(3)

πŸ“¦
version 4.0.10 Β· 4 versions
, in fedora 43, fedora 44

πŸ’– SoDetail(3) β€” the Coin manual, but make it cute πŸ’–

okay bestie, gather round, because we're talking about SoDetail from the Coin library, and honestly? she's the blueprint. the moment. the origin story. ✨


🌸 NAME 🌸

SoDetail β€” she's the superclass for all the classes that store detailed information about particular shapes. like, every detail class out there is her daughter. mother behavior fr. πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

#include <Inventor/details/SoDetail.h>

Inherited by SoConeDetail, SoCubeDetail, SoCylinderDetail, SoFaceDetail, SoLineDetail, SoNodeKitDetail, SoPointDetail, and SoTextDetail.

okay the way she has EIGHT whole children?? iconic lineage, no notes. πŸ¦‹

✨ Public Member Functions ✨

  • virtual ~SoDetail () β€” the destructor, she says bye πŸ‘‹
  • virtual SoDetail * copy (void) const =0 β€” pure virtual, so you gotta implement it, bestie
  • virtual SoType getTypeId (void) const =0 β€” also pure virtual, also mandatory, no skipping πŸ’…
  • SbBool isOfType (const SoType type) const β€” type check queen

🌈 Static Public Member Functions 🌈

  • static void initClass (void) β€” sets up the class, like getting ready for the group chat
  • static void initClasses (void) β€” plural! sets up ALL of them
  • static SoType getClassTypeId (void) β€” grabs the class type id

πŸ™ˆ Protected Member Functions πŸ™ˆ

  • SoDetail (void) β€” the default constructor, she's protected, so only her family can call her

πŸ’œ Detailed Description πŸ’œ

So like. The SoDetail class is the superclass for all classes storing detailed information about particular shapes. say it with me: superclass. mother. the blueprint.

Detail information about shapes is used in relation to picking actions in Coin. and what do they contain? they typically hold the relevant info about what particular part of the shape a pick ray intersected with. so when you click on something and Coin's like "oh that was the third face of that cone", that's a detail class doing her thing. 🎯


🧚 Constructor & Destructor Documentation 🧚

SoDetail::~SoDetail () [virtual]

Destructor. she's logging off. 🫢

SoDetail::SoDetail (void ) [protected]

Default constructor. protected, so don't get any ideas, she's exclusive. πŸ’…


⭐ Member Function Documentation ⭐

void SoDetail::initClass (void ) [static]

Initialize relevant common data for all instances, like the type system. the shared glue, if you will. ✨

void SoDetail::initClasses (void ) [static]

Call the initClass() methods of all built-in detail classes. like a roll call but for classes. πŸ“’

(The initClass() method of user extension detail classes β€” if any β€” must be called explicitly by the application programmer in the application initialization code.)

so if you made your own detail class, that one's on you, bestie. she's not gonna do it for you. 😭

virtual SoDetail * SoDetail::copy (void ) const [pure virtual]

Return a deep copy of ourself. glow-up but it's a whole separate object. ✨

Note that if the Coin library has been built as a DLL under Microsoft Windows and you use this method from application code, you must make sure that both the Coin DLL and the application executable are using the same instance of a C Run-Time (CRT) library. Otherwise, you will get memory heap corruption upon deallocating the returned instances, eventually leading to mysterious crashes. πŸ’€

okay that one's actually scary, not gonna lie. mysterious crashes?? that's giving horror movie. do NOT mix your CRT libraries. fr fr.

Implemented in SoConeDetail, SoCubeDetail, SoCylinderDetail, SoFaceDetail, SoLineDetail, SoNodeKitDetail, SoPointDetail, and SoTextDetail.

virtual SoType SoDetail::getTypeId (void ) const [pure virtual]

Returns the type identification of a detail derived from a class inheriting SoDetail. This is used for runtime type checking and "downward" casting. iykyk. πŸ¦‹

Usage example:

void fuhbear(SoDetail * detail)
{
  if (detail->getTypeId() == SoFaceDetail::getClassTypeId()) {
    // safe downward cast, know the type
    SoFaceDetail * facedetail = (SoFaceDetail *)detail;
  }
  return; // ignore if not a SoFaceDetail
}

(not the function being named fuhbear 😭 she's so unserious but she's correct.)

For application programmers wanting to extend the library with new detail classes: this method needs to be overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the predefined macros available through Inventor/nodes/SoSubDetail.h: SO_DETAIL_SOURCE and SO_DETAIL_INIT_CLASS. memorize those two, they're your besties now. 🫢

Implemented in SoConeDetail, SoCubeDetail, SoCylinderDetail, SoFaceDetail, SoLineDetail, SoNodeKitDetail, SoPointDetail, and SoTextDetail.

SbBool SoDetail::isOfType (const SoType type) const

Returns TRUE if type is derived from (or is) this class. yes queen, tell me your whole family tree. 🌈

SoType SoDetail::getClassTypeId (void ) [static]

Returns the type identification for this class. boom. done. ✨


πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for Coin from the source code. she didn't write her own bio, the robot did it for her. honestly? relatable. πŸ’…


and that's the whole page, bestie!! 🌸 this was Version 4.0.10, dated Thu Jun 25 2026 00:00:00, and that's your SoDetail(3) moment. go forth and cast responsibly. πŸŽ€πŸ’–βœ¨

πŸ“¦ where this page comes from