Compare commits

..

4 Commits

Author SHA1 Message Date
Thomas Forgione 17624d3525 Version with publications 2024-01-11 15:31:17 +01:00
Thomas Forgione 4829761261 Custom color support 2023-11-30 15:11:59 +01:00
Thomas Forgione e2db45aedf Clean 2023-11-30 11:36:16 +01:00
Thomas Forgione 40ebb52ca6 Polymny stuff 2023-11-29 17:36:19 +01:00
5 changed files with 180 additions and 31 deletions

40
assets/polymny.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

View File

@ -1,5 +1,12 @@
#import "template.typ" #import "template.typ"
// Configuration
// Polymny config
#let spacing = 0.345cm
#let show_publications = true
#let show_projects = false
= Parcours = Parcours
#template.entry2( #template.entry2(
@ -36,7 +43,54 @@
note: [Spécialisation en multimédia et traitement d'images] note: [Spécialisation en multimédia et traitement d'images]
) )
#v(0.55cm) #v(spacing)
#if show_publications [
= Publications
#let local_spacing = 0.7em
#template.entry2(
left: [2019],
heading: [*Using 3D Bookmarks for Desktop and Mobile DASH-3D Clients*],
description: [
ACMMM 19 Demo Paper \
#link("https://tforgione.fr/publications/acmmm19/")
],
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat],
disable_line: true,
)
#v(local_spacing)
#template.entry2(
left: [2018],
heading: [*DASH for 3D Networked Virtual Environment*],
description: [
ACMMM 18 Long Paper + Demo paper \
#link("https://tforgione.fr/publications/acmmm18/")
],
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat, P. K. Yadav],
disable_line: true,
)
#v(local_spacing)
#template.entry2(
left: [2016],
heading: [*Impact of 3D Bookmarks on Navigation and Streaming in a Networked Virtual Environment*],
description: [
MMSys 16 Long Paper \
#link("https://tforgione.fr/publications/mmsys16/")
],
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat],
disable_line: true,
)
]
#if show_projects [
= Projets = Projets
@ -65,7 +119,9 @@
] ]
) )
#v(0.54cm) ]
#v(spacing)
= Loisirs = Loisirs

View File

@ -1,12 +1,34 @@
#import "template.typ" #import "template.typ"
#let is_polymny = true
= Contact = Contact
#align(left + top, [ #if is_polymny {
// Version polymny
align(left + top, [
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm, #grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
[ #image("assets/icons/location.svg", height: 10pt) ], [ #image("assets/icons/location.svg", height: 10pt) ],
[ 9 bd de la Gare, appt 83 \ [ Polymny Studio \
31500 Toulouse France 16 route de Luchon \
31110 Moustajon
],
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 05.82.95.91.76 ],
[ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:contact@polymny.studio")[contacter\@polymny.studio] ],
[ #image("assets/icons/world.svg", height: 10pt) ], [ #link("https://tforgione.fr")[https://tforgione.fr] ],
[ #image("assets/icons/github.svg", height: 10pt) ], [ #link("https://github.com/tforgione")[\@tforgione] ]
)
])
} else {
// Version perso
align(left + top, [
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
[ #image("assets/icons/location.svg", height: 10pt) ],
[ 9 bd de la gare, appt 83 \
31500 Toulouse
], ],
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 06.71.22.05.84 ], [ #image("assets/icons/phone.svg", height: 10pt) ], [ 06.71.22.05.84 ],
[ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:thomas@forgione.fr")[thomas\@forgione.fr] ], [ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:thomas@forgione.fr")[thomas\@forgione.fr] ],
@ -15,6 +37,8 @@
) )
]) ])
}
= Programmation = Programmation
#align(left + top, [ #align(left + top, [

View File

