blob: 585bfc8aefbf29f5f992e77fedcfa4f9a221d88a [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.consoleproxy.vnc.packet.client;
import java.io.DataOutputStream;
import java.io.IOException;
import com.cloud.consoleproxy.vnc.RfbConstants;
import com.cloud.consoleproxy.vnc.VncScreenDescription;
public class SetPixelFormatPacket implements ClientPacket {
private final int bitsPerPixel, depth, bigEndianFlag, trueColourFlag, redMax, greenMax, blueMax, redShift, greenShift, blueShift;
private final VncScreenDescription screen;
public SetPixelFormatPacket(VncScreenDescription screen, int bitsPerPixel, int depth, int bigEndianFlag, int trueColorFlag, int redMax, int greenMax, int blueMax,
int redShift, int greenShift, int blueShift) {
this.screen = screen;
this.bitsPerPixel = bitsPerPixel;
this.depth = depth;
this.bigEndianFlag = bigEndianFlag;
this.trueColourFlag = trueColorFlag;
this.redMax = redMax;
this.greenMax = greenMax;
this.blueMax = blueMax;
this.redShift = redShift;
this.greenShift = greenShift;
this.blueShift = blueShift;
}
@Override
public void write(DataOutputStream os) throws IOException {
os.writeByte(RfbConstants.CLIENT_SET_PIXEL_FORMAT);
// Padding
os.writeByte(0);
os.writeByte(0);
os.writeByte(0);
// Send pixel format
os.writeByte(bitsPerPixel);
os.writeByte(depth);
os.writeByte(bigEndianFlag);
os.writeByte(trueColourFlag);
os.writeShort(redMax);
os.writeShort(greenMax);
os.writeShort(blueMax);
os.writeByte(redShift);
os.writeByte(greenShift);
os.writeByte(blueShift);
// Padding
os.writeByte(0);
os.writeByte(0);
os.writeByte(0);
screen.setPixelFormat(bitsPerPixel, depth, bigEndianFlag, trueColourFlag, redMax, greenMax, blueMax, redShift, greenShift, blueShift);
}
}