Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils.py
blob: c98c8315597f53b860ea85a83e4dd880dcb795a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import base64
import rsvg
import re
import os
import statvfs
import cairo
import gc
import gtk
import time
from time import strftime
import hippo

from sugar import util

def getStringFromPixbuf(pixbuf):
    data = [""]
    pixbuf.save_to_callback(_saveDataToBufferCb, "png", {}, data)
    return base64.b64encode(str(data[0]))


def _saveDataToBufferCb(buf, data):
    data[0] += buf
    return True


def getPixbufFromString(str):
    pbl = gtk.gdk.PixbufLoader()
    data = base64.b64decode( str )
    pbl.write(data)
    pbl.close()
    return pbl.get_pixbuf()


def loadSvg( data, stroke, fill ):
    if ((stroke == None) or (fill == None)):
        return rsvg.Handle( data=data )

    entity = '<!ENTITY fill_color "%s">' % fill
    data = re.sub('<!ENTITY fill_color .*>', entity, data)

    entity = '<!ENTITY stroke_color "%s">' % stroke
    data = re.sub('<!ENTITY stroke_color .*>', entity, data)

    return rsvg.Handle( data=data )


def getUniqueFilepath( path, i ):
    pathOb = os.path.abspath( path )
    newPath = os.path.join( os.path.dirname(pathOb), str( str(i) + os.path.basename(pathOb) ) )
    if (os.path.exists(newPath)):
        i = i + 1
        return getUniqueFilepath( pathOb, i )
    else:
        return os.path.abspath( newPath )


def generateThumbnail( pixbuf, scale, thumbw, thumbh ):
    #need to generate thumbnail version here
    thumbImg = cairo.ImageSurface(cairo.FORMAT_ARGB32, thumbw, thumbh)
    tctx = cairo.Context(thumbImg)
    img = hippo.cairo_surface_from_gdk_pixbuf(pixbuf)
    tctx.scale(scale, scale)
    tctx.set_source_surface(img, 0, 0)
    tctx.paint()
    gc.collect()
    return thumbImg


def scaleSvgToDim( handle, dim ):
    #todo...
    scale = 1.0

    svgDim = handle.get_dimension_data()
    if (svgDim[0] > dim[0]):
        pass

    return scale


def getDateString( when ):
    return strftime( "%a, %b %d, %I:%M:%S %p", time.localtime(when) )


def grayScalePixBuf2( pb, copy ):
    arr = pb.get_pixels_array()
    if (copy):
        arr = arr.copy()
    for row in arr:
        for pxl in row:
            y = 0.3*pxl[0][0]+0.59*pxl[1][0]+0.11*pxl[2][0]
            pxl[0][0] = y
            pxl[1][0] = y
            pxl[2][0] = y
    return gtk.gdk.pixbuf_new_from_array(arr, pb.get_colorspace(), pb.get_bits_per_sample())


def grayScalePixBuf( pb, copy ):
    pb2 = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, pb.get_width(), pb.get_height())
    pb.saturate_and_pixelate(pb2, 0, 0)
    return pb2


def getFreespaceKb( ):
    stat = os.statvfs("/home")
    freebytes  = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL]
    freekb = freebytes / 1024
    return freekb