@ -1,16 +1,29 @@
#let color = blue
// #let color = rgb("#018d32")
// Basic template settings. Must be shown at very begining // Basic template settings. Must be shown at very begining
#let init(doc) = { #let init(doc) = {
let opacity = "33" // opacity hex chars
let polymny = read("./assets/polymny.svg")
let polymny_transparent = polymny
.replace("#FFFFFFFF", "#FFFFFF" + opacity)
.replace("#EAE2D4FF", "#EAE2D4" + opacity)
.replace("#BDB299FF", "#BDB299" + opacity)
set page( set page(
paper: "a4", paper: "a4",
numbering: none, numbering: none,
margin: (left: 0.25cm, right: 0.25cm, top: 0.5cm, bottom: 0.5cm), margin: (left: 0.25cm, right: 0.25cm, top: 0.5cm, bottom: 0.5cm),
background: [ background: [
#align(top + left, rect(width: 5.55cm, height: 100%, fill: blue.lighten(90%))) #place(bottom + left, dx: 2cm, dy: 2.75cm, {
#v(-100%) image.decode(polymny_transparent, width: 65em, height: 65em)
#v(-1.3em) })
#align(top, rect(width: 100%, height: 4.4cm, fill: blue))
#v(-5cm) #place(top + left, rect(width: 5.55cm, height: 100%, fill: color.lighten(90%)))
#align(top + left, box(inset: (x: 0.8cm, y: 1cm), image("./assets/moi.png", height: 4cm))) #place(top + left, rect(width: 100%, height: 4.4cm, fill: color))
#place(top + left, dx: 0.8cm, dy: 1cm, image("./assets/moi.png", height: 4cm))
], ],
) )
@ -47,15 +60,15 @@
} }
show heading.where(level: 1): it => { show heading.where(level: 1): it => {
set text(fill: blue) set text(fill: color)
grid( grid(
gutter: 1em, gutter: 1em,
columns: (5cm, 7fr), columns: (5cm, 7fr),
[], // align(horizon, [#v(3pt) #rect(width: 1cm, height: 0.33em, fill: blue)]), [], // align(horizon, [#v(3pt) #rect(width: 1cm, height: 0.33em, fill: color)]),
[ [
#it.body #it.body
#v(-0.5cm) #v(-0.5cm)
#line(stroke: blue, length: 100%) #line(stroke: color, length: 100%)
], ],
) )
} }
@ -95,7 +108,7 @@
} }
// An entry in the CV with "until" date, heading, description and note. // An entry in the CV with "until" date, heading, description and note.
#let entry2(left: content, heading: content, description: content, note: content) = { #let entry2(left: content, heading: content, description: content, note: content, disable_line: false) = {
let content = [ let content = [
#heading \ #heading \
@ -105,23 +118,39 @@
#note #note
] ]
layout(size =>
style(styles => { style(styles => {
let size = measure(content, styles) let size = measure({
block(
width: size.width,
grid(
gutter: 1em,
columns: (5.5cm, 0.75fr, 7fr),
[], [], content
)
)
}, styles)
let offset = measure(left, styles) let offset = measure(left, styles)
grid( grid(
gutter: 1em, gutter: 1em,
columns: (5.5cm, 0.75fr, 7fr), columns: (5.5cm, 0.75fr, 7fr),
[], [],
if not disable_line {
align(center, [ align(center, [
#left #left
#v(-0.5em) #v(-0.5em)
#line(angle: 90deg, length: size.height - offset.height - 0.5em) #line(angle: 90deg, length: size.height - offset.height - 0.5em)
]), ])
} else {
left
},
content content
) )
v(-4pt) v(-4pt)
}) })
)
} }
// A score box between 1 and 5. // A score box between 1 and 5.
@ -131,9 +160,9 @@
for x in range(5) { for x in range(5) {
if level > x { if level > x {
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: blue)) elems.push(rect(width: 0.4cm, height: 0.2cm, fill: color))
} else { } else {
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: blue.lighten(60%))) elems.push(rect(width: 0.4cm, height: 0.2cm, fill: color.lighten(60%)))
} }
} }