Skip to content

Instantly share code, notes, and snippets.

@rsudev
Forked from kumy/inset.py
Last active September 23, 2015 09:39
Show Gist options
  • Save rsudev/d5619e493a406365666f to your computer and use it in GitHub Desktop.
Save rsudev/d5619e493a406365666f to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""
Compute INSET positions.
For map, tere are two fixpoints for inset calculation, mdpi (33x40) and hdpi (45x51)
The other ratios are fixed, and defined at
http://developer.android.com/guide/practices/screens_support.html#DesigningResources
"""
"""
Define here the expected marker size.
"""
# Background marker
marker_width_mdpi = 33
marker_height_mdpi = 40
center_adjust_top_mdpi = 3
marker_width_hdpi = 45
marker_height_hdpi = 51
marker_width_list = 34
marker_height_list = 34
# cache icon logo
cache_icon_mdpi = 22
cache_icon_hdpi = 36
cache_icon_list = 30
list_bottom_offset = int((marker_height_list - cache_icon_list) / 2 * 3 / 2)
# overlays expected width/height
over_tl = 12
over_tr = 12
over_br = 17
over_bl = 17
over_br_list = 12
over_bl_list = 12
"""
Static values
"""
marker_queue_mdpi = marker_height_mdpi - marker_width_mdpi
marker_mdpi = marker_width_mdpi
marker_queue_hdpi = marker_height_hdpi - marker_width_hdpi
marker_hdpi = marker_width_hdpi
marker_queue_list = marker_height_list - marker_width_list
marker_list = marker_width_list
ratio_ldpi = 0.75
ratio_mdpi = 1
ratio_hdpi = 1.5
ratio_xhdpi = 2
ratio_xxhdpi = 3
ratio_xxxhdpi = 4
ratios1 = [ ratio_ldpi, ratio_mdpi]
ratios2 = [ ratio_hdpi, ratio_xhdpi, ratio_xxhdpi, ratio_xxxhdpi ]
def print_values(title, left, top, right, bottom):
values = []
for ratio in ratios1:
values.append("{ %d, %d, %d, %d }" % ((left * ratio), (top * ratio), (right * ratio), (bottom * ratio)))
for ratio in ratios2:
values.append("{ %d, %d, %d, %d }" % ((left * ratio), (top * ratio), (right * ratio), (bottom * ratio)))
print (" private static final int[][] %s = { %s };" % (title, ', '.join(values)))
def print_values2(title, left, top, right, bottom, left2, top2, right2, bottom2):
values = []
for ratio in ratios1:
values.append("{ %d, %d, %d, %d }" % ((left * ratio), (top * ratio), (right * ratio), (bottom * ratio)))
for ratio in ratios2:
values.append("{ %d, %d, %d, %d }" % ((left2 * ratio / ratio_hdpi), (top2 * ratio / ratio_hdpi), (right2 * ratio / ratio_hdpi), (bottom2 * ratio / ratio_hdpi)))
print (" private static final int[][] %s = { %s };" % (title, ', '.join(values)))
# center (TYPE)
center_cache_mdpi = int((marker_mdpi - cache_icon_mdpi) / 2)
center_cache_hdpi = int((marker_hdpi - cache_icon_hdpi) / 2)
print_values2("INSET_TYPE", center_cache_mdpi, center_cache_mdpi + center_adjust_top_mdpi, marker_mdpi - cache_icon_mdpi - center_cache_mdpi, marker_height_mdpi - center_cache_mdpi - cache_icon_mdpi - center_adjust_top_mdpi, center_cache_hdpi, center_cache_hdpi, marker_hdpi - cache_icon_hdpi - center_cache_hdpi, marker_height_hdpi - center_cache_hdpi - cache_icon_hdpi)
center_cache_list = int((marker_list - cache_icon_list) / 2)
print_values("INSET_TYPE_LIST", center_cache_list, center_cache_list, marker_list - cache_icon_list - center_cache_list, marker_height_list - center_cache_list - cache_icon_list)
# Top right (OWN)
tr_overlay_mdpi = marker_mdpi - over_tr
tr_overlay_hdpi = marker_hdpi - over_tr * ratio_hdpi
print_values2("INSET_OWN", tr_overlay_mdpi, 0, 0, tr_overlay_mdpi + marker_queue_mdpi, tr_overlay_hdpi, 0, 0, tr_overlay_hdpi + marker_queue_hdpi)
tr_overlay_list = marker_list - over_tr
print_values("INSET_OWN_LIST", tr_overlay_list, 0, 0, tr_overlay_list + marker_queue_list)
# Top left (FOUND)
tl_overlay_mdpi = marker_mdpi - over_tl
tl_overlay_hdpi = marker_hdpi - over_tl * ratio_hdpi
print_values2("INSET_FOUND", 0, 0, tl_overlay_mdpi, tl_overlay_mdpi + marker_queue_mdpi, 0, 0, tl_overlay_hdpi, tl_overlay_hdpi + marker_queue_hdpi)
tl_overlay_list = marker_list - over_tl
print_values("INSET_FOUND_LIST", 0, 0, tl_overlay_list, tl_overlay_list + marker_queue_list)
# Bottom right (USER MODIFIED COORD)
br_overlay_mdpi = marker_mdpi - over_br
br_overlay_hdpi = marker_hdpi - over_br * ratio_hdpi
print_values2("INSET_USERMODIFIEDCOORDS", br_overlay_mdpi, br_overlay_mdpi + marker_queue_mdpi, 0, 0, br_overlay_hdpi, br_overlay_hdpi + marker_queue_hdpi, 0, 0)
br_overlay_list = marker_list - over_br_list
print_values("INSET_USERMODIFIEDCOORDS_LIST", br_overlay_list, br_overlay_list + marker_queue_list - list_bottom_offset, 0, list_bottom_offset)
# Bottom left (PERSONALNOTE)
bl_overlay_mdpi = marker_mdpi - over_bl
bl_overlay_hdpi = marker_hdpi - over_bl * ratio_hdpi
print_values2("INSET_PERSONALNOTE", 0, bl_overlay_mdpi + marker_queue_mdpi, bl_overlay_mdpi, 0, 0, bl_overlay_hdpi + marker_queue_hdpi, bl_overlay_hdpi, 0)
bl_overlay_list = marker_list - over_bl_list
print_values("INSET_PERSONALNOTE_LIST", 0, bl_overlay_list + marker_queue_list - list_bottom_offset, bl_overlay_list, list_bottom_offset)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment