Gitlab CSE Unil
Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
M. Chardon
ADIM
Commits
b00512d9
Commit
b00512d9
authored
Jul 16, 2015
by
Julien Furrer
Browse files
Ajouté environ pour Datation et création nouvel outil "makrer"
parent
3e8671e9
Changes
48
Hide whitespace changes
Inline
Side-by-side
adim_project/.gitignore
View file @
b00512d9
...
...
@@ -12,10 +12,6 @@
adim_project/apache.conf*
adim_project/generate_apache_conf.py
adim_app/playground.py
/templates/playground
adim_app/static/js/playground.js
adim_project/wsgi.example.py
adim_project/wsgi-off.py
\ No newline at end of file
adim_project/adim/admin.py
View file @
b00512d9
...
...
@@ -19,5 +19,6 @@ admin.site.register(AnObj, AnObjAdmin)
# list_filter = ('schema', )
# admin.site.register(AOChoice, AOChoiceAdmin)
# admin.site.register(AOAttribute)
admin
.
site
.
register
(
Annotation
)
\ No newline at end of file
class
AnnotationAdmin
(
admin
.
ModelAdmin
):
list_filter
=
(
'annotable'
,
)
admin
.
site
.
register
(
Annotation
,
AnnotationAdmin
)
adim_project/adim/migrations/0007_auto_20150714_0815.py
0 → 100644
View file @
b00512d9
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'adim'
,
'0006_envparam'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'envparam'
,
name
=
'categories_set'
,
field
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
),
),
migrations
.
AlterField
(
model_name
=
'anobj'
,
name
=
'env'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
64
,
choices
=
[(
''
,
'Standard'
),
(
'cimaf'
,
'CIMAF'
),
(
'playground'
,
'Pour Voir'
)]),
),
]
adim_project/adim/migrations/0008_auto_20150714_0817.py
0 → 100644
View file @
b00512d9
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'adim'
,
'0007_auto_20150714_0815'
),
]
operations
=
[
migrations
.
RenameField
(
model_name
=
'envparam'
,
old_name
=
'categories_set'
,
new_name
=
'category_set_name'
,
),
]
adim_project/adim/migrations/0009_auto_20150715_1144.py
0 → 100644
View file @
b00512d9
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'adim'
,
'0008_auto_20150714_0817'
),
]
operations
=
[
migrations
.
AlterModelOptions
(
name
=
'envparam'
,
options
=
{
'verbose_name'
:
'Environment params'
,
'permissions'
:
((
'set_env_cimaf'
,
'Set CIMAF environment'
),)},
),
]
adim_project/adim/migrations/0010_auto_20150715_1252.py
0 → 100644
View file @
b00512d9
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'adim'
,
'0009_auto_20150715_1144'
),
]
operations
=
[
migrations
.
AlterModelOptions
(
name
=
'envparam'
,
options
=
{
'verbose_name'
:
'Environment params'
,
'permissions'
:
((
'set_env_cimaf'
,
'Set CIMAF environment'
),
(
'set_env_playground'
,
'Set PlayGround environment'
))},
),
]
adim_project/adim/migrations/0011_auto_20150716_0911.py
0 → 100644
View file @
b00512d9
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'adim'
,
'0010_auto_20150715_1252'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'anobj'
,
name
=
'env'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
64
,
choices
=
[(
''
,
'Standard'
),
(
'cimaf'
,
'CIMAF'
),
(
'anodate'
,
'Datation'
)]),
),
]
adim_project/adim/models/annotables.py
View file @
b00512d9
...
...
@@ -31,6 +31,7 @@ AO_IMAGES_PATH = 'ao_images'
AO_ENVIRON
=
(
(
''
,
'Standard'
),
(
'cimaf'
,
'CIMAF'
),
(
'anodate'
,
'Datation'
),
)
class
AOType
(
models
.
Model
):
...
...
@@ -260,6 +261,9 @@ class AnObjMembership(models.Model):
class
EnvParam
(
models
.
Model
):
anobj
=
models
.
OneToOneField
(
AnObj
)
# ----- Categories Set
category_set_name
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
)
# ----- CIMAF
cimaf_cut_pos
=
models
.
IntegerField
(
blank
=
True
,
null
=
True
)
cimaf_cut_margin
=
models
.
IntegerField
(
blank
=
True
,
null
=
True
)
...
...
@@ -267,6 +271,10 @@ class EnvParam(models.Model):
class
Meta
:
app_label
=
"adim"
verbose_name
=
"Environment params"
permissions
=
(
(
'set_env_cimaf'
,
"Set CIMAF environment"
),
(
'set_env_playground'
,
"Set PlayGround environment"
),
)
def
init
(
self
):
need_to_save
=
False
...
...
adim_project/adim_app/static/_src/Gruntfile.js
View file @
b00512d9
...
...
@@ -81,6 +81,16 @@ module.exports = function(grunt) {
}
},
anodate_app
:
{
options
:
{
paths
:
{
env
:
"
_build/adim/env/anodate
"
},
name
:
"
../js/anodate_app
"
,
out
:
"
../js/anodate_app
"
+
jsOptimizedSuffix
+
"
.js
"
}
},
cimaf_analysis
:
{
options
:
{
paths
:
{
...
...
adim_project/adim_app/static/_src/adim/attributes.js
View file @
b00512d9
...
...
@@ -134,7 +134,9 @@ function (_, paper, Signal, view) {
}
// ----- Ordering
// --------
// Ordering
// --------
function
_changeOrderOfSelection
(
direction
)
{
var
selectedItems
=
view
.
getSelectedAnnotations
();
if
(
selectedItems
.
length
>
0
)
{
...
...
@@ -169,7 +171,10 @@ function (_, paper, Signal, view) {
}
}
// ----- Color
// -----
// Color
// -----
function
setColor
(
color
,
fireAnnotationChange
,
silent
)
{
_color
=
new
paper
.
Color
(
color
);
paper
.
project
.
currentStyle
.
strokeColor
=
_color
;
...
...
@@ -195,7 +200,9 @@ function (_, paper, Signal, view) {
}
// ----- Filling mode ----------
// ------------
// Filling mode
// ------------
function
setFill
(
isFill
,
fireAnnotationChange
,
silent
)
{
_isFill
=
!!
isFill
;
paper
.
project
.
currentStyle
.
fillColor
=
_isFill
?
_color
:
null
;
...
...
@@ -220,7 +227,9 @@ function (_, paper, Signal, view) {
fireAnnotationChange
);
}
// ----- Fonts ----------
// -----
// Fonts
// -----
function
setFontSize
(
size
,
fireAnnotationChange
,
silent
)
{
_fontSize
=
size
;
paper
.
project
.
currentStyle
.
fontSize
=
size
;
...
...
@@ -241,7 +250,9 @@ function (_, paper, Signal, view) {
}
// ----- StrokeWidth ----------
// -----------
// StrokeWidth
// -----------
var
_maxStrokeWidth
=
50
;
var
_minStrokeWidth
=
1
;
function
setStrokeWidth
(
width
,
fireAnnotationChange
,
silent
)
{
...
...
@@ -253,7 +264,6 @@ function (_, paper, Signal, view) {
function
getStrokeWidth
()
{
return
_strokeWidth
;
//return paper.project.currentStyle.strokeWidth;
}
var
_updateStrokeWidth
=
_
.
debounce
(
setStrokeWidth
,
300
);
...
...
@@ -276,7 +286,9 @@ function (_, paper, Signal, view) {
}
// ----- Item Opacity -----------
// ------------
// Item Opacity
// ------------
/**
* Set the item opacity
* @param opacity
...
...
@@ -291,7 +303,6 @@ function (_, paper, Signal, view) {
function
getOpacity
()
{
return
_opacity
;
//return paper.project.currentStyle.strokeWidth;
}
function
opacitySelectedItems
(
opacity
,
fireAnnotationChange
)
{
...
...
@@ -305,7 +316,9 @@ function (_, paper, Signal, view) {
}
// ----- Image Opacity ----------
// -------------
// Image Opacity
// -------------
/**
* Set the image opacity. opacity param is a number 1-100
* @param {Number} opacity 1-100 the opacity value to be set
...
...
@@ -319,11 +332,12 @@ function (_, paper, Signal, view) {
function
getImageOpacity
()
{
return
_imgopacity
;
//return paper.project.currentStyle.strokeWidth;
}
// ----- Zoom ----------
// ----
// Zoom
// ----
var
_maxZoom
=
10
;
var
_minZoom
=
0.1
;
/**
...
...
@@ -380,6 +394,7 @@ function (_, paper, Signal, view) {
}
// ----- Returned Module ------------------------------
return
{
...
...
adim_project/adim_app/static/_src/adim/category.js
0 → 100644
View file @
b00512d9
/**
* Item category management
*
* Created by jfurrer on 08.07.15.
*/
define
([
"
underscore
"
,
"
paper
"
,
"
signals
"
],
function
(
_
,
paper
,
Signal
)
{
var
_catContainer
=
"
#prop-annot-category
"
;
// will be replaced by the jQuery element corresponding to the selector
var
_categories
=
{};
/**
* Initialization, should be called when DOM is ready
* @param parameters
* @private
*/
function
_init
(
parameters
){
// Init category container element
if
(
_
.
isString
(
_catContainer
))
_catContainer
=
$
(
_catContainer
);
_
(
_catContainer
.
find
(
"
[data-category]
"
)).
each
(
function
(
el
,
i
){
var
$el
=
$
(
el
),
colorStr
=
$el
.
data
(
'
color
'
)
||
$el
.
css
(
"
backgroundColor
"
),
id
=
$el
.
data
(
'
category
'
);
_categories
[
id
]
=
{
id
:
id
,
color
:
_getColorFromStr
(
colorStr
)
};
if
(
i
==
0
)
{
_categories
[
'
default
'
]
=
_categories
[
id
];
}
});
}
/**
* Convert a css color property of the form 'rgb(128, 64, 32)' to hex or paperjs Color
*
* @param {string} colorStr The string of the form rgba?(\d+,\d+,\d+(,\d+)?)
* @param {boolean} [asPaperColor=false] If true, return as paper.Color object
* @returns {*}
* @private
*/
function
_getColorFromStr
(
colorStr
,
asPaperColor
)
{
var
color
;
if
(
colorStr
.
indexOf
(
'
rgb
'
)
===
0
)
{
var
colA
=
colorStr
.
split
(
/
[
(),
]
/
)
.
map
(
function
(
part
){
return
parseFloat
(
part
.
trim
())})
.
filter
(
function
(
n
){
return
!
isNaN
(
n
)});
color
=
new
paper
.
Color
(
colA
[
0
]
/
255
,
colA
[
1
]
/
255
,
colA
[
2
]
/
255
);
}
else
{
color
=
new
paper
.
Color
(
colorStr
);
}
return
(
asPaperColor
)
?
color
:
color
.
toCSS
(
true
);
}
return
{
init
:
_init
,
getCategory
:
function
(
cat
)
{
return
_categories
[
cat
];
}
}
});
\ No newline at end of file
adim_project/adim_app/static/_src/adim/env/anodate/env.js
0 → 100644
View file @
b00512d9
/**
* anodate environment
*
* Created by jfurrer on 30.06.15.
*/
define
([
"
jquery
"
,
"
underscore
"
,
"
paper
"
,
"
signals
"
,
"
adim/config
"
,
"
adim/view
"
,
"
adim/attributes
"
,
"
adim/io
"
,
"
adim/tools
"
,
"
adim/ui
"
,
"
adim/category
"
,
"
env/shortcuts
"
,
"
tools/marker-ui
"
],
function
(
$
,
_
,
paper
,
Signal
,
config
,
view
,
attributes
,
io
,
tools
,
ui
,
category
,
shortcuts
,
markerUI
){
/**
* Signal binding specific to anodate environment
* @private
*/
function
_initSignalRouting
(){
console
.
info
(
"
_initSignalRouting from env/anodate
"
);
io
.
events
.
annotableLoaded
.
add
(
function
(
annotableData
){
// p.raster is a paper.Raster
view
.
events
.
annotationRemoved
.
add
(
function
(
annotation
){
if
(
annotation
.
data
.
type
===
'
marker
'
)
{
tools
.
tools
[
'
marker
'
].
listeners
.
updateNumbering
();
}
});
view
.
events
.
imageLoaded
.
add
(
function
(
p
){
// Here we initilize tools that needs some image properties
});
},
100
);
// called after all other handlers
view
.
events
.
annotationsLoaded
.
add
(
function
()
{
tools
.
tools
[
'
marker
'
].
listeners
.
updateNumbering
();
},
-
100
);
ui
.
events
.
modeChanged
.
add
(
function
(
opts
)
{
var
mode
=
opts
.
mode
;
if
(
mode
===
'
edit
'
)
{
$
(
"
#annotation-display-panel
"
).
hide
();
$
(
"
#annotation-property-panel
"
).
show
();
}
else
if
(
mode
===
'
review
'
)
{
$
(
"
#annotation-display-panel
"
).
show
();
$
(
"
#annotation-property-panel
"
).
hide
();
}
});
}
/**
* UI initialization specific to anodate environment
* @param params
* @private
*/
function
_initUI
(
params
)
{
category
.
init
();
markerUI
.
init
(
params
);
// hide color picker
$
(
"
#tool-colorselect
"
).
find
(
"
.color-menu
"
).
addClass
(
"
no-picker
"
);
// Init Type Display Selector
$
(
"
.adim-display-type-selector
"
).
find
(
"
button
"
).
on
(
'
click
'
,
function
(
event
)
{
var
$but
=
$
(
this
);
var
activate
=
!
$but
.
hasClass
(
"
active
"
);
var
category
=
$but
.
data
(
'
category
'
);
if
(
event
.
metaKey
)
{
//if (category !== 'image') {
// view.selectItemsByType(category);
//}
}
else
{
$but
.
toggleClass
(
"
active
"
,
activate
);
if
(
category
===
'
image
'
)
{
attributes
.
setImageOpacity
(
activate
?
100
:
0
,
true
);
//_opacitySlider.slider('setValue', activate ? 100 : 0);
}
else
{
view
.
toggleItemsByProp
({
prop
:
'
category
'
,
val
:
category
,
undef
:
true
},
activate
);
}
}
});
// Init Side Col Panel layout
var
sideCol
=
$
(
"
#side-col
"
),
canvasCtnr
=
$
(
"
.canvas-container
"
),
sideColPanelGroup
=
$
(
"
#side-col-panel-group
"
),
altSideColPanelGroup
=
$
(
"
#alt-side-col-panel-group
"
),
sharedAnnotationMarkersPanel
=
$
(
"
#shared-annotation-markers-panel
"
);
function
displayAltCol
(
show
)
{
sideCol
.
toggleClass
(
"
col-sm-1
"
,
!
show
)
.
toggleClass
(
"
col-sm-2
"
,
show
);
altSideColPanelGroup
.
toggleClass
(
"
hidden
"
,
!
show
);
sideColPanelGroup
.
toggleClass
(
"
col-xs-12
"
,
!
show
)
.
toggleClass
(
"
col-xs-6
"
,
show
);
}
function
displayAltColAndLabels
(
show
)
{
displayAltCol
(
show
&&
sharedAnnotationMarkersPanel
.
find
(
"
.panel-collapse
"
).
hasClass
(
"
in
"
));
sharedAnnotationMarkersPanel
.
toggleClass
(
"
hidden
"
,
!
show
);
}
displayAltColAndLabels
(
params
.
mode
===
'
review
'
);
ui
.
events
.
modeChanged
.
add
(
function
(
opts
)
{
var
mode
=
opts
.
mode
;
displayAltColAndLabels
(
mode
===
'
review
'
);
ui
.
updateReservedSpace
();
ui
.
adjustCanvasToImage
();
});
sharedAnnotationMarkersPanel
.
find
(
"
.panel-collapse
"
)
.
on
(
'
hidden.bs.collapse
'
,
function
()
{
canvasCtnr
.
css
(
"
transition
"
,
'
width 0.2s cubic-bezier(0.25, 0.1, 0.25, 1) 0s
'
);
sharedAnnotationMarkersPanel
.
prependTo
(
sideColPanelGroup
);
displayAltCol
(
false
);
ui
.
updateReservedSpace
();
ui
.
adjustCanvasToImage
();
canvasCtnr
.
css
(
"
transition
"
,
""
);
})
.
on
(
'
show.bs.collapse
'
,
function
()
{
displayAltCol
(
true
);
sharedAnnotationMarkersPanel
.
appendTo
(
altSideColPanelGroup
);
ui
.
updateReservedSpace
();
ui
.
adjustCanvasToImage
();
})
;
}
/**
* Define initial strokeColor from the forth color of the current color palette.
* This has to be define as a getter function as we cannot compute the color before
* the DOM is ready. The ``style`` property is accessed in the $.ready handler of main.
*
* @returns {{strokeColor: *}}
* @private
*/
function
_getStyle
()
{
var
colStr
=
$
(
"
#tool-colorselect
"
).
find
(
"
.color-menu .c4
"
).
css
(
"
backgroundColor
"
);
var
color
;
if
(
colStr
.
indexOf
(
'
rgb
'
)
===
0
)
{
var
colA
=
colStr
.
split
(
/
[
(),
]
/
)
.
map
(
function
(
part
){
return
parseFloat
(
part
.
trim
())})
.
filter
(
function
(
n
){
return
!
isNaN
(
n
)});
color
=
new
paper
.
Color
(
colA
[
0
]
/
255
,
colA
[
1
]
/
255
,
colA
[
2
]
/
255
);
}
else
{
color
=
new
paper
.
Color
(
colStr
);
}
return
{
strokeColor
:
color
}
}
var
env
=
{
name
:
'
anodate
'
,
shortcuts
:
shortcuts
,
initSignalRouting
:
_initSignalRouting
,
initUI
:
_initUI
};
Object
.
defineProperty
(
env
,
'
style
'
,
{
get
:
_getStyle
});
return
env
;
});
\ No newline at end of file
adim_project/adim_app/static/_src/adim/env/anodate/shortcuts.js
0 → 100644
View file @
b00512d9
/**
* Copyright (C) 2014 Université de Lausanne, RISET,
* < http://www.unil.ch/riset/ >
* This file is part of AdIm.
* AdIm is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* AdIm is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* This copyright notice MUST APPEAR in all copies of the file.
*
* @AUTHOR: Julien Furrer <Julien.Furrer@unil.ch>
* @CREATION-DATE: 30.06.15
*
*/
define
([
"
jquery
"
,
"
paper
"
,
"
signals
"
,
// ----- app
"
adim/config
"
,
"
adim/view
"
,
"
adim/tools
"
,
"
adim/ui
"
,
// plugins
"
jquery.hotkeys
"
],
function
(
$
,
paper
,
Signal
,
config
,
view
,
tools
,
ui
)
{
// Two contexts corresponding to the view modes: 'edit' and 'review'
var
_keyblock
=
function
(){
return
function
(){
return
false
}
};
var
activeTool
;
return
{
// DELETE -> [edit]:delete selected annot. [review]:prevent default
'
backspace del
'
:
[{
event
:
"
keydown
"
,
ctxt
:
"
edit
"
,
fn
:
function
(){
view
.
removeSelectedItems
();
return
false
;
}
},
{
event
:
"
keydown
"
,
ctxt
:
"
review
"
,
fn
:
_keyblock
()
}],
// SPACEBAR -> [*]:activate pan tool while pressed, in all context
'
space
'
:
[{
event
:
"
keydown
"
,
//ctxt: "*",
fn
:
function
(){
if
(
!
activeTool
)
{
activeTool
=
tools
.
getActiveTool
();
tools
.
activateTool
(
'
pan
'
);
}
return
false
;
}
},
{
event
:
"
keyup
"
,
//ctxt: "*",
fn
:
function
(){