(��)���̖|��͂ЂƂ‘O�� RFB �v���g�R�� �o�[�W���� 3.7 �����ɂ��Ă��܂��B�o�[�W���� 3.8 �̖|��͉��L�����N��ɂ���܂��B


�\�[�V�����u�b�N�}�[�N�F ̃y[W͂ĂȃubN}[Nɒlj ̃y[WDeliciousɓo^ ̃y[WlivedoorNbvɓo^
�T�C�g���֘A�����N�F RFB �v���g�R�� 3.8


RFB �v���g�R��


Tristan Richardson
ReadVNC Ltd
(formerly of Olivetti Research Ltd / AT&T Labs Cambridge)*

Version 3.7
12 August 2003

�ڎ�


1 ����
2 �\���v���g�R��
3 ���̓v���g�R��
4 �s�N�Z���f�[�^�̕\��
5 �v���g�R���̊g��
6 �v���g�R�����b�Z�[�W
6.1 �n���h�V�F�C�N���b�Z�[�W
6.1.1 ProtocolVersion
6.1.2 Security
6.1.3 ClientInitialisation
6.1.4 ServerInitialisation
6.2 �N���C�A���g����T�[�o�[�ւ̃��b�Z�[�W
6.2.1 SetPixelFormat
6.2.2 FixColourMapEntries
6.2.3 SetEncodings
6.2.4 FramebufferUpdateRequest
6.2.5 KeyEvent
6.2.6 PointerEvent
6.2.7 ClientCutText
6.3 �T�[�o�[����N���C�A���g�ւ̃��b�Z�[�W
6.3.1 FramebufferUpdate
6.3.2 SetColourMapEntries
6.3.3 Bell
6.3.4 ServerCutText
6.4 �G���R�[�h
6.4.1 Row
6.4.2 CopyRect
6.4.3 RRE
6.4.4 CoRRE
6.4.5 Hextile
6.4.6 ZRLE
6.5 �[���G���R�[�h
6.5.1 �J�[�\��
6.5.2 �f�X�N�g�b�v�T�C�Y

*James Weatherall, Andy Harter and Ken Wood also helped in the design of the RFB protocol

1 ����

RFB("remote framebuffer")�̓O���t�B�J�����[�U�C���^�[�t�F�C�X�Ƀ����[�g�A�N�Z�X���s�����߂̒P���ȃv���g�R���ł��D���̃v���g�R���̓t���[���o�b�t�@���x���œ��삷�邽�߁CX11��Windows 3.1/95/NT�CMacintosh�Ȃǂ��܂ށC������E�B���h�E�V�X�e���ɓK�����܂��D

���[�U�����鑤(�‚܂�C�f�B�X�v���C�ƃL�[�{�[�h��}�E�X�����鑤)�̏I�[���CRFB�N���C�A���g�ƌĂт܂��D�t���[���o�b�t�@�ւ̕ύX���������鑤(�‚܂�C�E�B���h�E�V�X�e����A�v���P�[�V���������삵�Ă��鑤)���CRFB�T�[�o�[�ƌĂт܂��D

RFB�͐^��"�V����N���C�A���g"�ȃv���g�R���ł��DRFB�v���g�R���̐݌v�́C�N���C�A���g�ɂقƂ�ǐ�����ۂ��Ȃ����Ƃɏd����u���Ă��܂��D���̂��߁C�N���C�A���g�͑��ʂȃn�[�h�E�F�A��œ��삵�܂����C�N���C�A���g�����������Ƃ͔��ɃV���v���ł��D

����ɂ��̃v���g�R���́A�N���C�A���g���X�e�[�g���X�ɂ��܂��D����T�[�o�[����ؒf�����N���C�A���g����œ����T�[�o�[�ɍĐڑ������ꍇ�C���[�U�C���^�[�t�F�C�X�͑O�̏�Ԃ��ێ�����Ă��܂��D����RFB�T�[�o�[�ɑ΂��ĕʂ̃N���C�A���g����ڑ����邱�Ƃ��o���܂��D���p�҂͐V�����N���C�A���g����C�ŏ��̃N���C�A���g�ł̃��[�U�C���^�[�t�F�C�X�ƑS��������Ԃ����邱�ƂɂȂ�܂��D����͎�����A�v���P�[�V���������S�Ƀ��o�C�������邱�Ƃ��o����Ƃ������Ƃł��D�K�؂ȃl�b�g���[�N�ڑ�������Ƃ���Ȃ�ǂ�����ł��C���p�҂͎����̃A�v���P�[�V�����ɃA�N�Z�X���邱�Ƃ��ł��܂��D�����āC�قȂ�ꏊ����̃A�N�Z�X�ɑ΂��āC�A�v���P�[�V�����̏�Ԃ͕ێ�����Ă��܂��D����ɂ��C���p�҂��ǂ��ɂ��Ă��C�ނ炪�ǂ��m���Ă��铯���R���s���[�^�‹���񋟂��邱�Ƃ��ł��܂��D

2 �\���v���g�R��

���̃v���g�R���̕\������ �u�^����ꂽ x, y ���W�Ƀs�N�Z���f�[�^�Ƃ��Ă̒����`��`�悷��v�Ƃ����P��̕`��K���Ɋ�Â��Ă��܂��D�ꌩ����ƁC����͑����̃��[�U�[�C���^�[�t�F�C�X�v�f��`�悷��ɂ͔�����Ɏv���邩������܂���D�������C�s�N�Z���f�[�^�ɑ΂��đ��l�ȃG���R�[�h���@�����‚��邱�Ƃɂ��C�Ⴆ�΃l�b�g���[�N�̑ш��N���C�A���g�̕`��\�́C�T�[�o�[�̏����\�͂Ƃ������C�l�X�ȗv���̃g���[�h�I�t�����肷���ŁC�傫�ȏ_���^���Ă��܂��D

����璷���`�̃V�[�P���X�́Cframebuffer update(�܂��͒P��update) �𐶐����܂��D���̍X�V�́C�ЂƂ‚̗L���ȃt���[���o�b�t�@����ʂ̃t���[���o�b�t�@�ւ̕ύX�Ƃ��ĕ\������Ă���C���̓_�ł̓r�f�I�̍\���Ɏ��Ă��܂��D�ʏ�A���̍X�V���Ɍ���钷���`���d�Ȃ荇�����Ƃ͂���܂��񂪁A�K�����������ł���K�v�͂���܂���D

�X�V�v���g�R���̓N���C�A���g����̗v���ɂ���Ă̂ݓ��삵�܂��D�‚܂�C�N���C�A���g����̖����I�ȗv���ɑ΂��鉞���ɂ���Ă̂݁C�T�[�o�[����N���C�A���g�ɍX�V��������Ƃ������ƂɂȂ�܂��D���̐����͂��̃v���g�R���ɓK���\�͂�^���Ă���C�N���C�A���g��l�b�g���[�N���x����Βx���قǁC�X�V�̔������͒Ⴍ�Ȃ�܂��D�T�^�I�ȃA�v���P�[�V�����ł́C�t���[���o�b�t�@��̓���G���A���ւ̕ύX�͎��X�ƘA�����Ĕ�������X��������܂��D�x���N���C�A���g��x���l�b�g���[�N�̏ꍇ�C�t���[���o�b�t�@�X�V���̂��̉ߓn�I�ȏ�Ԃ𖳎����邱�Ƃ��ł��܂��D���̌��ʁC��菭�Ȃ��l�b�g���[�N�g���t�B�b�N�C��菭�Ȃ��N���C�A���g���̕`��ɂȂ�܂��D

3 ���̓v���g�R�� Input Protocol

���̃v���g�R���̓��͑��́C�L�[�{�[�h�ƕ����{�^���t���|�C���e�B���O�f�o�C�X�Ƃ����C�W���I�ȃ��[�N�X�e�[�V�����̃��f���Ɋ�Â��Ă��܂��D���p�҂��L�[��{�^������������|�C���e�B���O�f�o�C�X�𓮂������肵���ꍇ�ɂ͏�ɁC���̓C�x���g���N���C�A���g����T�[�o�[�ɓ`�����܂��D�����̓��̓C�x���g�́C���̔�W���̓��o�͑��u�ɂ���č��������邱�Ƃ��”\�ł��D�Ⴆ�΁C�y�����g�����菑���F���G���W���́C�L�[�{�[�h�C�x���g�𐶐����邩������܂���D

4 �s�N�Z���f�[�^�̕\��

RFB�̃N���C�A���g�E�T�[�o�[�Ԃ̍ŏ��̑Θb�́C���M�����s�N�Z���f�[�^���t�H�[�}�b�g ������G���R�[�h�`�� �̃l�S�V�G�[�V�������܂݂܂��D���̃l�S�V�G�[�V�����́C�N���C�A���g�̎d�����o���邾���ȒP�ɂȂ�悤�ɐ݌v����Ă��܂��D�Œ���́C�N���C�A���g���v������`���ŃT�[�o�[���s�N�Z���f�[�^����ɒ񋟂ł��Ȃ���΂Ȃ�Ȃ��C�Ƃ������Ƃł��D�������Ȃ���C�N���C�A���g�������‚��̈قȂ�t�H�[�}�b�g��G���R�[�h�ɑΉ����Ă���ꍇ�C�T�[�o�[���ł��ȒP�ɒ񋟂ł�����̂�I�����Ă��\���܂���D

�s�N�Z�����t�H�[�}�b�g �́C�s�N�Z���l�ɂ��X�̐F�̕\����\���܂��D�ł���ʓI�ȃs�N�Z���t�H�[�}�b�g�́C24�r�b�g�܂���16�r�b�g��"�g�D���[�J���["(�s�N�Z���l�̃r�b�g���ԁE�΁E�‚̋P�x�����̂܂ܕ\��)�ƁC8�r�b�g��"�J���[�}�b�v"(�C�ӂ̃}�b�s���O���g�p���ăs�N�Z���l����RGB�l�֕ϊ�����)�ł��D

�G���R�[�h�`���́C�s�N�Z���f�[�^�̒����`���ǂ̂悤�ɑ��M����邩��\���܂��D�S�Ă̒����`�̃f�[�^�́C���̐擪�Ƀw�b�_�Ƃ��āC���̒����`�̃X�N���[����ł� X, Y ���W�C���ƍ����C�����ăs�N�Z���f�[�^�̃G���R�[�h�`���������G���R�[�h�^�C�v �������Ă��܂��D�f�[�^���͎̂w��̃G���R�[�h�`���ł��̌�ɑ����܂��D

5 �v���g�R���̊g��

�V�����G���R�[�h�`����lj����邱�ƂŃv���g�R�����g�����邱�Ƃ��o���܂��D�����_�Œ�`����Ă���G���R�[�h�`���́CRaw, CopyRect, RRE, CoRRE, Hextile, ������ZRLE �ł��D���ۂ̂Ƃ���C���B�͒ʏ� ZRLE�CHextile�CCopyRect �������g�p���Ă��܂��D�����͓T�^�I�ȃf�X�N�g�b�v�ɂƂ��čł����k�������`��������ł��D

�����̃G���R�[�h�`���ɉ����āC�N���C�A���g���������̃v���g�R���g�����T�|�[�g���Ă��邱�Ƃ��T�[�o�[�ɒm�点�邽�߂ɁC"�[���G���R�[�h�`��(pseudo-encoding)"��v�����邱�Ƃ��o���܂��D���̊g�����T�|�[�g���Ȃ��T�[�o�[�͂��̗v����P���ɖ�������ł��傤�D���̊g���Ǝ��̓��ӂ��T�[�o�[���瓾���Ȃ�����C�N���C�A���g�́C�T�[�o�[�����̊g�����T�|�[�g���Ă��Ȃ����̂Ɖ��肵�Ȃ���΂Ȃ�Ȃ��_�ɒ��ӂ��Ă��������D

�قȂ�^�C�v�̃G���R�[�h�`����[���G���R�[�h�`�����Փ˂��Ȃ����Ƃ͏d�v�ł��D���̂悤�Ȗ�������邽�߁CRFB �v���g�R���̃o�[�W�����ƃG���R�[�h�`���� RealVNC �Ђɂ���ă����e�i���X����Ă��܂��D

�e�G���R�[�h�`���̐����� 6.4 ���C�[���G���R�[�h�`���̈Ӗ��ɂ‚��Ă� 6.5 ���Q�Ƃ��Ă��������D

6 �v���g�R�����b�Z�[�W

RFB�v���g�R���́C�C�ӂ̐M���ł���g�����X�|�[�g��(�o�C�g�X�g���[���ł����b�Z�[�W�x�[�X�ł�)�œ��삵�܂��D���̃v���g�R���ɂ͓�‚̃X�e�[�W������܂��D�ŏ��̃n���h�V�F�C�N�t�F�[�Y�ƁC����ɑ����ʏ�̃v���g�R���ɂ��Θb�ł��D

�n���h�V�F�C�N��ProtocolVersion�CSecurity�CClientInitialisation�CServerInitialisation �̊e���b�Z�[�W���琬��܂��D�N���C�A���g�ƃT�[�o�[�̗�����ProtocolVersion ���b�Z�[�W�𑗐M���邱�Ƃɒ��ӂ��Ă��������D

ServerInitialisation ���b�Z�[�W�̌�C�v���g�R���͒ʏ�̑Θb���J�n���܂��D���̒i�K�ɂȂ�ƁC�N���C�A���g�͎����̖]�ރ��b�Z�[�W�𑗐M���邱�Ƃ��”\�ŁC���̌��ʂƂ��ăT�[�o�[����̃��b�Z�[�W����M���܂��D�����̃��b�Z�[�W��1�o�C�g�����b�Z�[�W�^�C�v �Ƃ���ɑ������b�Z�[�W�ŗL�̃f�[�^�������`�ɂȂ�܂��D

�ȉ��̃v���g�R�����b�Z�[�W�̐����ł́C��{�I�Ȍ^�Ƃ��� U8�CU16�CU32�CS8�CS16�CS32 ���g�p���Ă��܂��D�����͂��ꂼ��C8�r�b�g�C16�r�b�g�C32�r�b�g�̕����Ȃ������ƁC8�r�b�g�C16�r�b�g�C32�r�b�g�̕����t��������\���܂��D�����o�C�g����(�s�N�Z���l�͏���)�̓r�b�O�G���f�B�A��(�ŏ�ʃo�C�g��擪�ɒu���`��)�ł��D

PIXEL�^���s�N�Z��������̃o�C�g�� �o�C�g�̃s�N�Z���l��\���܂��D������ 8 �~ �s�N�Z��������̃o�C�g���́C�N���C�A���g�ƃT�[�o�[��ServerInisialisation���b�Z�[�W(6.1.4)�܂���SetPixelFormat���b�Z�[�W(6.2.1)�̂ǂ��炩�ō��ӂ����u�s�N�Z��������̃r�b�g���v�ɂȂ�܂��D

6.1 �n���h�V�F�C�N���b�Z�[�W

6.1.1 ProtocolVersion

�n���h�V�F�C�N�́C�T�[�o�[���N���C�A���g��ProtocolVersion���b�Z�[�W�𑗐M���邱�ƂŊJ�n����܂��D����ɂ��N���C�A���g�́C�T�[�o�[���T�|�[�g����RFB�v���g�R���̍ł������o�[�W�����ԍ���m��܂��D���̌�N���C�A���g�́C���ۂɎg�p���ׂ��v���g�R���̃o�[�W�����ԍ�(�T�[�o�[���������o�[�W�����ԍ��ƈقȂ��Ă��Ă��\���܂���)���܂ށC�����悤�ȃ��b�Z�[�W��Ԃ��܂��D�N���C�A���g�̓T�[�o�[�ɂ��񎦂��ꂽ�o�[�W�������������o�[�W������v�����Ă͂Ȃ�܂���D���̃��J�j�Y���ɂ��A�T�[�o�[�ƃN���C�A���g�͂�����x�̉��ʌ݊��������Ă�Ƃ������Ƃ��Ӗ����Ă��܂��D

�����_�Ō��J����Ă���v���g�R���o�[�W�����ԍ��́C3.3 �� 3.7 �����ł� (�ȑO�A�����‚��̃N���C�A���g�ɂ��o�[�W���� 3.5 ������ĕ񍐂���܂������C�S�ẴT�[�o�[�ɂ���Ă���� 3.3 �ł���Ɖ��߂����ׂ��ł�)�D�ʏ�C�V�����G���R�[�h�`����[���G���R�[�h�`����lj����邱�Ƃ̓o�[�W�����ԍ��̕ύX��K�v�Ƃ��܂���D�T�[�o�[�́C�����ł��Ȃ��G���R�[�h�`����P�ɖ�������Ηǂ�����ł��D

ProtocolVersion���b�Z�[�W��12�o�C�g�ō\������CASCII������"RFB xxx.yyy\n"(xxx �� yyy �́C���ꂼ��[���l�߂��ꂽ���W���[�o�[�W�����ԍ��ƃ}�C�i�[�o�[�W�����ԍ�) �Ƃ����`���ł��D

�o�C�g�� �l
12 "RFB 003.003\n" (16�i 52 46 42 20 30 30 33 2e 30 30 33 0a)

�܂���

�o�C�g�� �l
12 "RFB 003.007\n" (16�i 52 46 42 20 30 30 33 2e 30 30 37 0a)

�̉��ꂩ�ł��D

6.1.2 Security

�v���g�R���o�[�W���������肵����C�T�[�o�[�ƃN���C�A���g�͂��̐ڑ��Ŏg�p�����Z�L�����e�B�^�C�v�ɂ‚��č��ӂ��Ȃ���΂Ȃ�܂���D

Version 3.7 �T�[�o�[�̓T�[�|�[�g���Ă���Z�L�����e�B�^�C�v�̈ꗗ��Ԃ��܂��D

�o�C�g�� �^ [�l] ����
1 U8 �Z�L�����e�B�^�C�v�̐�
�Z�L�����e�B�^�C�v�̐� U8 array �Z�L�����e�B�^�C�v

�N���C�A���g�́C�T�[�o�[���������ꗗ�̒��Ɏ������T�|�[�g����Z�L�����e�B�^�C�v���ЂƂ‚ł����݂���΁C���݂̐ڑ��Ŏg�p����Z�L�����e�B�^�C�v������1�o�C�g�𑗂�Ԃ��܂��D

�o�C�g�� �^ [�l] ����
1 U8 �Z�L�����e�B�^�C�v

�Z�L�����e�B�^�C�v�̐� ���[���̏ꍇ�C���炩�̗��R(�Ⴆ�΁C�v�����ꂽ�v���g�R���o�[�W�������T�[�o�[���T�|�[�g���Ă��Ȃ���)�Őڑ��͎��s���Ă��܂��D���̏ꍇ�C���R��������镶����(������ASCII�������琬��)�������܂��D

�o�C�g�� �^ [�l] ����
4 U32 ���R�̒���
���R�̒��� U8 array ���R

���R �̕�����𑗐M������C�T�[�o�[�͂��̐ڑ����I�����܂��D

Version 3.3 �T�[�o�[���Z�L�����e�B�^�C�v�����肵�C1���[�h�𑗐M���܂��D

�o�C�g�� �^ [�l] ����
4 U32 �Z�L�����e�B�^�C�v

�Z�L�����e�B�^�C�v �ɂ� 0�C1�C2 �̉��ꂩ��������Ă��܂��D0 �͐ڑ������s�������Ƃ��Ӗ����C��ɏq�ׂ��悤�ȗ��R��������镶���񂪑����܂��D

�Z�L�����e�B�^�C�v �����肷��ƁC����ɑΉ�����f�[�^�d�l�͈ȉ��̂悤�ɂȂ�܂��D

�Enone (1) - �F�؂͕s�v�ŁC�v���g�R���̃f�[�^�͈Í������ꂸ�ɑ��M����܂��D�v���g�R����ClientInitialisation ���b�Z�[�W�ւƑ����܂��D

�EVNC authentication (2) - VNC�F�؂��g�p����C�v���g�R���̃f�[�^�͈Í������ꂸ�ɑ��M����܂��D�T�[�o�[��16�o�C�g�̃����_���ȃ`�������W���l�𑗐M���܂��D

�o�C�g�� �^ [�l] ����
16 U8 �`�������W���l

�N���C�A���g�̓`�������W���l���g�p���ăp�X���[�h��DES�ňÍ������C���ʂ�16�o�C�g�𑗐M���܂��D

�o�C�g�� �^ [�l] ����
16 U8 ����

�T�[�o�[�͔F�؂������������ǂ�����1���[�h�ŕԂ��܂��D���������ꍇ�C�v���g�R����ClientInitialisation �ւƑ����܂��D���s�����ꍇ�C�T�[�o�[�͐ڑ����I�����܂��D

�o�C�g�� �^ [�l] ����
4 U8 �����F
0 ����
1 ���s
2 ��������(���g�p)

6.1.3 ClientInitialisation

�N���C�A���g�ƃT�[�o�[���݂��ɍ��ӂ����Z�L�����e�B�^�C�v�ŒʐM���鏀�����o����ƁC�N���C�A���g�͏��������b�Z�[�W�𑗐M���܂��D

�o�C�g�� �^ [�l] ����
1 U8 ���L�t���O

���L�t���O ����[��(true)�̏ꍇ�C�T�[�o�[�͑��̃N���C�A���g�ƃf�X�N�g�b�v�����L���悤�Ƃ��܂��D�[���̏ꍇ�C�T�[�o�[�͑��̃N���C�A���g��ؒf���邱�ƂŁC���݂̃N���C�A���g�ɔr���I�ȃA�N�Z�X��^���܂��D

6.1.4 ServerInitialisation

ClientInitialisation ���b�Z�[�W���󂯎������C�T�[�o�[��ServerInitialisation ���b�Z�[�W�𑗐M���܂��D���̃��b�Z�[�W�́C�N���C�A���g�ɁC�T�[�o�[�̃t���[���o�b�t�@�̕��ƍ����C�s�N�Z���t�H�[�}�b�g�C�f�X�N�g�b�v�Ɋ֘A�t����ꂽ���O��`���܂��D

�o�C�g�� �^ [�l] ����
2 U16 �t���[���o�b�t�@�̕�
2 U16 �t���[���o�b�t�@�̍���
16 PIXCEL_FORMAT �T�[�o�[�̃s�N�Z���t�H�[�}�b�g
4 U32 ���O�̒���
���O�̒��� U8 array ���O

PIXEL_FORMAT�͈ȉ��̂悤�ȓ��e�ł��D

�o�C�g�� �^ [�l] ����
1 U8 �s�N�Z��������̃r�b�g��
1 U8 �P�x
1 U8 �r�b�O�G���f�B�A���t���O
1 U8 �g�D���[�J���[�t���O
2 U16 �Ԃ̍ő�P�x
2 U16 �΂̍ő�P�x
2 U16 �‚̍ő�P�x
1 U8 �Ԃ̃V�t�g�l
1 U8 �΂̃V�t�g�l
1 U8 �‚̃V�t�g�l
3 �p�f�B���O

�T�[�o�[�̃s�N�Z���t�H�[�}�b�g �́C���̃T�[�o�[�̎��R�ȃs�N�Z���t�H�[�}�b�g�ł��D�N���C�A���g�� SetPixelFormat ���b�Z�[�W(6.2.1)���g�p���ĈقȂ�t�H�[�}�b�g��v�����Ȃ�����C���̃s�N�Z���t�H�[�}�b�g���g�p����܂��D

�s�N�Z��������̃r�b�g�� �́C�e�s�N�Z�����Ɏg�p�����r�b�g���ł��D���̒l�́C�s�N�Z���l�̂����L���ȃr�b�g����\���P�x �ȏ�łȂ���΂Ȃ�܂���D�����_���s�N�Z��������̃r�b�g�� �� 8�C16�C32 �̉��ꂩ�łȂ���΂Ȃ�܂���D8 �r�b�g�����͂܂��T�|�[�g����Ă��܂���D�r�b�O�G���f�B�A���t���O ����[��(true)�̏ꍇ�C�����o�C�g�̃s�N�Z���̓r�b�O�G���f�B�A���ł���Ɖ��߂���܂��D���R�Ȃ���C�s�N�Z��������̃r�b�g�� ��8�r�b�g�̏ꍇ�ɂ͈Ӗ�������܂���D

�g�D���[�J���[�t���O ����[��(true)�̏ꍇ�C����6���ڂɂ��C�s�N�Z���l����ԁE�E�΂̊e�P�x�𒊏o������@�����肳��܂��D�Ԃ̍ő�P�x �͐ԐF�̍ő�l(= 2n - 1�D������ n �͐ԂɎg����r�b�g��)�ł��D���̒l�͏�Ƀr�b�O�G���f�B�A���ł��邱�Ƃɒ��ӂ��Ă��������D�Ԃ̃V�t�g�l �́C�s�N�Z���l�̒�����Ԃ̒l�𓾂邽�߂ɕK�v�ȁC���ʃr�b�g�����ւ̃V�t�g�񐔂ł��D�΂̍ő�P�x�C�΂̃V�t�g�l�C�‚̍ő�P�x�C�‚̃V�t�g�l �́C���ꂼ��΂Ɛ‚ɑ΂��铯���Ӗ��������܂��D�Ⴆ�΁C����s�N�Z���l����Ԃ̒l(0 �` �Ԃ̍ő�P�x )�𓾂邽�߂ɂ͎��̂悤�ɑ��삵�܂��D

�E�r�b�O�G���f�B�A���t���O �ɏ]���ăs�N�Z���l�����ւ��܂��D(�Ⴆ���r�b�O�G���f�B�A���t���O ���[��(false)�ŁC�z�X�g�̃o�C�g�I�[�_�[���r�b�O�G���f�B�A���Ȃ����ւ��܂�)

�E�Ԃ̃V�t�g�l �����C�E�����ɃV�t�g���܂��D

�E�z�X�g�̃o�C�g�I�[�_�[�ɍ��킹���Ԃ̍ő�P�x �Ƙ_���ς��Ƃ�܂��D

�g�D���[�J���[�t���O ���[��(false)�̏ꍇ�C�T�[�o�[�͐ԁE�E�΂̋P�x���琬��s�N�Z���l�ł͂Ȃ��C�J���[�}�b�v�ւ̃C���f�b�N�X���g�p���܂��D�J���[�}�b�v�̃G���g���[�́C�T�[�o�[��SetColourMapEntries ���b�Z�[�W(6.3.2)���g�p���Đݒ肵�܂��D

6.2 �N���C�A���g����T�[�o�[�ւ̃��b�Z�[�W

6.2.1 SetPixelFormat

FrameBufferUpdate ���b�Z�[�W���Ŏg�p�����s�N�Z���l�̃t�H�[�}�b�g��ݒ肵�܂��D�N���C�A���g��SetPixelFormat���b�Z�[�W�𑗂�Ȃ������ꍇ�C�T�[�o�[��ServerInitialisation���b�Z�[�W(6.1.4)�Ŏw�肵���C�T�[�o�[���g�̎��R�ȃt�H�[�}�b�g���g�p���܂��D

�g�D���[�J���[�t���O ���[��(false)�̏ꍇ�C"�J���[�}�b�v"���g�p����邱�Ƃ������܂��D�T�[�o�[�́CSetColourMapEntries ���b�Z�[�W(6.3.2)���g�p���ĔC�ӂ̃J���[�}�b�v��ݒ肷�邱�Ƃ��o���܂��D����ȑO�ɃT�[�o�[�ɂ���ăG���g���[���ݒ肳��Ă����Ƃ��Ă��C�N���C�A���g�����̃��b�Z�[�W�𑗂�������ɃJ���[�}�b�v�͋�ɂȂ�܂��D

�o�C�g�� �^ [�l] ����
1 U8 0 ���b�Z�[�W�^�C�v
3 �p�f�B���O
16 PIXEL_FORMAT �s�N�Z���t�H�[�}�b�g

6.1.4�ŏq�ׂ��̂Ɠ��l�CPIXEL_FORMAT�͈ȉ��̂悤�ȓ��e�ł��D

�o�C�g�� �^ [�l] ����
1 U8 �s�N�Z��������̃r�b�g��
1 U8 �P�x
1 U8 �r�b�O�G���f�B�A���t���O
1 U8 �g�D���[�J���[�t���O
2 U16 �Ԃ̍ő�P�x
2 U16 �΂̍ő�P�x
2 U16 �‚̍ő�P�x
1 U8 �Ԃ̃V�t�g�l
1 U8 �΂̃V�t�g�l
1 U8 �‚̃V�t�g�l
3 �p�f�B���O

6.2.2 FixColourMapEntries

���̃��b�Z�[�W�͌��݂ł͑��݂��܂���D���b�Z�[�W�^�C�v 1�Ƃ��Ďg�p����Ă��܂����D

6.2.3 SetEncodings

�T�[�o�[�����M����s�N�Z���f�[�^�Ɏg�p�����G���R�[�h�`����ݒ肵�܂��D���̃��b�Z�[�W���̃G���R�[�h�^�C�v�̕��я��́C�D�揇�ʂ̃q���g�ɂȂ�܂�(�擪�̃G���R�[�h�`�����ł��D�揇�ʂ�����)�D�T�[�o�[�͂��̃q���g���g�p���Ă��C�g�p���Ȃ��Ă��\���܂���D���̃��b�Z�[�W���g�p���ăG���R�[�h�`���������I�Ɏw�肳��Ȃ������ꍇ�ł��C�ʏ��Raw �G���R�[�h���g�p���č\���܂���D

�����̃G���R�[�h�`���ɉ����C�v���g�R���ɑ΂������̊g�����T�|�[�g���Ă��邱�Ƃ��T�[�o�[�ɐ錾���邱�ƂŁC"�[���G���R�[�h�`��"��v�����邱�Ƃ��o���܂��D���̊g�����T�|�[�g���Ȃ��T�[�o�[�͂��̗v����P���ɖ�������ł��傤�D�N���C�A���g�́C���̊g���Ǝ��̓��ӂ��T�[�o�[���瓾���Ȃ�����C�T�[�o�[�����̊g�����T�|�[�g���Ă��Ȃ����̂Ɖ��肵�Ȃ���΂Ȃ�Ȃ��_�ɒ��ӂ��Ă��������D

�e�G���R�[�h�`���̐����� 6.4 ���C�����_�Ŏg���Ă���[���G���R�[�h�`���̐����� 6.5 ���Q�Ƃ��Ă��������D

�o�C�g�� �^ [�l] ����
1 U8 1 ���b�Z�[�W�^�C�v
1 �p�f�B���O
2 U16 �G���R�[�h�`���̐�

�����āC�G���R�[�h�`���̐� �����ȉ��̓��e���J��Ԃ���܂��D

�o�C�g�� �^ [�l] ����
4 U32 �G���R�[�h�^�C�v
0 Row �G���R�[�h
1 CopyRect �G���R�[�h
2 RRE �G���R�[�h
4 CoRRE �G���R�[�h
5 Hextile �G���R�[�h
16 ZRLE �G���R�[�h
0xffffff11 Cursor �[���G���R�[�h
0xffffff21 DesktopSize �[���G���R�[�h




���̑��̓o�^�ς݃G���R�[�h�`��
6,7,8 zlib, tight, zlibhex
0xffffff00 �` 0xffffff10
0xffffff12 �` 0xffffff20
0xffffff22 �` 0xffffffff
tight �̃I�v�V����

6.2.4 FramebufferUpdateRequest

�N���C�A���g�� x���W�Cy���W�C���C�����Ŏw�肳���t���[���o�b�t�@�̗̈�ɒ��ڂ��Ă��邱�Ƃ��T�[�o�[�ɒʒm���܂��D�ʏ�C�T�[�o�[�͂��̃��b�Z�[�W�ɑ΂���FramebufferUpdate �ʼn������܂��D�������Ȃ���C�P�Ƃ�FramebufferUpdateRequest�ɑ΂��ĕ�����FramebufferUpdate ��Ԃ����Ƃ�������Ă��邱�Ƃɒ��ӂ��Ă��������D

�T�[�o�[�́C�N���C�A���g�����ڂ��Ă���t���[���o�b�t�@�̃R�s�[��S�ĕێ����Ă���Ɖ��肵�܂��D����́C�ʏ�T�[�o�[�̓N���C�A���g�ɑ΂��đ����݂̂̍X�V�𑗂�Ηǂ��Ƃ������Ƃ��Ӗ����܂��D

�������Ȃ���C���炩�̗��R�ŃN���C�A���g�������̕K�v�Ƃ��Ă���̈�̓��e�������Ă���ꍇ�CFramebufferUpdateRequest ������ �Ƀ[��(false)���Z�b�g���đ���܂��D���̗v���ɂ��T�[�o�[�͂��̗̈�̊��S�ȓ��e���”\�Ȍ��葁�����M���܂��D���̗̈��CopyRect �G���R�[�h���g�p���čX�V����邱�Ƃ͂Ȃ��ł��傤�D

�N���C�A���g�������̒��ڂ��Ă���̈�̓��e�������Ă��Ȃ��ꍇ�CFramebufferUpdateRequest ������ �ɔ�[��(true)���Z�b�g���đ���܂��D���̗̈�ɕύX������΁C�T�[�o�[��FramebufferUpdate �𑗐M���܂��DFramebufferUpdateRequest ��FramebufferUpdate �Ƃ̊Ԋu�͕s��ł��邱�Ƃɒ��ӂ��Ă��������D

�������x�̑����N���C�A���g�̏ꍇ�C�l�b�g���[�N�̑ш��Q��Ȃ��悤�ɁC�����w�肵��FramebufferUpdateRequest �𑗐M���銄���𒲐��������Ǝv����������܂���D

�o�C�g�� �^ [�l] ����
1 U8 3 ���b�Z�[�W�^�C�v
1 U8 ����
2 U16 x ���W
2 U16 y ���W
2 U16 ��
2 U16 ����

6.2.5 KeyEvent

�L�[�������ꂽ�C�܂��͗����ꂽ���Ƃ������܂��D�����t���O �́A�L�[�������ꂽ�ꍇ�ɔ�[��(true)�C�����ꂽ�ꍇ�Ƀ[��(false)�ɂȂ�܂��D�L�[ ��X Window System �Œ�`����Ă��� "keysym" ���g���Ďw�肳��܂��D

�o�C�g�� �^ [�l] ����
1 U8 4 ���b�Z�[�W�^�C�v
1 U8 �����t���O
2 �p�f�B���O
4 U32 �L�[

�قƂ�ǂ̒ʏ�L�[�ɑΉ����� "keysym" �́A����ɑΉ�����ASCII�l�Ɠ����l�ł��D���S�ȏڍׂ́CO'Reilly & Associates ����o�ł���Ă��� Xlib Reference Manual ���CX Window System �� <X11/keysymdef.h> ���Q�Ƃ��Ă��������D���̑��̈�ʓI�ȃL�[�̈ꕔ�͈ȉ��̒ʂ�ł��D

�L�[���� Keysym �l
BackSpace 0xff08
Tab 0xff09
Return �܂��� Enter 0xff0d
Escape 0xff1b
Insert 0xff63
Delete 0xffff
Home 0xff50
End 0xff57
Page Up 0xff55
Page Down 0xff56
Left 0xff51
Up 0xff52
Right 0xff53
Down 0xff54
�L�[���� Keysym �l
F1 0xffbe
F2 0xffbf
F3 0xffc0
F4 0xffc1
�c �c
F12 0xffc9
Shift(��) 0xffe1
Shift(�E) 0xffe2
Control(��) 0xffe3
Control(�E) 0xffe4
Meta(��) 0xffe7
Meta(�E) 0xffe8
Alt(��) 0xffe9
Alt(�E) 0xffea

keysym �̉��߂͕��G�ł��D�������݉^�p�����������邽�߂ɁC�ȉ��̃K�C�h���C���ɏ]���ׂ��ł��D

�E"�V�t�g���"(�‚܂�C�ǂ��炩�� Shift keysym ��������Ă��邩�ǂ���)�́Ckeysym �����߂���ۂ̃q���g�Ƃ��Ă̂ݎg�p����ׂ��ł��D�Ⴆ�΁CUS �L�[�{�[�h�� '#' �̕�������͂��鎞�ɂ̓V�t�g�L�[��������܂����CUK �L�[�{�[�h�ł͉�����܂���DUS �L�[�{�[�h�����ƒT�[�o�[���CUK �L�[�{�[�h�̃N���C�A���g���� '#' �̕������󂯎��ꍇ�C�V�t�g�L�[�͉�����Ă��Ȃ���ԂƂȂ�܂��D���̏ꍇ�T�[�o�[�́C(�Ⴆ�� '3' �ł͂Ȃ�) '#' �̕������擾���邽�߂ɁC���[�J���V�X�e����œ����I�ɃV�t�g�L�[��������Ă���"�ӂ������"�K�v������܂��D

�Ekeysym �̑啶���E�������̈Ⴂ�͏d�v�ł��D����́C�����𓯂��ƌ��Ȃ��ꕔ�� X Window System �Ƃ͈قȂ�܂��D�Ⴆ�΁C�V�t�g�L�[�̉�����Ă��Ȃ��啶��'A' �� keysym ���󂯎�����T�[�o�[�́C�����'A'�ł���Ɖ��߂���ׂ��ł��D���̏ꍇ�C�����I�ɃV�t�g�L�[��������Ă���"�ӂ������"�K�v�����邩������܂���D

�E�”\�Ȃ�C�T�[�o�[�� CapsLock �� NumLock �̂悤�� "lock" keysym �𖳎�����ׂ��ł��D�ς��ɁC���ꂪ�啶�������������ɂ��C���̕����Ɋ�Â��� keysym �ɖ|�󂷂�ׂ��ł��D

�EShift �Ƃ͈قȂ�CControl �� Alt �̏�Ԃ́C���� keysym �̈Ӗ���ύX������̂Ƃ��Ĉ�����ׂ��ł��Dctrl + a �̂悤��ASCII���䕶���ɂ́C�Ή����� keysym �����݂��Ȃ����Ƃɒ��ӂ��Ă��������D���̏ꍇ�̓r���[�A�ɂ���āCControl �L�[�̉����C������ 'a' �̉����Ƃ��đ��M�����ׂ��ł��D

�EControl �� Alt �������� keysym �𐶐����邽�߂Ɏg����N���C�A���g��ł́C���� keysym �����������߂����悤�ɁC�]����"�����[�X"�C�x���g�𑗂�K�v�����邩������܂���D�Ⴆ�΃h�C�c��L�[�{�[�h�ł́Cctrl-alt-q �͕��� '@' �𐶐����܂��D�N���C�A���g�� '@' �����������߂����悤�ɁCControl �� Alt �ɑ΂���"����"�����[�X�C�x���g�𑗐M����K�v������܂�( ctrl-alt-@ �̓T�[�o�[��ł͑S���قȂ�Ӗ������‚ł��傤)�D

�EX Window System �ɂ́u����^�u�v�̔ėp�I�ȕW���͂���܂���D����V�X�e���ł� shift + tab �� keysym "ISO_Left_Tab"�𐶐����C�ʂ̃V�X�e���ł͂��̓����L�[���삪�Ǝ��� keysym "BackTab" �𐶐����܂��D�܂��ʂ̃V�X�e���ł͂����"Tab"�𐶐����C�A�v���P�[�V������ Shift �̏�Ԃ��炻���O���^�u�ł͂Ȃ�����^�u�ł���Ɖ��߂��܂��DRFB �v���g�R���ł͌�҂̃A�v���[�`���D�܂�܂��D�r���[�A�� ISO_Left_Tab �ł͂Ȃ��Cshift + Tab �𐶐�����ׂ��ł��D�������Ȃ�������̃r���[�A�Ƃ̉��ʌ݊������ێ����邽�߂ɁC�T�[�o�[�� ISO_Left_Tab �� shift + Tab ���Ӗ�������̂ƔF������ׂ��ł��D

6.2.6 PointerEvent

�|�C���^�̈ړ��C�܂��̓|�C���^�̃{�^���������ꂽ�E�����ꂽ���Ƃ������܂��D�|�C���^�̌��݈ʒu��(x���W�Cy���W )�ŕ\����C�{�^�� 1 �` 8 �̏�Ԃ͂��ꂼ���{�^���}�X�N �� 0 �` 7 �̊e�r�b�g�ɑΉ����C0 �������ꂽ��ԁC1 �������ꂽ��ԂƂ��ĕ\����܂��D

��ʓI�ȃ}�E�X�ł́C�{�^�� 1�C2�C3 ���}�E�X�̍��{�^���C�E�{�^���C���{�^���ɑΉ����܂��D�z�C�[���}�E�X�ł́C����ւ̃z�C�[���X�N���[���̊e�X�e�b�v���{�^��4�̉����E�J���ŕ\����C�����ւ̃z�C�[���X�N���[���̊e�X�e�b�v���{�^��5�̉����E�J���ŕ\����܂��D

�o�C�g�� �^ [�l] ����
1 U8 5 ���b�Z�[�W�^�C�v
1 U8 �{�^���}�X�N
2 U16 x ���W
2 U16 y ���W

6.2.7 ClientCutText

�N���C�A���g���؂���o�b�t�@�ɐV����ASCII����������������Ƃ������܂��D�s�̏I�[�͒P��̃��C���t�B�[�h(ASCII�l 10)�ŕ\����܂��D�L�����b�W���^�[��(ASCII�l 13)�͕K�v����܂���D

�o�C�g�� �^ [�l] ����
1 U8 6 ���b�Z�[�W�^�C�v
3 �p�f�B���O
4 U32 ����
���� U8 array ������

6.3 �T�[�o�[����N���C�A���g�ւ̃��b�Z�[�W

6.3.1 FramebufferUpdate

�t���[���o�b�t�@�X�V�́C�N���C�A���g���t���[���o�b�t�@�ɒu���ׂ��C�s�N�Z���f�[�^�ɂ���A�̒����`���琬��܂��D���̃��b�Z�[�W�̓N���C�A���g�����FramebufferUpdateRequest �ɑ΂��鉞���Ƃ��đ��M����܂��DFramebufferUpdateRequest ��FramebufferUpdate �Ƃ̊Ԋu�͕s��ł��邱�Ƃɒ��ӂ��Ă��������D

�o�C�g�� �^ [�l] ����
1 U8 0 ���b�Z�[�W�^�C�v
1 �p�f�B���O
2 U16 �����`�̐�

���̌�������`�̐� �����C�s�N�Z���f�[�^�ɂ�钷���`�̏�񂪑����܂��D�e�����`�͈ȉ��̓��e���琬��܂��D

�o�C�g�� �^ [�l] ����
2 U16 x ���W
2 U16 y ���W
2 U16 ��
2 U16 ����
4 U32 �G���R�[�h�^�C�v
0 Row �G���R�[�h
1 CopyRect �G���R�[�h
2 RRE �G���R�[�h
4 CoRRE �G���R�[�h
5 Hextile �G���R�[�h
16 ZRLE �G���R�[�h
0xffffff11 Cursor �[���G���R�[�h
0xffffff21 DesktopSize �[���G���R�[�h

���̑��̓o�^�ς݃G���R�[�h�`��
6,7,8 zlib, tight, zlibhex
0xffffff00 �` 0xffffff10
0xffffff12 �` 0xffffff20
0xffffff22 �` 0xffffffff
tight �̃I�v�V����

���̌�Ɏw��̃G���R�[�h�`���ɏ]�����s�N�Z���f�[�^�������܂��D�e�G���R�[�h�̃t�H�[�}�b�g�ɂ‚��Ă� 6.4 ���C�[���G���R�[�h�̈Ӗ��ɂ‚��Ă� 6.5 ���Q�Ƃ��Ă��������D

6.3.2 SetColourMapEntries

�s�N�Z���t�H�[�}�b�g��"�J���[�}�b�v"���g�p����ꍇ�C���̃��b�Z�[�W�̓N���C�A���g�ɑ΂��āC�w��̃s�N�Z���l���w���RGB�l�Ƀ}�b�v�����ׂ��ł��邱�Ƃ�`���܂��D

�o�C�g�� �^ [�l] ����
1 U8 1 ���b�Z�[�W�^�C�v
1 �p�f�B���O
2 U16 �ŏ��̐F
2 U16 �F�̐�

���̌���F�̐� �����ȉ��̓��e���J��Ԃ���܂��D

�o�C�g�� �^ [�l] ����
2 U16 ��
2 U16 ��
2 U16 ��

6.3.3 Bell

�N���C�A���g���x���@�\�������Ă���ꍇ�ɁC�x����‚炵�܂��D

�o�C�g�� �^ [�l] ����
1 U8 2 ���b�Z�[�W�^�C�v

6.3.4 ServerCutText

�T�[�o�[���؂���o�b�t�@�ɐV����ASCII����������������Ƃ������܂��D�s�̏I�[�͒P��̃��C���t�B�[�h(ASCII�l 10)�ŕ\����܂��D�L�����b�W���^�[��(ASCII�l 13)�͕K�v����܂���D

�o�C�g�� �^ [�l] ����
1 U8 3 ���b�Z�[�W�^�C�v
3 �p�f�B���O
4 U32 ����
���� U8 array ������

6.4 �G���R�[�h�`��

6.4.1 Raw �G���R�[�h

�ł��ȒP�ȃG���R�[�h�^�C�v���C���� Raw �s�N�Z���f�[�^�ł��D�f�[�^���� �~ ���� �̃s�N�Z���l���琬��܂�(�� ������ �͒����`�̕��ƍ����ł�)�D�l�͍�����E�ւ̏��̊e�s�N�Z����\���܂��D�S�Ă�RFB�N���C�A���g�� Raw �G���R�[�h�`���ɑΉ����Ă��Ȃ���΂Ȃ�܂���D�܂��C�N���C�A���g���瑼�̃G���R�[�h�`����v������Ȃ�����C�T�[�o�[��Raw�G���R�[�h�`��������񋟂���ׂ��ł��D

�o�C�g�� �^ [�l] ����
�� �~ ���� �~ �s�N�Z��������̃o�C�g�� PIXEL array �s�N�Z��

6.4.2 CopyRect �G���R�[�h

CopyRect (copy rectangle)�G���R�[�h�͒P�����C�N���C�A���g�����g�̃t���[���o�b�t�@���̕ʂ̏ꏊ�Ɋ��ɓ����s�N�Z���f�[�^�������Ă���ꍇ�Ɍ����̗ǂ��G���R�[�h�`���ł��D���̃G���R�[�h�ő�����f�[�^�͒P���� X�CY ���W���琬��C�N���C�A���g���s�N�Z���f�[�^�̒����`���R�s�[���邱�Ƃ��o����t���[���o�b�t�@���̈ʒu�������܂��D����͗l�X�ȏ�ʂŗ��p�ł��܂��D�ł�������₷���̂́C���[�U�[���X�N���[�����ŃE�B���h�E���ړ������ꍇ��C�E�B���h�E�̓��e���X�N���[�������ꍇ�ł��D������͕��������p���@�Ƃ��ẮC�e�L�X�g���̌J��Ԃ��p�^�[���̕`����œK������ꍇ������܂��D�D�ꂽ�T�[�o�[�͂���p�^�[������x�������M���C�t���[���o�b�t�@���̂��̃p�^�[���̈ʒu��m�点�邱�ƂŁC���̌�ɑ����Č���铯���p�^�[���ɑ΂���CopyRect �G���R�[�h���g�p���đ��邱�Ƃ��o����ł��傤�D

�o�C�g�� �^ [�l] ����
2 U16 �R�s�[�� x ���W
2 U16 �R�s�[�� y ���W

6.4.3 RRE �G���R�[�h

RRE ��rise-and-run-length encoding ��\���Ă���C���̖��O���Î����Ă��悤�ɁC�{���I�� Run-Length �G���R�[�h�̓񎟌��ł̗ގ����@�ł��D�N���C�A���g�ɓ͂��� RRE �ŃG���R�[�h���ꂽ�����`�́C�O���t�B�b�N�G���W���̍ł��P���Ȃ��̂ɂ���đ����ɂ��Œ����I�ɕ`�悷�邱�Ƃ��o���܂��DRRE �͕��G�ȃf�X�N�g�b�v�ɂ͓K���Ă��܂��񂪁C�����‚��̏󋵂ł͗L�p�ł��D

RRE �̊�ɂȂ��Ă���v�z�́C�s�N�Z���f�[�^�̒����`����菭���������`�̗̈�(���ꂼ��̗̈�͒P��̒l�̃s�N�Z�����琬��C�����̌��������̒����`���`������)�֕�������C�Ƃ������Ƃł��D�^����ꂽ�����`�����̂悤�Ȏq�����`�ɁC�قڍœK�ɕ�������v�Z�͔�r�I�ȒP�ł��D

���̃G���R�[�h�͔w�i�̃s�N�Z���l Vb(�T�^�I�ɂ͂��̒����`�̒��ōł��L���������߂�s�N�Z���l)�ƃJ�E���g N�C������ N �‚̎q�����`�������܂��D���ꂼ��̎q�����`��<v�Cx�Cy�Cw�Ch>�̑g���琬��Cv (��Vb)���s�N�Z���l�C(x�Cy)���e�����`�̍���[����̑��΍��W�C(w�Ch)���q�����`�̕��ƍ�����\���܂��D�N���C�A���g�͔w�i�̃s�N�Z���l�Őe�����`��h��‚Ԃ�����C���ꂼ��̎q�����`�ɑΉ����钷���`��h��‚Ԃ��Ă������ƂŁC���̒����`�̗̈��`�悷�邱�Ƃ��o���܂��D

�f�[�^�͈ȉ��̃w�b�_����n�܂�܂��D

�o�C�g�� �^ [�l] ����
4 U32 �q�����`�̐�
�s�N�Z��������̃o�C�g�� PIXEL �w�i�̃s�N�Z���l

���̌���q�����`�̐� �����C�ȉ��̎q�����`�̎��̂������܂��D

�o�C�g�� �^ [�l] ����
�s�N�Z��������̃o�C�g�� PIXEL �q�����`�̃s�N�Z���l
2 U16 x ���W
2 U16 y ���W
2 U16 ��
2 U16 ����

6.4.4 CoRRE �G���R�[�h

���ӁFCoRRE �G���R�[�h�ɂ͂قƂ�Ǘ��_������܂���BHextile �� CoRRE �Ɠ����l�����Ɋ�Â��C���D�ꂽ�G���R�[�h�`���ł��D

CoRRE(Compact RRE)�� RRE �̈���ŁC�����`�̃T�C�Y���ő�ł� 255 �~ 255 �s�N�Z���𒴂��Ȃ����Ƃ�ۏ؂��Ă��܂��D����𒴂���傫���̒����`�𑗐M�������ꍇ�C�P���ɕ����̂�菬���� RFB �����`�ɕ������đ��M���܂��D���ꂼ��̏����������`�ł́C���̐��@��\�����߂�1�o�C�g�������g�p���邱�Ƃ��o���܂��D�T�^�I�ȃf�X�N�g�b�v�ɂ����āC���̕��@�� RRE �����������k���������܂��D���ۂɂ́C����ɐ������ꂽ�傫���̒����`�̏ꍇ�ɍŗǂ̈��k���������Ă���C���s�̎����ł͍ő� 48 �~ 48 �̃T�C�Y���g�p����Ă��܂��D����́C���k�̌����ɂ��������`(�T�^�I�ɂ̓C���[�W�����܂ޏꍇ)�� Raw �ő��M����C���k�̗ǂ����������`�� CoRRE �ő��M����邽�߂ł��D�����`�̍ő�T�C�Y����������Ώ������قǁC���̎�@�ɂ����闱�x�ׂ͍����Ȃ�܂��DRRE �ł́C���̒����`�S�̂� RRE �� Raw �ő��M���Ȃ���΂Ȃ�܂���D�������Ȃ���C�e RFB �����`�ɂ����̃I�[�o�[�w�b�h�����邽�߁C�����`�̍ő�T�C�Y���������������邱��(�]���� RFB �����`�̐��𑝉������邱��)�́C���k���̒ቺ�������܂��D

�f�[�^�͈ȉ��̃w�b�_����n�܂�܂��D

�o�C�g�� �^ [�l] ����
4 U32 �q�����`�̐�
�s�N�Z��������̃o�C�g�� PIXEL �w�i�̃s�N�Z���l

���̌���q�����`�̐� �����C�ȉ��̎q�����`�̎��̂������܂��D

�o�C�g�� �^ [�l] ����
�s�N�Z��������̃o�C�g�� PIXEL �q�����`�̃s�N�Z���l
1 U8 x ���W
1 U8 y ���W
1 U8 ��
1 U8 ����

6.4.5 Hextile �G���R�[�h

Hextile �� CoRRE �̍l�����Ɋ�Â�����ł��D�����`�� 16 �~ 16 �̃T�C�Y���^�C�� �ɕ�������܂��D�q�����`�̐��@�͊e4�s�b�g�C�v16�r�b�g�ŕ\����܂��DCoRRE �Ƃ͈قȂ�C�e�^�C���� RFB �����`�ł͂���܂���D���̒����`���^�C���ɕ�������ۂɂ͂��炩���ߌ��߂�ꂽ���@������܂��D����͊e�^�C���̈ʒu�ƃT�C�Y�𖾎��I�Ɏw�肷��K�v���Ȃ��Ƃ������Ƃ��Ӗ����܂��D�^�C���̃G���R�[�h���ꂽ���e�́C�P���ɂ��炩���ߌ��߂�ꂽ�����Ŏ��X�Ƒ����܂��D���̏����͍��ォ��n�܂�C������E�C�ォ�牺�̏��ɂȂ�܂��B�����`�S�̂̕��� 16 �̔{���ł͂Ȃ��ꍇ�C�e�s�̍Ō�̃^�C���̕��͂��̕������������Ȃ�܂��D�����悤�ɒ����`�S�̂̍����� 16 �̔{���ł͂Ȃ��ꍇ�C�Ō�̍s�Ɋ܂܂��S�Ẵ^�C���̍������������Ȃ�܂��D

�e�^�C���� Raw �G���R�[�h �܂��� RRE �Ɋ�Â�����ŃG���R�[�h����܂��D�O�q�̒ʂ�C�e�^�C���͔w�i�̃s�N�Z���l�������܂��D�������C�w�i�����O�̃^�C���Ɠ����ł���Ζ����I�Ɏw�肷��K�v�͂���܂���D�S�Ẵ^�C���������s�N�Z���l�����ꍇ�C�^�C���S�̂̑O�i�̃s�N�Z���l�Ƃ��Ĉ�x�����w�肷��Ηǂ����ƂɂȂ�܂��D�w�i�Ɠ��l�C�O�i�̃s�N�Z���l�����w��ɂ��Ă����C�O�̃^�C������l�������z�����Ƃ��o���܂��D

�f�[�^�͏��ԂɃG���R�[�h���ꂽ�e�^�C�����琬��܂��D�e�^�C���́C�ȉ��̂悤�ȃr�b�g����\��������T�u�G���R�[�h �^�C�v�o�C�g�Ŏn�܂�܂��D

�o�C�g�� �^ [�l] ����
1 U8 �T�u�G���R�[�h�̃}�X�N
1 Raw
2 �w�i�F�w��
4 �O�i�F�w��
8 �q�����`�̐�
16 �q�����`�̐F�̗L��

Raw �r�b�g���Z�b�g�����ꍇ�C���̃r�b�g�͈Ӗ����������C�� �~ ���� �̃s�N�Z���l�������܂�(�� ������ �͂��̃^�C���̕��ƍ����ł�)�DRaw �r�b�g���Z�b�g����Ă��Ȃ��ꍇ�C�}�X�N���̑��̃r�b�g�̈Ӗ��͈ȉ��̒ʂ�ł��D

�w�i�F�w�� - �Z�b�g����Ă���ꍇ�C���̃^�C���̔w�i�F����肷��s�N�Z���l�������܂��D

�o�C�g�� �^ [�l] ����
�s�N�Z��������̃o�C�g�� PIXEL �w�i�̃s�N�Z���l

�����`���̍ŏ���raw�łȂ��^�C���ł́C���̃r�b�g��K���w�肵�Ȃ���΂Ȃ�܂���D

�O�i�F�w�� - �Z�b�g����Ă���ꍇ�C�O�i�F����肷��s�N�Z���l�������܂��D���̃s�N�Z���l�͂��̃^�C�����̑S�Ă̎q�����`�ɑ΂��Ďg�p����܂��D

�o�C�g�� �^ [�l] ����
�s�N�Z��������̃o�C�g�� PIXEL �O�i�̃s�N�Z���l

���̃r�b�g���Z�b�g����Ă���ꍇ�C�q�����`�̐F�̗L���������r�b�g�̓[���łȂ���΂Ȃ�܂���D

�q�����`�̐� - �Z�b�g����Ă���ꍇ�C�q�����`�̐��������ȉ��̂悤��1�o�C�g�������܂��D

�o�C�g�� �^ [�l] ����
1 U8 �q�����`�̐�

�Z�b�g����Ă��Ȃ��ꍇ�C�q�����`�͂���܂���(�‚܂�C�^�C���S�̂̔w�i���P�F�Ƃ������Ƃł�)�D

�q�����`�̐F�̗L�� - �Z�b�g����Ă���ꍇ�C���ꂼ��̎q�����`�̑O�ɁC���̎q�����`�̐F�������s�N�Z���l���u����܂��D

�o�C�g�� �^ [�l] ����
�s�N�Z��������̃o�C�g�� PIXEL �q�����`�̃s�N�Z���l
1 U8 x ���W�Cy ���W
1 U8 ���ƍ���

�Z�b�g����Ă��Ȃ��ꍇ�C�S�Ă̎q�����`�͓����F�ƂȂ�C�O�i�F�w��̃r�b�g���Z�b�g����Ă��Ȃ���Ό�̃^�C���Ɠ����F�ɂȂ�܂��D�q�����`�͈ȉ��̂悤�ɂȂ�܂��D

�o�C�g�� �^ [�l] ����
1 U8 xy���W
1 U8 ���ƍ���

���ꂼ��̎q�����`�̍��W�ƃT�C�Y�́Cxy���W�C���ƍ��� �� 2 �o�C�g�Ŏw�肳��܂��Dxy���W �̏��4�r�b�g�� X���W�C����4�r�b�g�� Y���W��\���܂��D���ƍ��� �̏��4�r�b�g��(�� - 1)�C����4�r�b�g��(���� - 1)��\���܂��D

6.4.6 ZRLE �G���R�[�h

ZRLE �� Zlib1 Run-Length Encoding ��\���Ă���Czlib ���k�C�^�C�����O�C�p���b�g���Crun-length �G���R�[�h�̑g�����ł��D���M�����f�[�^��4�o�C�g�̃t�B�[���h�Ŏn�܂�C���̌�� zlib ���k���ꂽ���e�������܂��D���� RFB �v���g�R���̐ڑ���ł́C�P��� zlib "stream" �I�u�W�F�N�g���g�p����܂��D����������ZRLE �ł̒����`�́C�����ɏ��Ԓʂ�ɃG���R�[�h�ƃf�R�[�h���s���Ȃ���΂Ȃ�܂���D

�o�C�g�� �^ [�l] ����
4 U32 ����
���� U8 array zlib �f�[�^

���k����Ȃ��ꍇ�� zlib �f�[�^ �́C������E�C�ォ�牺�̏��� 64 �~ 64 �s�N�Z���̃^�C���Q�Ƃ����CHextile �Ɏ����`���ŕ\����܂��D�����`�̕��� 64 �̔{���ł͂Ȃ��ꍇ�C�e�s�̍Ō�̃^�C���̕��͂��̕������������Ȃ�܂��D�����悤�ɒ����`�S�̂̍����� 64 �̔{���ł͂Ȃ��ꍇ�C�Ō�̍s�Ɋ܂܂��S�Ẵ^�C���̍������������Ȃ�܂��D

ZRLE �͐V�����^ CPIXEL(compressed pixel) ���g�p���܂��D����́C�g�D���[�J���[�t���O ����[���C�s�N�Z��������̃r�b�g�� �� 32�C�P�x ��24�ȉ��C�����Ă��̑S�Ẵr�b�g�����3�o�C�g�܂��͉���3�o�C�g�̂ǂ��炩�ŐԁE�΁E�‚̋P�x���\������ꍇ�������C���ӂ��ꂽ�s�N�Z���`���̂��߂� PIXEL �Ɠ����ł��D���̏ꍇ CPIXEL ��3�o�C�g�݂̂ƂȂ�C����3�o�C�g�܂��͏��3�o�C�g���܂݂܂��DCPixel������̃o�C�g�� �́CCPIXEL���̃o�C�g���ł��D

�e�^�C�����T�u�G���R�[�h �^�C�v�o�C�g�Ŏn�܂�܂��D���̃o�C�g�̏��1�r�b�g�� run-length �G���R�[�h�̏ꍇ�ɃZ�b�g����C�����łȂ��ꍇ�̓N���A����܂��D����7�r�b�g�̓p���b�g�̃T�C�Y�������C0 �̓p���b�g���Ȃ����ƁC1 �͂��̃^�C�����P�F�ł��邱�ƁC2 �` 127 �̓p���b�g�̃T�C�Y��\���܂��D�T�u�G���R�[�h ����蓾��l�͈ȉ��̒ʂ�ł��D

0 - Raw �s�N�Z���f�[�^�D�� �~ ���� �̃s�N�Z���l�������܂�(�� ������ �͂��̃^�C���̕��ƍ����ł�)�D

�o�C�g�� �^ [�l] ����
�� �~ ���� �~ CPixel������̃o�C�g�� CPIXEL array �s�N�Z��

1 - �P�F�̃^�C���D�s�N�Z���l�������܂��D

�o�C�g�� �^ [�l] ����
Cpixcel������̃o�C�g�� CPIXEL �s�N�Z���l

2 �` 16 - �p�b�N���ꂽ�p���b�g�^�C�v�D�p���b�g�T�C�Y (���T�u�G���R�[�h) ���̃s�N�Z���l���琬��p���b�g�������܂��D���̌�Ƀp�b�N���ꂽ�s�N�Z���������܂��D�e�s�N�Z���̓p���b�g�̃C���f�b�N�X(0 ���ŏ��̃G���g���[���Ӗ����܂�)�������r�b�g�t�B�[���h�Ƃ��ĕ\������܂��D�p���b�g�T�C�Y �� 2 �̏ꍇ�� 1 �r�b�g�̃t�B�[���h���g�p����C�p���b�g�T�C�Y ��3�܂���4�̏ꍇ��2�r�b�g�̃t�B�[���h���g�p����C�p���b�g�T�C�Y ��5�`16�̏ꍇ��4�r�b�g�̃t�B�[���h���g�p����܂��D�����̃r�b�g�t�B�[���h�̓o�C�g���Ƀp�b�N����C�ŏ�ʂ̃r�b�g���ō��[�̃s�N�Z����\���܂�(�‚܂�C�r�b�O�G���f�B�A���ł�)�D�s�N�Z������8�C4�C2�̔{���ł͂Ȃ��^�C���̏ꍇ�C�e�s �����m�Ƀo�C�g���ɂȂ�悤�ɁC�A���C�������g���邽�߂̃p�f�B���O�r�b�g���g�p����܂��D

�o�C�g�� �^ [�l] ����
�p���b�g�T�C�Y �~ Cpixcel������̃o�C�g�� CPIXEL array �p���b�g
m U8 array �p�b�N���ꂽ�s�N�Z��

������ m �́C�p�b�N���ꂽ�s�N�Z����\������o�C�g���ŁC�p���b�g�T�C�Y ��2�̏ꍇ�ɂ� floor ((�� + 7) / 8 ) �~ ���� �ƂȂ�C�p���b�g�T�C�Y �� 3 �܂��� 4 �̏ꍇ�� floor ((�� + 3) / 4 ) �~ �����C�p���b�g�T�C�Y �� 5 �` 16 �̏ꍇ�� floor ((�� + 1) / 2) �~ ���� �ƂȂ�܂��D

17 �` 127 - ���g�p(RLE�p���b�g�ɑ΂��闘�_�͂���܂���)

128 - �P���� RLE�D�^�C���̏I���܂ŌJ��Ԃ���� run ���琬��܂��Drun �͂���s�̏I�[���玟�̍s�̎n�܂�܂Ōp�����邱�Ƃ����‚���Ă��܂��D�e run �́C�P�Ƃ̃s�N�Z���l�ƁC���� run �̒����ŕ\����܂��D������1�o�C�g�ȏ�ŕ\����܂��D�����͂��̒������\���S�Ẵo�C�g����� 1 �������̂Ƃ��Čv�Z����܂��D255 �ȊO�̑S�Ẵo�C�g�l�͍ŏI�o�C�g�ł��邱�Ƃ������܂��D�]���āC�Ⴆ�� 1 ��[0]�C255 ��[254]�C256��[255,0]�C257��[255,1]�C510��[255,254]�C511��[255,255,0]�Ȃǂƕ\����܂��D

�o�C�g�� �^ [�l] ����
Cpixcel������̃o�C�g�� CPIXEL �s�N�Z���l
floor ((run�̒��� - 1) / 255) U8 array 255
1 U8 (run �̒��� - 1) % 255

129 - ���g�p

130 �` 255 - �p���b�gRLE�D�p���b�g�T�C�Y = (�T�u�G���R�[�h - 128) ���̃s�N�Z���l���琬��p���b�g�������܂��D

�o�C�g�� �^ [�l] ����
�p���b�g�T�C�Y �~ Cpixcel������̃o�C�g�� CPIXEL array �p���b�g

���̌�C�P���� RLE�Ɠ��l�C�^�C���̏I���܂� run ���J��Ԃ���܂��D���� 1 �� run �́C�P���Ƀp���b�g�̃C���f�b�N�X��\���܂��D

�o�C�g�� �^ [�l] ����
1 U8 �p���b�g�̃C���f�b�N�X

1 �o�C�g��蒷�� run �́C�ŏ�ʃr�b�g���Z�b�g���ꂽ�p���b�g�̃C���f�b�N�X��\���C���̌�� run �̒����������܂��D

�o�C�g�� �^ [�l] ����
1 U8 �p���b�g�̃C���f�b�N�X + 128
floor((run �̒��� - 1) / 255 U8 array 255
1 U8 (run �̒��� - 1) % 255

1�Q�l http://www.gzip.org/zlib/

6.5 �[���G���R�[�h�`��

6.5.1 �J�[�\�� �[���G���R�[�h

�J�[�\�� �[���G���R�[�h��v������N���C�A���g�́C���[�J���Ń}�E�X�J�[�\����`��ł���\�͂����邱�Ƃ�錾���Ă��邱�ƂɂȂ�܂��D����͒ᑬ�ڑ��ɂ����āC���Ȃ�̑̊����x�̌���������炵�܂��D�T�[�o�[�́C�J�[�\�� �[���G���R�[�h��p�����[�������`���X�V�̈ꕔ�Ƃ��đ��M���邱�ƂŁC�J�[�\���̌`���ݒ肵�܂��D���̋[�������`�� x ���W�� y ���W�̓J�[�\���̃z�b�g�X�|�b�g��\���C�� ������ �̓J�[�\���̕��ƍ������s�N�Z���P�ʂŕ\���܂��D�� �~���� ���̃s�N�Z���l���琬��f�[�^�̌�ɁC�r�b�g�}�X�N�������܂��D���̃r�b�g�}�X�N�́C������E�C�ォ�牺�ւ̑��������琬��C�e�������� floor ((�� + 7)/8)�̃o�C�g���܂Ŗ��߂��܂��D�e�o�C�g���ɂ�����e�r�b�g�́C�Ή�����J�[�\�����̃s�N�Z�����L���ł��邱�Ƃ�\���C�ŏ��1�r�b�g�͍ō��[�̃s�N�Z����\���܂��D

�o�C�g�� �^ [�l] ����
�� �~ ���� �~ �s�N�Z��������̃o�C�g�� PIXEL array �J�[�\���̃s�N�Z��
floor((�� + 7) / 8) * ���� U8 array �r�b�g�}�X�N

6.5.2 �f�X�N�g�b�v�T�C�Y �[���G���R�[�h

�f�X�N�g�b�v�T�C�Y�[���G���R�[�h��v������N���C�A���g�́C�t���[���o�b�t�@�̕��⍂���̕ύX�ɑΉ����Ă��邱�Ƃ�錾���Ă��邱�ƂɂȂ�܂��D�T�[�o�[�͍X�V�̈ꕔ�Ƃ����f�X�N�g�b�v�T�C�Y �G���R�[�h��p�����[�������`�𑗐M���邱�ƂŁC�f�X�N�g�b�v�̃T�C�Y��ύX���܂��D�[�������`��x ���W ��y ���W �͖�������C�� ������ ���t���[���o�b�t�@�̐V�������ƍ�����\���܂��D���̋[�������`�Ɋ֘A���邱��ȏ�̃f�[�^�͂���܂���D