Merge pull request #63826 from deakcor/dev_clipboard
Add `clipboard_has/get_image` methods to DisplayServer
This commit is contained in:
commit
0c2399d6ec
7 changed files with 126 additions and 1 deletions
|
|
@ -328,6 +328,9 @@ public:
|
|||
|
||||
virtual void clipboard_set(const String &p_text) override;
|
||||
virtual String clipboard_get() const override;
|
||||
virtual Ref<Image> clipboard_get_image() const override;
|
||||
virtual bool clipboard_has() const override;
|
||||
virtual bool clipboard_has_image() const override;
|
||||
|
||||
virtual int get_screen_count() const override;
|
||||
virtual int get_primary_screen() const override;
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
#include "core/io/marshalls.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "drivers/png/png_driver_common.h"
|
||||
#include "main/main.h"
|
||||
#include "scene/resources/atlas_texture.h"
|
||||
#include "scene/resources/image_texture.h"
|
||||
|
|
@ -2271,6 +2272,37 @@ String DisplayServerMacOS::clipboard_get() const {
|
|||
return ret;
|
||||
}
|
||||
|
||||
Ref<Image> DisplayServerMacOS::clipboard_get_image() const {
|
||||
Ref<Image> image;
|
||||
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
|
||||
NSString *result = [pasteboard availableTypeFromArray:[NSArray arrayWithObjects:NSPasteboardTypeTIFF, NSPasteboardTypePNG, nil]];
|
||||
if (!result) {
|
||||
return image;
|
||||
}
|
||||
NSData *data = [pasteboard dataForType:result];
|
||||
if (!data) {
|
||||
return image;
|
||||
}
|
||||
NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:data];
|
||||
NSData *pngData = [bitmap representationUsingType:NSPNGFileType properties:@{}];
|
||||
image.instantiate();
|
||||
PNGDriverCommon::png_to_image((const uint8_t *)pngData.bytes, pngData.length, false, image);
|
||||
return image;
|
||||
}
|
||||
|
||||
bool DisplayServerMacOS::clipboard_has() const {
|
||||
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
|
||||
NSArray *classArray = [NSArray arrayWithObject:[NSString class]];
|
||||
NSDictionary *options = [NSDictionary dictionary];
|
||||
return [pasteboard canReadObjectForClasses:classArray options:options];
|
||||
}
|
||||
|
||||
bool DisplayServerMacOS::clipboard_has_image() const {
|
||||
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
|
||||
NSString *result = [pasteboard availableTypeFromArray:[NSArray arrayWithObjects:NSPasteboardTypeTIFF, NSPasteboardTypePNG, nil]];
|
||||
return result;
|
||||
}
|
||||
|
||||
int DisplayServerMacOS::get_screen_count() const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue