FreeRDP
Loading...
Searching...
No Matches
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 671 of file MRDPView.m.

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

◆ pause

- (void) pause

Definition at line 671 of file MRDPView.m.

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

◆ 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 if (PubSub_OnEmbedWindow(context->pubSub, context, &e) < 0)
95 return -1;
96
97 NSScreen *screen = [[NSScreen screens] objectAtIndex:0];
98 NSRect screenFrame = [screen frame];
99
100 if (freerdp_settings_get_bool(settings, FreeRDP_Fullscreen))
101 {
102 if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, screenFrame.size.width))
103 return -1;
104 if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, screenFrame.size.height))
105 return -1;
106 [self enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
107 }
108 else
109 {
110 [self exitFullScreenModeWithOptions:nil];
111 }
112
113 mfc->client_height = freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight);
114 mfc->client_width = freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth);
115
116 if (!(mfc->common.thread =
117 CreateThread(nullptr, 0, mac_client_thread, (void *)context, 0, &mfc->mainThreadId)))
118 {
119 WLog_ERR(TAG, "failed to create client thread");
120 return -1;
121 }
122
123 return 0;
124}
FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id, UINT32 val)
Sets a UINT32 settings value.
WINPR_ATTR_NODISCARD FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id)
Returns a UINT32 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings *settings, FreeRDP_Settings_Keys_Bool id)
Returns a boolean settings value.

◆ releaseResources

- (void) releaseResources

Definition at line 671 of file MRDPView.m.

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

◆ resume

- (void) resume

Definition at line 671 of file MRDPView.m.

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

◆ setCursor:

- (void) setCursor: (NSCursor *)  cursor

Definition at line 126 of file MRDPView.m.

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

◆ setScrollOffset:y:w:h:

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

Definition at line 671 of file MRDPView.m.

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

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: