//--------------------------------
        #endregion
        //=========== READING ============
        #region Reading

        /**<summary>Reads the object data.</summary>*/
        protected void Read(BinaryReader reader, bool quickLoad = false)
        {
            // Read the header
            ReadHeader(reader);

            // Read the string table entries
            stringTable.Read(reader, NumStringTableEntries);

            // Read the group info
            if (HasGroupInfo)
            {
                groupInfo.Read(reader);
            }

            // Read the optional section
            ReadOptional(reader);

            if (HasGraphics)
            {
                // Read the image directory
                imageDirectory.Read(reader, quickLoad);
                // Read the graphics data
                graphicsData.Read(reader);
            }
        }
        //=========== LOADING ============
        #region Loading

        /**<summary>Returns an object loaded from the specified stream.</summary>*/
        public static GraphicsData FromStream(Stream stream)
        {
            GraphicsData graphicsData = new GraphicsData();

            BinaryReader reader = new BinaryReader(stream);

            graphicsData.imageDirectory.Read(reader);
            graphicsData.Read(reader);

            return(graphicsData);
        }