FreeRDP
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
MRDPView Class Reference

#include <MRDPView.h>

Inheritance diagram for MRDPView:
Collaboration diagram for MRDPView:

Instance Methods

(int) - rdpStart:
 
(void) - setCursor:
 
(void) - setScrollOffset:y:w:h:
 
(void) - onPasteboardTimerFired:
 
(void) - pause
 
(void) - resume
 
(void) - releaseResources
 

Data Fields

NSPasteboard * pasteboard_rd
 
NSPasteboard * pasteboard_wr
 
int pasteboard_changecount
 
int pasteboard_format
 

Protected Attributes

mfContextmfc
 
NSBitmapImageRep * bmiRep
 
NSMutableArray * cursors
 
NSMutableArray * windows
 
NSTimer * pasteboard_timer
 
NSCursor * currentCursor
 
NSRect prevWinPosition
 
freerdp * instance
 
rdpContext * context
 
CGContextRef bitmap_context
 
char * pixel_data
 
int argc
 
char ** argv
 
DWORD kbdModFlags
 
BOOL initialized
 
NSPoint savedDragLocation
 
BOOL firstCreateWindow
 
BOOL isMoveSizeInProgress
 
BOOL skipResizeOnce
 
BOOL saveInitialDragLoc
 
BOOL skipMoveWindowOnce
 

Properties

int is_connected
 

Detailed Description

FreeRDP: A Remote Desktop Protocol Implementation MacFreeRDP

Copyright 2012 Thomas Goddard

Licensed 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.

Definition at line 31 of file MRDPView.h.

Method Documentation

◆ onPasteboardTimerFired:

- (void) onPasteboardTimerFired: (NSTimer *)  timer

System-Declared Uniform Type Identifiers: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

Definition at line 669 of file MRDPView.m.

711 :(NSTimer *)timer
712{
713 UINT32 formatId;
714 BOOL formatMatch;
715 int changeCount;
716 NSData *formatData;
717 NSString *formatString;
718 const char *formatType;
719 NSPasteboardItem *item;
720 changeCount = (int)[pasteboard_rd changeCount];
721
722 if (changeCount == pasteboard_changecount)
723 return;
724
725 pasteboard_changecount = changeCount;
726 NSArray *items = [pasteboard_rd pasteboardItems];
727
728 if ([items count] < 1)
729 return;
730
731 item = [items objectAtIndex:0];
736 formatMatch = FALSE;
737
738 for (NSString *type in [item types])
739 {
740 formatType = [type UTF8String];
741
742 if (strcmp(formatType, "public.utf8-plain-text") == 0)
743 {
744 formatData = [item dataForType:type];
745
746 if (formatData == nil)
747 {
748 break;
749 }
750
751 formatString = [[NSString alloc] initWithData:formatData encoding:NSUTF8StringEncoding];
752
753 const char *data = [formatString cStringUsingEncoding:NSUTF8StringEncoding];
754 const size_t dataLen = [formatString lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
755 formatId = ClipboardRegisterFormat(mfc->clipboard, "text/plain");
756 ClipboardSetData(mfc->clipboard, formatId, data, dataLen + 1);
757 [formatString release];
758
759 formatMatch = TRUE;
760
761 break;
762 }
763 }
764
765 if (!formatMatch)
766 ClipboardEmpty(mfc->clipboard);
767
768 if (mfc->clipboardSync)
769 mac_cliprdr_send_client_format_list(mfc->cliprdr);
770}

◆ pause

- (void) pause

Definition at line 669 of file MRDPView.m.

773{
774 dispatch_async(dispatch_get_main_queue(), ^{
775 [self->pasteboard_timer invalidate];
776 });
777 NSArray *trackingAreas = self.trackingAreas;
778
779 for (NSTrackingArea *ta in trackingAreas)
780 {
781 [self removeTrackingArea:ta];
782 }
783 releaseFlagStates(instance->context->input, kbdModFlags);
784 kbdModFlags = 0;
785}

◆ rdpStart:

- (int) rdpStart: (rdpContext *)  rdp_context

Definition at line 69 of file MRDPView.m.

75 :(rdpContext *)rdp_context
76{
77 rdpSettings *settings;
78 EmbedWindowEventArgs e;
79 [self initializeView];
80
81 WINPR_ASSERT(rdp_context);
82 context = rdp_context;
83 mfc = (mfContext *)rdp_context;
84
85 instance = context->instance;
86 WINPR_ASSERT(instance);
87
88 settings = context->settings;
89 WINPR_ASSERT(settings);
90
91 EventArgsInit(&e, "mfreerdp");
92 e.embed = TRUE;
93 e.handle = (void *)self;
94 PubSub_OnEmbedWindow(context->pubSub, context, &e);
95 NSScreen *screen = [[NSScreen screens] objectAtIndex:0];
96 NSRect screenFrame = [screen frame];
97
98 if (freerdp_settings_get_bool(settings, FreeRDP_Fullscreen))
99 {
100 if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, screenFrame.size.width))
101 return -1;
102 if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, screenFrame.size.height))
103 return -1;
104 [self enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
105 }
106 else
107 {
108 [self exitFullScreenModeWithOptions:nil];
109 }
110
111 mfc->client_height = freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight);
112 mfc->client_width = freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth);
113
114 if (!(mfc->common.thread =
115 CreateThread(NULL, 0, mac_client_thread, (void *)context, 0, &mfc->mainThreadId)))
116 {
117 WLog_ERR(TAG, "failed to create client thread");
118 return -1;
119 }
120
121 return 0;
122}
FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id)
Returns a UINT32 settings value.
FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings *settings, FreeRDP_Settings_Keys_Bool id)
Returns a boolean settings value.
FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id, UINT32 param)
Sets a UINT32 settings value.

