Mercurial > hg > Applications > tvnjviewer
diff src/main/java/com/glavsoft/rfb/encoding/EncodingType.java @ 0:daa24f8a557b
TightVNC original
author | YU |
---|---|
date | Thu, 11 Sep 2014 07:30:03 +0900 |
parents | |
children | 61d95bdc2bdb |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/com/glavsoft/rfb/encoding/EncodingType.java Thu Sep 11 07:30:03 2014 +0900 @@ -0,0 +1,147 @@ +// Copyright (C) 2010, 2011, 2012, 2013 GlavSoft LLC. +// All rights reserved. +// +//------------------------------------------------------------------------- +// This file is part of the TightVNC software. Please visit our Web site: +// +// http://www.tightvnc.com/ +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +//------------------------------------------------------------------------- +// + +package com.glavsoft.rfb.encoding; + +import java.util.LinkedHashSet; + +/** + * Encoding types + */ +public enum EncodingType { + /** + * Desktop data representes as raw bytes stream + */ + RAW_ENCODING(0, "Raw"), + /** + * Specfies encodings which allow to copy part of image in client's + * framebuffer from one place to another. + */ + COPY_RECT(1, "CopyRect"), + RRE(2, "RRE"), + /** + * Hextile encoding, uses palettes, filling and raw subencoding + */ + HEXTILE(5, "Hextile"), + /** + * This encoding is like raw but previously all data compressed with zlib. + */ + ZLIB(6, "ZLib"), + /** + * Tight Encoding for slow connection. It is uses raw data, palettes, filling + * and jpeg subencodings + */ + TIGHT(7, "Tight"), + //ZlibHex(8), + /** + * ZRLE Encoding is like Hextile but previously all data compressed with zlib. + */ + ZRLE(16, "ZRLE"), + + /** + * Rich Cursor pseudo encoding which allows to transfer cursor shape + * with transparency + */ + RICH_CURSOR(0xFFFFFF11, "RichCursor"), + /** + * Desktop Size Pseudo encoding allows to notificate client about + * remote screen resolution changed. + */ + DESKTOP_SIZE(0xFFFFFF21, "DesctopSize"), + /** + * Cusros position encoding allows to transfer remote cursor position to + * client side. + */ + CURSOR_POS(0xFFFFFF18, "CursorPos"), + + COMPRESS_LEVEL_0(0xFFFFFF00 + 0, "CompressionLevel0"), + COMPRESS_LEVEL_1(0xFFFFFF00 + 1, "CompressionLevel1"), + COMPRESS_LEVEL_2(0xFFFFFF00 + 2, "CompressionLevel2"), + COMPRESS_LEVEL_3(0xFFFFFF00 + 3, "CompressionLevel3"), + COMPRESS_LEVEL_4(0xFFFFFF00 + 4, "CompressionLevel4"), + COMPRESS_LEVEL_5(0xFFFFFF00 + 5, "CompressionLevel5"), + COMPRESS_LEVEL_6(0xFFFFFF00 + 6, "CompressionLevel6"), + COMPRESS_LEVEL_7(0xFFFFFF00 + 7, "CompressionLevel7"), + COMPRESS_LEVEL_8(0xFFFFFF00 + 8, "CompressionLevel8"), + COMPRESS_LEVEL_9(0xFFFFFF00 + 9, "CompressionLevel9"), + + JPEG_QUALITY_LEVEL_0(0xFFFFFFE0 + 0, "JpegQualityLevel0"), + JPEG_QUALITY_LEVEL_1(0xFFFFFFE0 + 1, "JpegQualityLevel1"), + JPEG_QUALITY_LEVEL_2(0xFFFFFFE0 + 2, "JpegQualityLevel2"), + JPEG_QUALITY_LEVEL_3(0xFFFFFFE0 + 3, "JpegQualityLevel3"), + JPEG_QUALITY_LEVEL_4(0xFFFFFFE0 + 4, "JpegQualityLevel4"), + JPEG_QUALITY_LEVEL_5(0xFFFFFFE0 + 5, "JpegQualityLevel5"), + JPEG_QUALITY_LEVEL_6(0xFFFFFFE0 + 6, "JpegQualityLevel6"), + JPEG_QUALITY_LEVEL_7(0xFFFFFFE0 + 7, "JpegQualityLevel7"), + JPEG_QUALITY_LEVEL_8(0xFFFFFFE0 + 8, "JpegQualityLevel8"), + JPEG_QUALITY_LEVEL_9(0xFFFFFFE0 + 9, "JpegQualityLevel9"); + + private int id; + private final String name; + private EncodingType(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + public String getName() { + return name; + } + + public static LinkedHashSet<EncodingType> ordinaryEncodings = new LinkedHashSet<EncodingType>(); + static { + ordinaryEncodings.add(TIGHT); + ordinaryEncodings.add(HEXTILE); + ordinaryEncodings.add(ZRLE); + ordinaryEncodings.add(ZLIB); + ordinaryEncodings.add(RRE); + ordinaryEncodings.add(COPY_RECT); +// ordinaryEncodings.add(RAW_ENCODING); + } + + public static LinkedHashSet<EncodingType> pseudoEncodings = new LinkedHashSet<EncodingType>(); + static { + pseudoEncodings.add(RICH_CURSOR); + pseudoEncodings.add(CURSOR_POS); + pseudoEncodings.add(DESKTOP_SIZE); + } + + public static LinkedHashSet<EncodingType> compressionEncodings = new LinkedHashSet<EncodingType>(); + static { + compressionEncodings.add(COMPRESS_LEVEL_0); + compressionEncodings.add(JPEG_QUALITY_LEVEL_0); + } + + public static EncodingType byId(int id) { + // TODO needs to speedup with hash usage? + for (EncodingType type : values()) { + if (type.getId() == id) + return type; + } + throw new IllegalArgumentException("Unsupported encoding id: " + id); + } + +}