mirror of
https://github.com/amitbet/vncproxy.git
synced 2025-04-27 10:50:47 +00:00
39 lines
852 B
Go
39 lines
852 B
Go
package encodings
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
"io"
|
|
"github.com/amitbet/vncproxy/common"
|
|
)
|
|
|
|
type ZLibEncoding struct {
|
|
bytes []byte
|
|
}
|
|
|
|
func (z *ZLibEncoding) Type() int32 {
|
|
return 6
|
|
}
|
|
func (z *ZLibEncoding) WriteTo(w io.Writer) (n int, err error) {
|
|
return w.Write(z.bytes)
|
|
}
|
|
func (z *ZLibEncoding) Read(pixelFmt *common.PixelFormat, rect *common.Rectangle, r *common.RfbReadHelper) (common.IEncoding, error) {
|
|
//conn := common.RfbReadHelper{Reader:r}
|
|
//conn := &DataSource{conn: conn.c, PixelFormat: conn.PixelFormat}
|
|
//bytesPerPixel := c.PixelFormat.BPP / 8
|
|
bytes := &bytes.Buffer{}
|
|
len, err := r.ReadUint32()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
binary.Write(bytes, binary.BigEndian, len)
|
|
bts, err := r.ReadBytes(int(len))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
StoreBytes(bytes, bts)
|
|
z.bytes = bytes.Bytes()
|
|
return z, nil
|
|
}
|