index : kobo/glo-hd/linux-3.0.35-kobo

master

kobo glo HD kernel from kobolabs https://github.com/kobolabs/Kobo-Reader/tree/master/hw/imx6sl-glohd | James

aboutsummaryrefslogtreecommitdiffstats

log msg

author

committer

range

path: root/ipc/util.h

diff options

context:

1

2

3

4

5

6

7

8

9

10

15

20

25

30

35

40

space:

include

ignore

mode:

unified

ssdiff

stat only

|

author | root <root@kobo-hd.trout.james.local> | 2015-12-26 09:28:31 +0000
committer | root <root@kobo-hd.trout.james.local> | 2015-12-26 09:28:31 +0000
commit | 0cb5b29a9ed2d3e887e9c92bf3c6f05f456da92b (patch)
tree | 8bcfbe436a0c815ddca1ed92a37d6b9ada01b2ca /ipc/util.h
parent | 849369d6c66d3054688672f97d31fceb8e8230fb (diff)

download

linux-3.0.35-kobo-0cb5b29a9ed2d3e887e9c92bf3c6f05f456da92b.tar.gz
linux-3.0.35-kobo-0cb5b29a9ed2d3e887e9c92bf3c6f05f456da92b.tar.bz2
linux-3.0.35-kobo-0cb5b29a9ed2d3e887e9c92bf3c6f05f456da92b.zip

fishHEADmaster

Diffstat (limited to 'ipc/util.h')

0 files changed, 0 insertions, 0 deletions

generated by cgit v1.2.3 (git 2.25.1) at 2025-09-04 23:02:05 +0000

111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130

#import "ViewController.h"
#import "Renderer.h"
#include "imgui.h"

#if TARGET_OS_OSX
#include "imgui_impl_osx.h"
#endif

@interface ViewController ()
@property (nonatomic, readonly) MTKView *mtkView;
@property (nonatomic, strong) Renderer *renderer;
@end

@implementation ViewController

- (MTKView *)mtkView {
return (MTKView *)self.view;
}

- (void)viewDidLoad
{
[super viewDidLoad];

self.mtkView.device = MTLCreateSystemDefaultDevice();

if (!self.mtkView.device) {
NSLog(@"Metal is not supported");
abort();
}

self.renderer = [[Renderer alloc] initWithView:self.mtkView];

[self.renderer mtkView:self.mtkView drawableSizeWillChange:self.mtkView.bounds.size];

self.mtkView.delegate = self.renderer;

#if TARGET_OS_OSX
// Add a tracking area in order to receive mouse events whenever the mouse is within the bounds of our view
NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect
options:NSTrackingMouseMoved | NSTrackingInVisibleRect | NSTrackingActiveAlways
owner:self
userInfo:nil];
[self.view addTrackingArea:trackingArea];

// If we want to receive key events, we either need to be in the responder chain of the key view,
// or else we can install a local monitor. The consequence of this heavy-handed approach is that
// we receive events for all controls, not just Dear ImGui widgets. If we had native controls in our
// window, we'd want to be much more careful than just ingesting the complete event stream, though we
// do make an effort to be good citizens by passing along events when Dear ImGui doesn't want to capture.
NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel;
[NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) {
BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view);
if (event.type == NSEventTypeKeyDown && wantsCapture) {
return nil;
} else {
return event;
}

}];

ImGui_ImplOSX_Init();
#endif
}

#if TARGET_OS_OSX

- (void)mouseMoved:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}

- (void)mouseDown:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}

- (void)mouseUp:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}

- (void)mouseDragged:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}

- (void)scrollWheel:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}

#elif TARGET_OS_IOS

// This touch mapping is super cheesy/hacky. We treat any touch on the screen
// as if it were a depressed left mouse button, and we don't bother handling
// multitouch correctly at all. This causes the "cursor" to behave very erratically
// when there are multiple active touches. But for demo purposes, single-touch
// interaction actually works surprisingly well.
- (void)updateIOWithTouchEvent:(UIEvent *)event {
UITouch *anyTouch = event.allTouches.anyObject;
CGPoint touchLocation = [anyTouch locationInView:self.view];
ImGuiIO &io = ImGui::GetIO();
io.MousePos = ImVec2(touchLocation.x, touchLocation.y);

BOOL hasActiveTouch = NO;
for (UITouch *touch in event.allTouches) {
if (touch.phase != UITouchPhaseEnded && touch.phase != UITouchPhaseCancelled) {
hasActiveTouch = YES;
break;
}
}
io.MouseDown[0] = hasActiveTouch;
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}

- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}

#endif

@end

generated by cgit v1.2.3 (git 2.25.1) at 2025-09-04 23:02:05 +0000