from FPDF.Gradients import *

pdf=Gradients()

#first page
pdf.AddPage()
pdf.SetFont('Arial','',14)
pdf.Cell(0,5,'Page 1',0,1,'C')
pdf.Ln()

#set colors for gradients (r,g,b) or (grey 0-255)
red=[255,0,0]
blue=[0,0,200]
yellow=[255,255,0]
green=[0,255,0]
white=[255]
black=[0]

#set the coordinates x1,y1,x2,y2 of the gradient (see linear_gradient_coords.jpg)
coords=[0.0,0.0,1.0,0.0]

#paint a linear gradient
pdf.LinearGradient(20,25,80,80,red,blue,coords)

#set the coordinates fx,fy,cx,cy,r of the gradient (see radial_gradient_coords.jpg)
coords=[0.5,0.5,1.0,1.0,1.2]

#paint a radial gradient
pdf.RadialGradient(110,25,80,80,white,black,coords)

#paint a coons patch mesh with default coordinates
pdf.CoonsPatchMesh(20,115,80,80,yellow, blue, green, red)

#set the coordinates for the cubic Bézier points x1,y1 ... x12, y12 of the patch (see coons_patch_mesh_coords.jpg)
coords=[0.00,0.00, 0.33,0.20,             #lower left
              0.67,0.00, 1.00,0.00, 0.80,0.33,  #lower right
              0.80,0.67, 1.00,1.00, 0.67,0.80,  #upper right
              0.33,1.00, 0.00,1.00, 0.20,0.67,  #upper left
              0.00,0.33]                       #lower left
coords_min=0.0   #minimum value of the coordinates
coords_max=1.0   #maximum value of the coordinates

#paint a coons patch gradient with the above coordinates
pdf.CoonsPatchMesh(110,115,80,80,yellow,blue,green,red,coords,coords_min,coords_max)

#second page
pdf.AddPage()
pdf.Cell(0,5,'Page 2',0,1,'C')
pdf.Ln()

#first patch: f = 0
patch_array={0:{},1:{},2:{},3:{}}
patch_array[0]['f']=0
patch_array[0]['points']=[0.00,0.00, 0.33,0.00,
                                0.67,0.00, 1.00,0.00, 1.00,0.33,
                                0.8,0.67, 1.00,1.00, 0.67,0.8,
                                0.33,1.80, 0.00,1.00, 0.00,0.67,
                                0.00,0.33]
patch_array[0]['colors']={}
patch_array[0]['colors'][0]={'r':255.0,'g':255.0,'b':0.0}
patch_array[0]['colors'][1]={'r':0.0,'g':0.0,'b':255.0}
patch_array[0]['colors'][2]={'r':0.0,'g':255.0,'b':0.0}
patch_array[0]['colors'][3]={'r':255.0,'g':0.0,'b':0.0}

#second patch - above the other: f = 2
patch_array[1]['f']=2
patch_array[1]['points']=[0.00,1.33,
                                0.00,1.67, 0.00,2.00, 0.33,2.00,
                                0.67,2.00, 1.00,2.00, 1.00,1.67,
                                1.5,1.33]
patch_array[1]['colors']={}
patch_array[1]['colors'][0]={'r':0.0,'g':0.0,'b':0.0}
patch_array[1]['colors'][1]={'r':255.0,'g':0.0,'b':255.0}

#third patch - right of the above: f = 3
patch_array[2]['f']=3
patch_array[2]['points']=[1.33,0.80,
                                1.67,1.50, 2.00,1.00, 2.00,1.33,
                                2.00,1.67, 2.00,2.00, 1.67,2.00,
                                1.33,2.00]
patch_array[2]['colors']={}
patch_array[2]['colors'][0]={'r':0.0,'g':255.0,'b':255.0}
patch_array[2]['colors'][1]={'r':0.0,'g':0.0,'b':0.0}

#fourth patch - below the above, which means left(?) of the above: f = 1
patch_array[3]['f']=1
patch_array[3]['points']=[2.00,0.67,
                                2.00,0.33, 2.00,0.00, 1.67,0.00,
                                1.33,0.00, 1.00,0.00, 1.00,0.33,
                                0.8,0.67]
patch_array[3]['colors']={}
patch_array[3]['colors'][0]={'r':0.0,'g':0.0,'b':0.0}
patch_array[3]['colors'][1]={'r':0.0,'g':0.0,'b':255.0}

coords_min=0
coords_max=2

pdf.CoonsPatchMesh(10,25,190,200,'','','','',patch_array,coords_min,coords_max)

pdf.Output('gradients.pdf','F')
