예제 #1
0
        public void AddImage(byte[] imgBuf, float height, float width, RPLFormat.Sizings sizing)
        {
            if (imgBuf == null || imgBuf.Length == 0)
            {
                sizing = RPLFormat.Sizings.Clip;
                imgBuf = PictureDescriptor.INVALIDIMAGEDATA;
            }
            byte[]    hash = new OfficeImageHasher(imgBuf).Hash;
            int       num  = ToTwips(height);
            int       num2 = ToTwips(width);
            int       num3 = (int)m_dataStream.Position;
            ImageHash key  = new ImageHash(hash, sizing, num2, num);

            if (m_images.ContainsKey(key))
            {
                num3 = m_images[key];
            }
            else
            {
                new PictureDescriptor(imgBuf, hash, num2, num, sizing, m_imgIndex).Serialize(m_dataStream);
                m_imgIndex++;
                m_images.Add(key, num3);
            }
            m_charFormat.SetIsInlineImage(num3);
            WriteSpecialText("\u0001");
        }
예제 #2
0
        public override bool Equals(object obj)
        {
            ImageHash imageHash = (ImageHash)obj;

            if (m_sizing != imageHash.m_sizing || m_width != imageHash.m_width || m_height != imageHash.m_height || m_md4.Length != imageHash.m_md4.Length)
            {
                return(false);
            }
            for (int i = 0; i < m_md4.Length; i++)
            {
                if (m_md4[i] != imageHash.m_md4[i])
                {
                    return(false);
                }
            }
            return(true);
        }