Skip to content

Commit

Permalink
ios: add method for calculating DPI and read UIscreen scale
Browse files Browse the repository at this point in the history
  • Loading branch information
tito committed Nov 2, 2012
1 parent 2a0d440 commit f24fc68
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/ios/ios.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ cdef extern from "ios_wrapper.h":
int ios_send_email(char *subject, char *text, char *mimetype, char
*filename, char *filename_alias, ios_send_email_cb cb, void *userdata)
void ios_open_url(char *url)
float ios_uiscreen_get_scale()
int ios_uiscreen_get_dpi()

cdef void _send_email_done(char *status, void *data):
cdef object callback = <object>data
Expand Down Expand Up @@ -159,3 +161,13 @@ def send_email(subject, text, mimetype=None, filename=None, filename_alias=None,
return 0

return 1

def get_scale():
'''Return the UIScreen scale (1 on iPad, 2 on iPad 3)
'''
return ios_uiscreen_get_scale()

def get_dpi():
'''Return the approximate DPI of the screen
'''
return ios_uiscreen_get_dpi()
19 changes: 19 additions & 0 deletions src/ios/ios_mail.m
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,22 @@ int ios_send_email(char *subject, char *text, char *mimetype, char *filename,
return 1;
}


float ios_uiscreen_get_scale() {
float scale = 1.0;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
scale = [[UIScreen mainScreen] scale];
};
return scale;
}

int ios_uiscreen_get_dpi() {
float scale = ios_uiscreen_get_scale();
float dpi = 160 * scale;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
dpi = 132 * scale;
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
dpi = 163 * scale;
}
return dpi;
}
2 changes: 2 additions & 0 deletions src/ios/ios_wrapper.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef __IOS_WRAPPER
#define __IOS_WRAPPER

float ios_uiscreen_get_scale(void);
int ios_uiscreen_get_dpi(void);
void ios_open_url(char *url);

typedef void (*ios_send_email_cb)(char *, void *);
Expand Down

0 comments on commit f24fc68

Please sign in to comment.