picked some changes from awakecoding's branch

This commit is contained in:
C-o-r-E
2013-06-26 21:56:37 -04:00
parent 11b0a9f185
commit ebdf1ea6a2
5 changed files with 127 additions and 5 deletions

View File

@@ -1609,6 +1609,18 @@ void xf_TerminateEventHandler(rdpContext* context, TerminateEventArgs* e)
}
}
void xf_ParamChangeEventHandler(rdpContext* context, ParamChangeEventArgs* e)
{
switch (e->id)
{
case FreeRDP_ScalingFactor:
break;
default:
break;
}
}
/**
* Client Interface
*/
@@ -1770,6 +1782,8 @@ int xfreerdp_client_new(freerdp* instance, rdpContext* context)
settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = FALSE;
PubSub_SubscribeTerminate(context->pubSub, (pTerminateEventHandler) xf_TerminateEventHandler);
PubSub_SubscribeParamChange(context->pubSub, (pParamChangeEventHandler) xf_ParamChangeEventHandler);
return 0;
}

View File

@@ -42,10 +42,14 @@ DEFINE_EVENT_BEGIN(ResizeWindow)
int height;
DEFINE_EVENT_END(ResizeWindow)
DEFINE_EVENT_BEGIN(Pan)
int xdiff;
int ydiff;
DEFINE_EVENT_END(Pan)
DEFINE_EVENT_BEGIN(PanningChange)
int XPan;
int YPan;
DEFINE_EVENT_END(PanningChange)
DEFINE_EVENT_BEGIN(ScalingFactorChange)
double ScalingFactor;
DEFINE_EVENT_END(ScalingFactorChange)
DEFINE_EVENT_BEGIN(EmbedWindow)
BOOL embed;

View File

@@ -609,6 +609,9 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
#define FreeRDP_WmClass 1549
#define FreeRDP_EmbeddedWindow 1550
#define FreeRDP_SmartSizing 1551
#define FreeRDP_XPan 1552
#define FreeRDP_YPan 1553
#define FreeRDP_ScalingFactor 1554
#define FreeRDP_SoftwareGdi 1601
#define FreeRDP_LocalConnection 1602
#define FreeRDP_AuthenticationOnly 1603
@@ -977,7 +980,10 @@ struct rdp_settings
ALIGN64 char* WmClass; /* 1549 */
ALIGN64 BOOL EmbeddedWindow; /* 1550 */
ALIGN64 BOOL SmartSizing; /* 1551 */
UINT64 padding1600[1600 - 1552]; /* 1552 */
ALIGN64 int XPan; /* 1552 */
ALIGN64 int YPan; /* 1553 */
ALIGN64 double ScalingFactor; /* 1554 */
UINT64 padding1600[1600 - 1555]; /* 1555 */
/* Miscellaneous */
ALIGN64 BOOL SoftwareGdi; /* 1601 */
@@ -1312,6 +1318,9 @@ FREERDP_API void freerdp_dynamic_channel_collection_free(rdpSettings* settings);
FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, int id);
FREERDP_API int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param);
FREERDP_API int freerdp_get_param_int(rdpSettings* settings, int id);
FREERDP_API int freerdp_set_param_int(rdpSettings* settings, int id, int param);
FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id);
FREERDP_API int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param);
@@ -1321,6 +1330,9 @@ FREERDP_API int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 p
FREERDP_API char* freerdp_get_param_string(rdpSettings* settings, int id);
FREERDP_API int freerdp_set_param_string(rdpSettings* settings, int id, char* param);
FREERDP_API double freerdp_get_param_double(rdpSettings* settings, int id);
FREERDP_API int freerdp_set_param_double(rdpSettings* settings, int id, double param);
#ifdef __cplusplus
}
#endif

View File

@@ -1212,6 +1212,55 @@ int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
return -1;
}
int freerdp_get_param_int(rdpSettings* settings, int id)
{
switch (id)
{
case FreeRDP_XPan:
return settings->XPan;
break;
case FreeRDP_YPan:
return settings->YPan;
break;
default:
return 0;
break;
}
return 0;
}
int freerdp_set_param_int(rdpSettings* settings, int id, int param)
{
ParamChangeEventArgs e;
rdpContext* context = ((freerdp*) settings->instance)->context;
switch (id)
{
case FreeRDP_XPan:
settings->XPan = param;
break;
case FreeRDP_YPan:
settings->YPan = param;
break;
default:
return -1;
break;
}
settings->settings_modified[id] = 1;
EventArgsInit(&e, "freerdp");
e.id = id;
PubSub_OnParamChange(context->pubSub, context->instance, &e);
return 0;
}
UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id)
{
switch (id)
@@ -2233,3 +2282,44 @@ int freerdp_set_param_string(rdpSettings* settings, int id, char* param)
return 0;
}
double freerdp_get_param_double(rdpSettings* settings, int id)
{
switch (id)
{
case FreeRDP_ScalingFactor:
return settings->ScalingFactor;
break;
default:
return 0;
break;
}
return 0;
}
int freerdp_set_param_double(rdpSettings* settings, int id, double param)
{
ParamChangeEventArgs e;
rdpContext* context = ((freerdp*) settings->instance)->context;
switch (id)
{
case FreeRDP_ScalingFactor:
settings->ScalingFactor = param;
break;
default:
return -1;
break;
}
settings->settings_modified[id] = 1;
EventArgsInit(&e, "freerdp");
e.id = id;
PubSub_OnParamChange(context->pubSub, context->instance, &e);
return 0;
}

View File

@@ -323,6 +323,8 @@ static wEventType FreeRDP_Events[] =
DEFINE_EVENT_ENTRY(WindowStateChange)
DEFINE_EVENT_ENTRY(ResizeWindow)
DEFINE_EVENT_ENTRY(EmbedWindow)
DEFINE_EVENT_ENTRY(PanningChange)
DEFINE_EVENT_ENTRY(ScalingFactorChange)
DEFINE_EVENT_ENTRY(ErrorInfo)
DEFINE_EVENT_ENTRY(ParamChange)
DEFINE_EVENT_ENTRY(Terminate)