◆ releaseResources

- (void) releaseResources

Definition at line 669 of file MRDPView.m.

675{
676 for (int i = 0; i < argc; i++)
677 free(argv[i]);
678
679 if (!is_connected)
680 return;
681
682 free(pixel_data);
683}

◆ resume

- (void) resume

Definition at line 669 of file MRDPView.m.

788{
789 if (!self.is_connected)
790 return;
791
792 releaseFlagStates(instance->context->input, kbdModFlags);
793 kbdModFlags = 0;
794 freerdp_input_send_focus_in_event(instance->context->input, 0);
795
796 dispatch_async(dispatch_get_main_queue(), ^{
797 self->pasteboard_timer =
798 [NSTimer scheduledTimerWithTimeInterval:0.5
799 target:self
800 selector:@selector(onPasteboardTimerFired:)
801 userInfo:nil
802 repeats:YES];
803
804 NSTrackingArea *trackingArea = [[NSTrackingArea alloc]
805 initWithRect:[self visibleRect]
806 options:NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved |
807 NSTrackingCursorUpdate | NSTrackingEnabledDuringMouseDrag |
808 NSTrackingActiveWhenFirstResponder
809 owner:self
810 userInfo:nil];
811 [self addTrackingArea:trackingArea];
812 [trackingArea release];
813 });
814}

◆ setCursor:

- (void) setCursor: (NSCursor *)  cursor

Definition at line 124 of file MRDPView.m.

249 :(NSCursor *)cursor
250{
251 self->currentCursor = cursor;
252 dispatch_async(dispatch_get_main_queue(), ^{
253 [[self window] invalidateCursorRectsForView:self];
254 });
255}

◆ setScrollOffset:y:w:h:

- (void) setScrollOffset: (int)  xOffset
y: (int)  yOffset
w: (int)  width
h: (int)  height 

Definition at line 669 of file MRDPView.m.

816 :(int)xOffset y:(int)yOffset w:(int)width h:(int)height
817{
818 WINPR_ASSERT(mfc);
819
820 mfc->yCurrentScroll = yOffset;
821 mfc->xCurrentScroll = xOffset;
822 mfc->client_height = height;
823 mfc->client_width = width;
824}

Field Documentation

◆ argc

- (int) argc
protected

Definition at line 44 of file MRDPView.h.

◆ argv

- (char**) argv
protected

Definition at line 45 of file MRDPView.h.

◆ bitmap_context

- (CGContextRef) bitmap_context
protected

Definition at line 42 of file MRDPView.h.

◆ bmiRep

- (NSBitmapImageRep*) bmiRep
protected

Definition at line 34 of file MRDPView.h.

◆ context

- (rdpContext*) context
protected

Definition at line 41 of file MRDPView.h.

◆ currentCursor

- (NSCursor*) currentCursor
protected

Definition at line 38 of file MRDPView.h.

◆ cursors

- (NSMutableArray*) cursors
protected

Definition at line 35 of file MRDPView.h.

◆ firstCreateWindow

- (BOOL) firstCreateWindow
protected

Definition at line 49 of file MRDPView.h.

◆ initialized

- (BOOL) initialized
protected

Definition at line 47 of file MRDPView.h.

◆ instance

- (freerdp*) instance
protected

Definition at line 40 of file MRDPView.h.

◆ isMoveSizeInProgress

- (BOOL) isMoveSizeInProgress
protected

Definition at line 50 of file MRDPView.h.

◆ kbdModFlags

- (DWORD) kbdModFlags
protected

Definition at line 46 of file MRDPView.h.

◆ mfc

- (mfContext*) mfc
protected

Definition at line 33 of file MRDPView.h.

◆ pasteboard_changecount

- (int) pasteboard_changecount

Definition at line 57 of file MRDPView.h.

◆ pasteboard_format

- (int) pasteboard_format

Definition at line 58 of file MRDPView.h.

◆ pasteboard_rd

- (NSPasteboard*) pasteboard_rd

Definition at line 55 of file MRDPView.h.

◆ pasteboard_timer

- (NSTimer*) pasteboard_timer
protected

Definition at line 37 of file MRDPView.h.

◆ pasteboard_wr

- (NSPasteboard*) pasteboard_wr

Definition at line 56 of file MRDPView.h.

◆ pixel_data

- (char*) pixel_data
protected

Definition at line 43 of file MRDPView.h.

◆ prevWinPosition

- (NSRect) prevWinPosition
protected

Definition at line 39 of file MRDPView.h.

◆ savedDragLocation

- (NSPoint) savedDragLocation
protected

Definition at line 48 of file MRDPView.h.

◆ saveInitialDragLoc

- (BOOL) saveInitialDragLoc
protected

Definition at line 52 of file MRDPView.h.

◆ skipMoveWindowOnce

- (BOOL) skipMoveWindowOnce
protected

Definition at line 53 of file MRDPView.h.

◆ skipResizeOnce

- (BOOL) skipResizeOnce
protected

Definition at line 51 of file MRDPView.h.

◆ windows

- (NSMutableArray*) windows
protected

Definition at line 36 of file MRDPView.h.

Property Documentation

◆ is_connected

- (int) is_connected
readwriteatomicassign

Definition at line 59 of file MRDPView.h.


The documentation for this class was generated from the following files: