Example #1
0
        public void saveFile(string path)
        {
            array[0].endIndex = 2 + size * 8 + array[0].array.Length;
            for (int i = 1; i < size; i++)
            {
                array[i].endIndex = array[i - 1].endIndex + array[i].array.Length;
            }

            MemoryWriter mw = new MemoryWriter();

            mw.writeUShort(size);
            for (int i = 0; i < size; i++)
            {
                CXGlyphInfo info = array[i];
                mw.writeUShort((ushort)info.code);
                mw.writeUShort(info.width);
                mw.writeInt32(info.endIndex);
            }
            for (int i = 0; i < size; i++)
            {
                mw.writeBytes(array[i].array);
            }

            using (FileStream fs = new FileStream(path, FileMode.Create))
            {
                fs.Write(mw.getContent(), 0, mw.getIndex());
            }
        }
Example #2
0
        public void loadFile(string path)
        {
            byte[]       content = readFileContent(path);
            MemoryReader mr      = new MemoryReader(content);

            size  = mr.readUShort();
            array = new CXGlyphInfo[size];
            for (int i = 0; i < size; i++)
            {
                CXGlyphInfo info = new CXGlyphInfo();
                info.code     = (char)mr.readUShort();
                info.width    = mr.readUShort();
                info.endIndex = mr.readInt32();
                array[i]      = info;
            }
            for (int i = 0; i < size; i++)
            {
                int bufLen = (array[i].width + 7) / 8 * height;
                Debug.Assert(bufLen == array[i].endIndex - mr.getIndex());
                array[i].array = new byte[bufLen];
                mr.readBytes(array[i].array);
            }
        }