mirror of
https://github.com/ulbwazhine/MockupEngineer.git
synced 2024-11-27 03:03:45 +03:00
2022.02.21.8
This commit is contained in:
parent
2944496e47
commit
a705ab5785
|
@ -1,3 +1,3 @@
|
|||
global-include *.md *.png *.ini *.txt
|
||||
global-include *.md *.png *.ini *.txt *.py
|
||||
global-exclude ./generated
|
||||
exclude deploy.py readme-template.md .gitignore
|
|
@ -7,7 +7,10 @@ from PIL import Image
|
|||
|
||||
from MockupEngineer import templates
|
||||
from MockupEngineer.templates import Device, ALL_TEMPLATES
|
||||
from MockupEngineer.utils import random_string
|
||||
from MockupEngineer.utils import random_string, get_title
|
||||
from MockupEngineer.utils.about import author
|
||||
|
||||
__author__ = author()
|
||||
|
||||
generated_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'generated')
|
||||
if not os.path.exists(generated_path):
|
||||
|
@ -35,9 +38,12 @@ class MockupEngineerInstance:
|
|||
dicted = dict()
|
||||
for template in self.templates:
|
||||
if template.type in dicted.keys():
|
||||
dicted[template.type].append(template)
|
||||
dicted[template.type]["templates"].append(template)
|
||||
else:
|
||||
dicted[template.type] = [template]
|
||||
dicted[template.type] = {
|
||||
"title": get_title(template.type),
|
||||
"templates": [template]
|
||||
}
|
||||
return dicted
|
||||
|
||||
def generate(self, template_id: str,
|
||||
|
|
|
@ -1,29 +1,82 @@
|
|||
import os
|
||||
import webbrowser
|
||||
|
||||
from MockupEngineer import MockupEngineerInstance
|
||||
from MockupEngineer import MockupEngineerInstance, Device
|
||||
|
||||
|
||||
def main():
|
||||
mockup = MockupEngineerInstance()
|
||||
def cls():
|
||||
os.system('cls' if os.name == 'nt' else 'clear')
|
||||
|
||||
i = 0
|
||||
for template in mockup.templates:
|
||||
print('[{}] {} {} [{}] ({})'.format(i, template.manufacturer, template.name, template.resolution, template.year))
|
||||
i += 1
|
||||
template = mockup.templates[int(input('Choose device: '))]
|
||||
print('- - - - - - - - - -')
|
||||
i = 0
|
||||
for color in template.colors:
|
||||
print('[{}] {}'.format(i, color.color))
|
||||
i += 1
|
||||
color = template.colors[int(input('Choose color: '))].color
|
||||
print('- - - - - - - - - -')
|
||||
screenshot = input('Enter path to screenshot: ')
|
||||
print('- - - - - - - - - -\nWorking...')
|
||||
mockup = mockup.generate(template.id, screenshot, color, external_storage=True)
|
||||
print('- - - - - - - - - -\nSuccess: {}'.format(mockup))
|
||||
webbrowser.open(mockup, new=0, autoraise=True)
|
||||
|
||||
class Main:
|
||||
def __init__(self):
|
||||
print('Loading modules...')
|
||||
self.mockup = MockupEngineerInstance()
|
||||
cls()
|
||||
self.select_category()
|
||||
|
||||
def exit(self):
|
||||
cls()
|
||||
exit()
|
||||
|
||||
def input(self, placeholder: str, func, args=()):
|
||||
cls()
|
||||
return func(input(placeholder), *args)
|
||||
|
||||
def menu(self, **variants):
|
||||
variants = {a.replace('var', ''): b for a, b in variants.items()}
|
||||
for a, (b, _, _) in variants.items():
|
||||
print(' [{}] {}'.format(a, b))
|
||||
val = input('Enter value: ')
|
||||
if val not in variants:
|
||||
cls()
|
||||
print('Invalid value, try again:')
|
||||
return self.menu(**variants)
|
||||
else:
|
||||
variants[val][1](*variants[val][2])
|
||||
|
||||
def select_category(self):
|
||||
cls()
|
||||
print('Select device category:')
|
||||
self.menu(**{str(num + 1): (a['title'], self.select_template, (b,)) for num, (b, a) in
|
||||
enumerate(self.mockup.get_templates().items())},
|
||||
var0=('Exit', self.exit, ()))
|
||||
|
||||
def select_template(self, category: str):
|
||||
cls()
|
||||
print('Choose a device:')
|
||||
self.menu(**{str(num + 1): (
|
||||
'{} {} ({}) [{}]'.format(a.manufacturer, a.name, a.resolution, a.year), self.select_color, (a.id,)) for
|
||||
num, a
|
||||
in enumerate(self.mockup.get_templates()[category]['templates'])},
|
||||
var0=('Back', self.select_category, ()))
|
||||
|
||||
def select_color(self, template_id):
|
||||
cls()
|
||||
print('Choose color:')
|
||||
template = self.mockup.get_template(template_id)
|
||||
self.menu(
|
||||
**{str(num + 1): (a.color, self.enter_path, (a.color, template)) for num, a in enumerate(template.colors)},
|
||||
var0=('Back', self.select_template, (template.type,)))
|
||||
|
||||
def enter_path(self, color: str, template: Device):
|
||||
self.input('Enter the path to the screenshot: ', self.generate, (color, template))
|
||||
|
||||
def generate(self, path: str, color: str, template: Device):
|
||||
if not os.path.isfile(path):
|
||||
return self.input('File does not exist, try again: ', self.generate, (color, template))
|
||||
if not (path.lower().endswith('.png') or path.lower().endswith('.jpg') or path.lower().endswith('.jpeg')):
|
||||
return self.input('MockupEngineer supports .png and .jpeg screenshots, try again: ', self.generate,
|
||||
(color, template))
|
||||
cls()
|
||||
print('Generating...')
|
||||
url = self.mockup.generate(screenshot_path=path, template_id=template.id, color=color, external_storage=True)
|
||||
cls()
|
||||
print('Success: {}'.format(url))
|
||||
webbrowser.open(url)
|
||||
self.menu(var1=('Back', self.select_category, ()),
|
||||
var0=('Exit', self.exit, ()))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Main()
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
import datetime
|
||||
import hashlib
|
||||
import os
|
||||
|
||||
from configparser import ConfigParser
|
||||
from configparser import ConfigParser, NoOptionError, NoSectionError
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from MockupEngineer.utils.about import author, author_url
|
||||
|
||||
templates_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')
|
||||
|
||||
|
||||
|
@ -36,6 +39,13 @@ class DeviceImage:
|
|||
rotate: bool
|
||||
|
||||
|
||||
@dataclass(frozen=False)
|
||||
class About:
|
||||
author: str
|
||||
url: str
|
||||
created: str
|
||||
|
||||
|
||||
@dataclass(frozen=False)
|
||||
class Device:
|
||||
def __init__(self, path: str):
|
||||
|
@ -66,8 +76,45 @@ class Device:
|
|||
mask_path=os.path.join(templates_path, path, 'mask.png') if config.get('image', 'mask') == 'true' else None,
|
||||
rotate=config.get('image', 'rotate') == 'true')
|
||||
|
||||
self.__path__ = path
|
||||
|
||||
self.about = About(
|
||||
author=self.__get_author__(config),
|
||||
url=self.__get_url__(config),
|
||||
created=self.__get_creation_date__(config)
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return '<MockupEngineer.templates.Device {} {} {}>'.format(self.manufacturer, self.name, self.year)
|
||||
|
||||
def __post_init__(self):
|
||||
self.colors = sorted(self.colors, key=lambda a: a.color)
|
||||
|
||||
def __write_config__(self, config: ConfigParser) -> None:
|
||||
with open(os.path.join(templates_path, self.__path__, 'config.ini'), 'w', encoding='utf8') as f:
|
||||
config.write(f)
|
||||
|
||||
def __get_author__(self, config: ConfigParser) -> str:
|
||||
try:
|
||||
return config.get('about', 'author')
|
||||
except (NoOptionError, NoSectionError):
|
||||
if 'about' not in config.sections():
|
||||
config.add_section('about')
|
||||
config['about']['author'] = author()
|
||||
self.__write_config__(config)
|
||||
|
||||
def __get_url__(self, config: ConfigParser) -> str:
|
||||
try:
|
||||
return config.get('about', 'url')
|
||||
except (NoOptionError, NoSectionError):
|
||||
if 'about' not in config.sections():
|
||||
config.add_section('about')
|
||||
config['about']['url'] = author_url()
|
||||
self.__write_config__(config)
|
||||
|
||||
def __get_creation_date__(self, config: ConfigParser) -> str:
|
||||
dates = [os.path.getmtime(str(os.path.join(templates_path, self.__path__, item))) for _, item in config['colors'].items()]
|
||||
date = datetime.datetime.utcfromtimestamp(max(dates)) if dates else datetime.datetime.utcnow()
|
||||
config['about']['created'] = date.strftime('%d.%m.%Y')
|
||||
self.__write_config__(config)
|
||||
return config.get('about', 'created')
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Samsung
|
||||
name = Galaxy S20
|
||||
|
@ -20,3 +18,9 @@ x = 200
|
|||
y = 200
|
||||
mask = true
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Samsung
|
||||
name = Galaxy S20 Ultra
|
||||
|
@ -19,3 +17,9 @@ x = 200
|
|||
y = 200
|
||||
mask = true
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iMac 21"
|
||||
|
@ -18,3 +16,9 @@ x = 173
|
|||
y = 178
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iMac 24"
|
||||
|
@ -24,3 +22,9 @@ x = 235
|
|||
y = 217
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 03.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPad 9
|
||||
|
@ -20,3 +18,9 @@ x = 150
|
|||
y = 275
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPad Air 4
|
||||
|
@ -22,3 +20,9 @@ x = 150
|
|||
y = 150
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPad Mini 5
|
||||
|
@ -20,3 +18,9 @@ x = 150
|
|||
y = 330
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPad Pro 4 11"
|
||||
|
@ -19,3 +17,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPad Pro 4 12.9"
|
||||
|
@ -19,3 +17,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 12
|
||||
|
@ -22,3 +20,9 @@ x = 180
|
|||
y = 180
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 12 Mini
|
||||
|
@ -22,3 +20,9 @@ x = 160
|
|||
y = 160
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 12 Pro
|
||||
|
@ -21,3 +19,9 @@ x = 180
|
|||
y = 180
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 12 Pro Max
|
||||
|
@ -21,3 +19,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 13
|
||||
|
@ -22,3 +20,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 19.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 13 Mini
|
||||
|
@ -22,3 +20,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 19.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 13 Pro
|
||||
|
@ -21,3 +19,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 19.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone 13 Pro Max
|
||||
|
@ -21,3 +19,9 @@ x = 201
|
|||
y = 202
|
||||
mask = true
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 19.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone SE
|
||||
|
@ -20,3 +18,9 @@ x = 150
|
|||
y = 300
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 31.01.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone Xr
|
||||
|
@ -23,3 +21,9 @@ x = 110
|
|||
y = 110
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone Xs
|
||||
|
@ -20,3 +18,9 @@ x = 162
|
|||
y = 142
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = iPhone Xs Max
|
||||
|
@ -20,3 +18,9 @@ x = 182
|
|||
y = 172
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = MacBook 12"
|
||||
|
@ -19,3 +17,9 @@ x = 286
|
|||
y = 180
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = MacBook Air (M1)
|
||||
|
@ -18,3 +16,9 @@ x = 252
|
|||
y = 142
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 03.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = MacBook Pro 13"
|
||||
|
@ -18,3 +16,9 @@ x = 388
|
|||
y = 176
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = MacBook Pro 15"
|
||||
|
@ -18,3 +16,9 @@ x = 328
|
|||
y = 167
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = MacBook Pro 16"
|
||||
|
@ -18,3 +16,9 @@ x = 340
|
|||
y = 224
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = MacBook Pro 16"
|
||||
|
@ -19,3 +17,9 @@ x = 406
|
|||
y = 123
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Google
|
||||
name = Pixel
|
||||
|
@ -20,3 +18,9 @@ x = 149
|
|||
y = 317
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Google
|
||||
name = Pixel 4
|
||||
|
@ -20,3 +18,9 @@ x = 100
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Google
|
||||
name = Pixel 4 XL
|
||||
|
@ -20,3 +18,9 @@ x = 100
|
|||
y = 250
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Google
|
||||
name = Pixel 5
|
||||
|
@ -19,3 +17,9 @@ x = 200
|
|||
y = 200
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Google
|
||||
name = Pixelbook Go
|
||||
|
@ -18,3 +16,9 @@ x = 236
|
|||
y = 185
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = Pro Display XDR
|
||||
|
@ -18,3 +16,9 @@ x = 140
|
|||
y = 133
|
||||
mask = false
|
||||
rotate = false
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# https://github.com/ulbwazhine/MockupEngineer
|
||||
|
||||
[info]
|
||||
manufacturer = Apple
|
||||
name = Watch Series 6 44mm
|
||||
|
@ -27,3 +25,9 @@ x = 129
|
|||
y = 241
|
||||
mask = false
|
||||
rotate = true
|
||||
|
||||
[about]
|
||||
author = ulbwa
|
||||
url = https://ulbwa.xyz
|
||||
created = 01.02.2022
|
||||
|
||||
|
|
|
@ -3,6 +3,9 @@ import functools
|
|||
import random
|
||||
import string
|
||||
|
||||
specified_keys = {"pc": 'Computers',
|
||||
'wear': 'Wearable devices'}
|
||||
|
||||
|
||||
def run_sync(func, *args, **kwargs):
|
||||
return asyncio.get_event_loop() \
|
||||
|
@ -14,3 +17,7 @@ def run_sync(func, *args, **kwargs):
|
|||
|
||||
def random_string(n: int):
|
||||
return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(n))
|
||||
|
||||
|
||||
def get_title(a: str):
|
||||
return '{}s'.format(a.title()) if a not in specified_keys.keys() else specified_keys[a]
|
||||
|
|
10
MockupEngineer/utils/about.py
Normal file
10
MockupEngineer/utils/about.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
import os
|
||||
|
||||
|
||||
def author() -> str:
|
||||
return 'ulbwa'
|
||||
|
||||
|
||||
def author_url() -> str:
|
||||
return 'https://ulbwa.xyz'
|
||||
|
|
@ -43,9 +43,7 @@ def create_readme():
|
|||
mockup = MockupEngineerInstance()
|
||||
|
||||
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'readme-template.md'), 'r') as f:
|
||||
data = Template(f.read()).render(templates=mockup.get_templates(), os=os,
|
||||
specified_keys={"pc": 'Computers',
|
||||
'wear': 'Wearable devices'})
|
||||
data = Template(f.read()).render(templates=mockup.get_templates(), os=os, enumerate=enumerate)
|
||||
|
||||
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'readme.md'), 'w') as f:
|
||||
f.write(data)
|
||||
|
@ -78,7 +76,7 @@ def run_pypi():
|
|||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# create_readme()
|
||||
create_readme()
|
||||
# create_examples()
|
||||
# bump_version()
|
||||
bump_version()
|
||||
run_pypi()
|
||||
|
|
|
@ -63,7 +63,7 @@ from MockupEngineer import MockupEngineerInstance
|
|||
|
||||
mockup = MockupEngineerInstance()
|
||||
|
||||
mockup.generate(template=mockup.templates[0],
|
||||
mockup.generate(template_id=mockup.templates[0].id,
|
||||
screenshot_path='/path/to/screenshot',
|
||||
color=mockup.templates[0].colors[0].color)
|
||||
```
|
||||
|
@ -73,7 +73,7 @@ mockup.generate(template=mockup.templates[0],
|
|||
```
|
||||
|
||||
#### `MockupEngineerInstance.generate` parameters:
|
||||
* `template`: *Template* — Device template model, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*.
|
||||
* `template_id`: *int* — Device template id, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*.
|
||||
* `screenshot_path`: *str* — Absolute path to the image in **JPG, PNG format**.
|
||||
* `color`: *Optional[str]* — Optional parameter, force device color. Must be passed according to *Template.colors[**n**].color*.
|
||||
* `orientation`: *str* — Optional parameter, force device orientation. Must be *landscape* or *portrait*.
|
||||
|
@ -83,10 +83,13 @@ mockup.generate(template=mockup.templates[0],
|
|||
|
||||
Full list of all currently supported mockups
|
||||
{% for a, b in templates.items() %}
|
||||
### {{'{}s'.format(a.title()) if a not in specified_keys.keys() else specified_keys[a]}}
|
||||
{% for c in b %}
|
||||
### {{b.title}}
|
||||
{% for c in b.templates %}
|
||||
* [{{c.manufacturer}} {{c.name}}](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/{{os.path.basename(os.path.dirname(c.preview))}}/preview.png) ({{c.year}}) [{{c.resolution}}]
|
||||
{% for d in c.colors %} * *{{d.color}}*
|
||||
* Author: [@{{c.about.author}}]({{c.about.url}}) [{{c.about.created}}]
|
||||
* ID: `{{c.id}}`
|
||||
* Colors:
|
||||
{% for d in c.colors %} * * *{{d.color}}*
|
||||
{% endfor %}{% endfor %}{% endfor %}
|
||||
You can help the project by adding support for new mockups by contributing on [GitHub](https://github.com/ulbwazhine/MockupEngineer).
|
||||
|
||||
|
|
326
readme.md
326
readme.md
|
@ -63,7 +63,7 @@ from MockupEngineer import MockupEngineerInstance
|
|||
|
||||
mockup = MockupEngineerInstance()
|
||||
|
||||
mockup.generate(template=mockup.templates[0],
|
||||
mockup.generate(template_id=mockup.templates[0].id,
|
||||
screenshot_path='/path/to/screenshot',
|
||||
color=mockup.templates[0].colors[0].color)
|
||||
```
|
||||
|
@ -73,7 +73,7 @@ mockup.generate(template=mockup.templates[0],
|
|||
```
|
||||
|
||||
#### `MockupEngineerInstance.generate` parameters:
|
||||
* `template`: *Template* — Device template model, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*.
|
||||
* `template_id`: *int* — Device template id, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*.
|
||||
* `screenshot_path`: *str* — Absolute path to the image in **JPG, PNG format**.
|
||||
* `color`: *Optional[str]* — Optional parameter, force device color. Must be passed according to *Template.colors[**n**].color*.
|
||||
* `orientation`: *str* — Optional parameter, force device orientation. Must be *landscape* or *portrait*.
|
||||
|
@ -86,188 +86,290 @@ Full list of all currently supported mockups
|
|||
### Phones
|
||||
|
||||
* [Samsung Galaxy S20](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/galaxys20/preview.png) (2020) [1440 x 3200]
|
||||
* *Cloud Blue*
|
||||
* *Cosmic Grey*
|
||||
* *Pink*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `84b30848f1af25c9a3bff6583bbbe75a`
|
||||
* Colors:
|
||||
* * *Cloud Blue*
|
||||
* * *Cosmic Grey*
|
||||
* * *Pink*
|
||||
|
||||
* [Samsung Galaxy S20 Ultra](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/galaxys20ultra/preview.png) (2020) [1440 x 3200]
|
||||
* *Cosmic Black*
|
||||
* *Cosmic Grey*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `c4168e005483c3579bef74898a4b0384`
|
||||
* Colors:
|
||||
* * *Cosmic Black*
|
||||
* * *Cosmic Grey*
|
||||
|
||||
* [Apple iPhone 12](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12/preview.png) (2020) [1170 x 2532]
|
||||
* *Black*
|
||||
* *Blue*
|
||||
* *Green*
|
||||
* *Product Red*
|
||||
* *White*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `1648990cfee89db1d6cb744c998e783a`
|
||||
* Colors:
|
||||
* * *Black*
|
||||
* * *Blue*
|
||||
* * *Green*
|
||||
* * *Product Red*
|
||||
* * *White*
|
||||
|
||||
* [Apple iPhone 12 Mini](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12mini/preview.png) (2020) [1080 x 2340]
|
||||
* *Black*
|
||||
* *Blue*
|
||||
* *Green*
|
||||
* *Product Red*
|
||||
* *White*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `aea792f252c0ba0847741c0a4a6dd3ca`
|
||||
* Colors:
|
||||
* * *Black*
|
||||
* * *Blue*
|
||||
* * *Green*
|
||||
* * *Product Red*
|
||||
* * *White*
|
||||
|
||||
* [Apple iPhone 12 Pro](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12pro/preview.png) (2020) [1170 x 2532]
|
||||
* *Gold*
|
||||
* *Graphite*
|
||||
* *Pacific Blue*
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `b25e4e76e2083e389761d3495a347e58`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Graphite*
|
||||
* * *Pacific Blue*
|
||||
* * *Silver*
|
||||
|
||||
* [Apple iPhone 12 Pro Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12promax/preview.png) (2020) [1284 x 2778]
|
||||
* *Gold*
|
||||
* *Graphite*
|
||||
* *Pacific Blue*
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `658c22b16917a70e5e1703f300ef98fe`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Graphite*
|
||||
* * *Pacific Blue*
|
||||
* * *Silver*
|
||||
|
||||
* [Apple iPhone 13](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13/preview.png) (2021) [1170 x 2532]
|
||||
* *Blue*
|
||||
* *Midnight*
|
||||
* *Pink*
|
||||
* *Product Red*
|
||||
* *Starlight*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
|
||||
* ID: `e03132ca8b4b0483e9d8f4a1ec1be1f5`
|
||||
* Colors:
|
||||
* * *Blue*
|
||||
* * *Midnight*
|
||||
* * *Pink*
|
||||
* * *Product Red*
|
||||
* * *Starlight*
|
||||
|
||||
* [Apple iPhone 13 Mini](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13mini/preview.png) (2021) [1080 x 2340]
|
||||
* *Blue*
|
||||
* *Midnight*
|
||||
* *Pink*
|
||||
* *Product Red*
|
||||
* *Starlight*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
|
||||
* ID: `d0346fb29c4c3de9ff70953a7ae3bfee`
|
||||
* Colors:
|
||||
* * *Blue*
|
||||
* * *Midnight*
|
||||
* * *Pink*
|
||||
* * *Product Red*
|
||||
* * *Starlight*
|
||||
|
||||
* [Apple iPhone 13 Pro](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13pro/preview.png) (2021) [1170 x 2532]
|
||||
* *Gold*
|
||||
* *Graphite*
|
||||
* *Sierra Blue*
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
|
||||
* ID: `1c6f40f0490c7e0cf35de1c96af5c720`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Graphite*
|
||||
* * *Sierra Blue*
|
||||
* * *Silver*
|
||||
|
||||
* [Apple iPhone 13 Pro Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13promax/preview.png) (2021) [1284 x 2778]
|
||||
* *Gold*
|
||||
* *Graphite*
|
||||
* *Sierra Blue*
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
|
||||
* ID: `edc57edf104fdba42fdf935986b09ab8`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Graphite*
|
||||
* * *Sierra Blue*
|
||||
* * *Silver*
|
||||
|
||||
* [Apple iPhone SE](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonese2020/preview.png) (2020) [750 x 1334]
|
||||
* *Black*
|
||||
* *Product Red*
|
||||
* *White*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `7ed0bde8cf28335afb6bf7e8fc90806b`
|
||||
* Colors:
|
||||
* * *Black*
|
||||
* * *Product Red*
|
||||
* * *White*
|
||||
|
||||
* [Apple iPhone Xr](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexr/preview.png) (2018) [828 x 1792]
|
||||
* *Blue*
|
||||
* *Coral*
|
||||
* *Product Red*
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* *Yellow*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `5213bfd57a03c81ad4dc702952810ee6`
|
||||
* Colors:
|
||||
* * *Blue*
|
||||
* * *Coral*
|
||||
* * *Product Red*
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
* * *Yellow*
|
||||
|
||||
* [Apple iPhone Xs](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexs/preview.png) (2019) [1125 x 2436]
|
||||
* *Gold*
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `4b17c9428565db596f647b448656b744`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Apple iPhone Xs Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexsmax/preview.png) (2019) [1242 x 2688]
|
||||
* *Gold*
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `2c9c1c6b8c0b598fe1c1aca4c1f334f8`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Google Pixel](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel/preview.png) (2016) [1080 x 1920]
|
||||
* *Quite Black*
|
||||
* *Really Blue*
|
||||
* *Very Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `ede34489f377fcc7852a326dd79c2550`
|
||||
* Colors:
|
||||
* * *Quite Black*
|
||||
* * *Really Blue*
|
||||
* * *Very Silver*
|
||||
|
||||
* [Google Pixel 4](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel4/preview.png) (2019) [1080 x 2280]
|
||||
* *Just Black*
|
||||
* *Clearly White*
|
||||
* *Oh So Orange*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `673398cd2adaadd60506fb0140b83ab9`
|
||||
* Colors:
|
||||
* * *Just Black*
|
||||
* * *Clearly White*
|
||||
* * *Oh So Orange*
|
||||
|
||||
* [Google Pixel 4 XL](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel4xl/preview.png) (2019) [1440 x 3040]
|
||||
* *Just Black*
|
||||
* *Clearly White*
|
||||
* *Oh So Orange*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `c55e7641f3ba76d7b777281b0ba4aa87`
|
||||
* Colors:
|
||||
* * *Just Black*
|
||||
* * *Clearly White*
|
||||
* * *Oh So Orange*
|
||||
|
||||
* [Google Pixel 5](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel5/preview.png) (2020) [1080 x 2340]
|
||||
* *Just Black*
|
||||
* *Sorta Sage*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `870266635f047a49c2eae83f7d46e26e`
|
||||
* Colors:
|
||||
* * *Just Black*
|
||||
* * *Sorta Sage*
|
||||
|
||||
### Computers
|
||||
|
||||
* [Apple iMac 21"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/imac212015/preview.png) (2015) [4096 x 2304]
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `385eb0911d0edb6821c18a2193bdadaf`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
|
||||
* [Apple iMac 24"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/imac242021/preview.png) (2021) [4480 x 2520]
|
||||
* *Green*
|
||||
* *Yellow*
|
||||
* *Orange*
|
||||
* *Pink*
|
||||
* *Purple*
|
||||
* *Blue*
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [03.02.2022]
|
||||
* ID: `40a349f85ca132c2d6c1444db0be9561`
|
||||
* Colors:
|
||||
* * *Green*
|
||||
* * *Yellow*
|
||||
* * *Orange*
|
||||
* * *Pink*
|
||||
* * *Purple*
|
||||
* * *Blue*
|
||||
* * *Silver*
|
||||
|
||||
* [Apple MacBook 12"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbook122016/preview.png) (2016) [2304 x 1440]
|
||||
* *Space Gray*
|
||||
* *Gold*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `f74ec99f02ed5fafbe1cb1767763ed91`
|
||||
* Colors:
|
||||
* * *Space Gray*
|
||||
* * *Gold*
|
||||
|
||||
* [Apple MacBook Air (M1)](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookair2020/preview.png) (2020) [2560 x 1600]
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [03.02.2022]
|
||||
* ID: `1f3fe3fec5b92861b7958bc75f40fe95`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
|
||||
* [Apple MacBook Pro 13"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro132015/preview.png) (2015) [2560 x 1600]
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `2f15fb3eb0dde3b76771f3090c6ddbb6`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
|
||||
* [Apple MacBook Pro 15"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro152015/preview.png) (2015) [2880 x 1800]
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `ba492b242a78b7f49caa41f61b5b3418`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
|
||||
* [Apple MacBook Pro 16"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro162019/preview.png) (2019) [3072 x 1920]
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `0bfe5c7d2a8a4e5398090c3027791ed1`
|
||||
* Colors:
|
||||
* * *Space Gray*
|
||||
|
||||
* [Apple MacBook Pro 16"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro162021/preview.png) (2021) [3456 x 2234]
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `80467845e71272f0d8d2bd13490a73f3`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Google Pixelbook Go](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixelbookgo/preview.png) (2019) [1920 x 1080]
|
||||
* *Just Black*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `6911ed9934b1c877a0b01c3750c2b79e`
|
||||
* Colors:
|
||||
* * *Just Black*
|
||||
|
||||
* [Apple Pro Display XDR](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/prodisplayxdr/preview.png) (2019) [6016 x 3384]
|
||||
* *Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `8b728f1faab0389874db4bb0ae6244e5`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
|
||||
### Tablets
|
||||
|
||||
* [Apple iPad 9](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipad9/preview.png) (2021) [2160 x 1620]
|
||||
* *Gold*
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `9c1f043b21ef803bd467135b83105f0b`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Apple iPad Air 4](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadair4/preview.png) (2020) [2360 x 1640]
|
||||
* *Green*
|
||||
* *Rose Gold*
|
||||
* *Silver*
|
||||
* *Sky Blue*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `569262bc590b30cfb296471c3c8a4af8`
|
||||
* Colors:
|
||||
* * *Green*
|
||||
* * *Rose Gold*
|
||||
* * *Silver*
|
||||
* * *Sky Blue*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Apple iPad Mini 5](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadmini5/preview.png) (2021) [2048 x 1536]
|
||||
* *Gold*
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `7a8b3c603fe34817d9233e5b6afed174`
|
||||
* Colors:
|
||||
* * *Gold*
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Apple iPad Pro 4 11"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadpro114/preview.png) (2020) [2388 x 1668]
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `e47f6e3bb880a034866f59f97f612abe`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
* [Apple iPad Pro 4 12.9"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadpro134/preview.png) (2020) [2732 x 2048]
|
||||
* *Silver*
|
||||
* *Space Gray*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
|
||||
* ID: `9a85db6aeb1d45c896daff67af785936`
|
||||
* Colors:
|
||||
* * *Silver*
|
||||
* * *Space Gray*
|
||||
|
||||
### Wearable devices
|
||||
|
||||
* [Apple Watch Series 6 44mm](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/watchseries644mm/preview.png) (2020) [368 x 448]
|
||||
* *Aluminum Case - Blue*
|
||||
* *Aluminum Case - Gold*
|
||||
* *Aluminum Case - Space Gray*
|
||||
* *Aluminum Case - Silver*
|
||||
* *Aluminum Case - Product Red*
|
||||
* *Titanium Case - Light*
|
||||
* *Titanium Case - Dark*
|
||||
* *Stainless Steel Case - Gold*
|
||||
* *Stainless Steel Case - Graphite*
|
||||
* *Stainless Steel Case - Silver*
|
||||
* Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
|
||||
* ID: `e055638cf7325a856ed0369dc8d0dcb1`
|
||||
* Colors:
|
||||
* * *Aluminum Case - Blue*
|
||||
* * *Aluminum Case - Gold*
|
||||
* * *Aluminum Case - Space Gray*
|
||||
* * *Aluminum Case - Silver*
|
||||
* * *Aluminum Case - Product Red*
|
||||
* * *Titanium Case - Light*
|
||||
* * *Titanium Case - Dark*
|
||||
* * *Stainless Steel Case - Gold*
|
||||
* * *Stainless Steel Case - Graphite*
|
||||
* * *Stainless Steel Case - Silver*
|
||||
|
||||
You can help the project by adding support for new mockups by contributing on [GitHub](https://github.com/ulbwazhine/MockupEngineer).
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user