Added the EditPixelFormatDialog dialog. It allows change or add new
the user definded pixel format.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@268 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/EditPixelFormatDialog.h b/rfbplayer/EditPixelFormatDialog.h
new file mode 100644
index 0000000..f0cdafe
--- /dev/null
+++ b/rfbplayer/EditPixelFormatDialog.h
@@ -0,0 +1,102 @@
+/* Copyright (C) 2004 TightVNC Team. All Rights Reserved.
+ *
+ * This 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 software 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 software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+// -=- EditPixelFormatDialog.h
+
+#include <rfb_win32/Dialog.h>
+
+class EditPixelFormatDialog : public rfb::win32::Dialog {
+public:
+ EditPixelFormatDialog(PixelFormatList *_supportedPF, char *_format_name,
+ PixelFormat *_pf)
+ : Dialog(GetModuleHandle(0)), format_name(_format_name),
+ supportedPF(_supportedPF), pf(_pf) {}
+ // - Show the dialog and return true if OK was clicked,
+ // false in case of error or Cancel
+ virtual bool showDialog(HWND parent) {
+ return Dialog::showDialog(MAKEINTRESOURCE(IDD_UPF_EDIT), parent);
+ }
+
+protected:
+ // Dialog methods (protected)
+ virtual void initDialog() {
+ HWND bppCombo = GetDlgItem(handle, IDC_BPP_COMBO);
+ SendMessage(bppCombo, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)("8"));
+ SendMessage(bppCombo, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)("16"));
+ SendMessage(bppCombo, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)("32"));
+ SendMessage(bppCombo, CB_SETCURSEL, min(2, (pf->bpp - 8) / 8), 0);
+
+ HWND bigendianCombo = GetDlgItem(handle, IDC_BIGENDIAN_COMBO);
+ SendMessage(bigendianCombo, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)("No"));
+ SendMessage(bigendianCombo, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)("Yes"));
+ SendMessage(bigendianCombo, CB_SETCURSEL, pf->bigEndian, 0);
+
+ setItemString(IDC_NAME_EDIT, format_name);
+ setItemInt(IDC_DEPTH_EDIT, pf->depth);
+ setItemInt(IDC_REDMAX_EDIT, pf->redMax);
+ setItemInt(IDC_GREENMAX_EDIT, pf->greenMax);
+ setItemInt(IDC_BLUEMAX_EDIT, pf->blueMax);
+ setItemInt(IDC_REDSHIFT_EDIT, pf->redShift);
+ setItemInt(IDC_GREENSHIFT_EDIT, pf->greenShift);
+ setItemInt(IDC_BLUESHIFT_EDIT, pf->blueShift);
+ }
+ virtual bool onOk() {
+ // Check for the errors
+ char err_msg[256] = "\0";
+ if (((getItemString(IDC_NAME_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_DEPTH_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_REDMAX_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_GREENMAX_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_BLUEMAX_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_REDSHIFT_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_GREENSHIFT_EDIT))[0] == '\0') ||
+ ((getItemString(IDC_BLUESHIFT_EDIT))[0] == '\0')) {
+ strcpy(err_msg, "Please fill the all fields in the dialog.");
+ }
+ if (supportedPF->getIndexByPFName(format_name) !=
+ supportedPF->getIndexByPFName(getItemString(IDC_NAME_EDIT))) {
+ strcpy(err_msg, "The pixel format with that name is already exist.");
+ }
+ if (getItemInt(IDC_DEPTH_EDIT) <= 0) {
+ strcpy(err_msg, "The pixel depth must be larger than 0.");
+ }
+ if (err_msg[0] != 0) {
+ MessageBox(handle, err_msg, "RfbPlayer", MB_OK | MB_ICONWARNING);
+ return false;
+ }
+ // Fill the pixel format structure
+ strncpy(format_name, getItemString(IDC_NAME_EDIT), sizeof(format_name));
+ format_name[sizeof(format_name) - 1] = 0;
+ pf->bpp = getItemInt(IDC_BPP_COMBO);
+ pf->depth = getItemInt(IDC_DEPTH_EDIT);
+ pf->bigEndian = (SendMessage(GetDlgItem(handle, IDC_BIGENDIAN_COMBO),
+ CB_GETCURSEL, 0, 0)) ? true : false;
+ pf->trueColour = true;
+ pf->redMax = getItemInt(IDC_REDMAX_EDIT);
+ pf->greenMax = getItemInt(IDC_GREENMAX_EDIT);
+ pf->blueMax = getItemInt(IDC_BLUEMAX_EDIT);
+ pf->redShift = getItemInt(IDC_REDSHIFT_EDIT);
+ pf->greenShift = getItemInt(IDC_GREENSHIFT_EDIT);
+ pf->blueShift = getItemInt(IDC_BLUESHIFT_EDIT);
+ return true;
+ }
+
+ char *format_name;
+ PixelFormatList *supportedPF;
+ PixelFormat *pf;
+};
\ No newline at end of file
diff --git a/rfbplayer/resource.h b/rfbplayer/resource.h
index ca4901b..22df827 100644
--- a/rfbplayer/resource.h
+++ b/rfbplayer/resource.h
@@ -11,6 +11,7 @@
#define IDD_OPTIONS 137
#define IDD_ABOUT 138
#define IDD_USERPF_LIST 139
+#define IDD_UPF_EDIT 140
#define IDC_GOTO_EDIT 1003
#define IDC_PIXELFORMAT 1004
#define IDC_ASK_PF 1006
@@ -24,11 +25,21 @@
#define IDC_BIG_ENDIAN 1013
#define IDC_EDIT_UPF 1015
#define IDC_PF_LIST 1016
+#define IDC_BPP_COMBO 1016
#define IDC_ADD_BUTTON 1017
+#define IDC_NAME_EDIT 1017
#define IDC_REMOVE_BUTTON 1018
#define IDC_EDIT_BUTTON 1019
#define IDC_COPYRIGHT 1021
+#define IDC_DEPTH_EDIT 1021
#define IDC_DESCRIPTION 1022
+#define IDC_BIGENDIAN_COMBO 1022
+#define IDC_REDMAX_EDIT 1023
+#define IDC_GREENMAX_EDIT 1024
+#define IDC_BLUEMAX_EDIT 1025
+#define IDC_REDSHIFT_EDIT 1026
+#define IDC_GREENSHIFT_EDIT 1027
+#define IDC_BLUESHIFT_EDIT 1028
#define ID_OPENFILE 40011
#define ID_CLOSEFILE 40012
#define ID_EXIT 40013
@@ -53,9 +64,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 140
+#define _APS_NEXT_RESOURCE_VALUE 141
#define _APS_NEXT_COMMAND_VALUE 40045
-#define _APS_NEXT_CONTROL_VALUE 1021
+#define _APS_NEXT_CONTROL_VALUE 1031
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/rfbplayer/rfbplayer.dsp b/rfbplayer/rfbplayer.dsp
index e324905..3a6329f 100644
--- a/rfbplayer/rfbplayer.dsp
+++ b/rfbplayer/rfbplayer.dsp
@@ -140,6 +140,10 @@
# End Source File
# Begin Source File
+SOURCE=.\EditPixelFormatDialog.h
+# End Source File
+# Begin Source File
+
SOURCE=.\FbsInputStream.h
# End Source File
# Begin Source File
diff --git a/rfbplayer/rfbplayer.rc b/rfbplayer/rfbplayer.rc
index 55b4f3f..e8dd344 100644
--- a/rfbplayer/rfbplayer.rc
+++ b/rfbplayer/rfbplayer.rc
@@ -284,6 +284,40 @@
PUSHBUTTON "Close",IDOK,150,64,50,14
END
+IDD_UPF_EDIT DIALOG DISCARDABLE 0, 0, 204, 126
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Edit the user pixel format"
+FONT 8, "MS Sans Serif"
+BEGIN
+ EDITTEXT IDC_NAME_EDIT,68,7,129,13,ES_AUTOHSCROLL
+ COMBOBOX IDC_BPP_COMBO,68,23,39,45,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP
+ EDITTEXT IDC_DEPTH_EDIT,157,22,40,13,ES_AUTOHSCROLL | ES_NUMBER
+ COMBOBOX IDC_BIGENDIAN_COMBO,68,38,39,45,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
+ EDITTEXT IDC_REDMAX_EDIT,68,54,39,13,ES_AUTOHSCROLL | ES_NUMBER
+ EDITTEXT IDC_GREENMAX_EDIT,68,70,39,13,ES_AUTOHSCROLL | ES_NUMBER
+ EDITTEXT IDC_BLUEMAX_EDIT,68,86,39,13,ES_AUTOHSCROLL | ES_NUMBER
+ EDITTEXT IDC_REDSHIFT_EDIT,157,54,39,13,ES_AUTOHSCROLL |
+ ES_NUMBER
+ EDITTEXT IDC_GREENSHIFT_EDIT,157,70,40,13,ES_AUTOHSCROLL |
+ ES_NUMBER
+ EDITTEXT IDC_BLUESHIFT_EDIT,157,86,40,13,ES_AUTOHSCROLL |
+ ES_NUMBER
+ PUSHBUTTON "OK",IDOK,93,105,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,147,105,50,14
+ LTEXT "Pixel format name:",IDC_STATIC,7,7,57,13,SS_CENTERIMAGE
+ LTEXT "Bit per pixel:",IDC_STATIC,7,23,38,12,SS_CENTERIMAGE
+ LTEXT "Big endian flag :",IDC_STATIC,7,38,53,13,SS_CENTERIMAGE
+ LTEXT "Red max :",IDC_STATIC,7,54,33,13,SS_CENTERIMAGE
+ LTEXT "Green max :",IDC_STATIC,7,70,38,13,SS_CENTERIMAGE
+ LTEXT "Blue max :",IDC_STATIC,7,86,38,13,SS_CENTERIMAGE
+ LTEXT "Depth:",IDC_STATIC,112,23,21,12,SS_CENTERIMAGE
+ LTEXT "Red shifts :",IDC_STATIC,112,54,36,13,SS_CENTERIMAGE
+ LTEXT "Green shifts :",IDC_STATIC,112,70,43,13,SS_CENTERIMAGE
+ LTEXT "Blue shifts :",IDC_STATIC,112,86,43,13,SS_CENTERIMAGE
+END
+
/////////////////////////////////////////////////////////////////////////////
//
@@ -366,6 +400,14 @@
HORZGUIDE, 59
HORZGUIDE, 64
END
+
+ IDD_UPF_EDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 197
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 119
+ END
END
#endif // APSTUDIO_INVOKED