Jelajahi Sumber

Merge pull request #79 from bgrabitmap/dev-lazpaint

Dev lazpaint v7.0.7
circular17 6 tahun lalu
induk
melakukan
1c7070bb4e
50 mengubah file dengan 14547 tambahan dan 411 penghapusan
  1. 1 0
      .gitignore
  2. 13 0
      commit.sh
  3. 1 0
      lazpaint/dialog/umultiimage.pas
  4. 16 2
      lazpaint/dialog/upreviewdialog.pas
  5. 63 41
      lazpaint/image/uimage.pas
  6. 88 15
      lazpaint/image/uimageaction.pas
  7. 191 9
      lazpaint/image/uimagediff.pas
  8. 26 1
      lazpaint/image/uimagestate.pas
  9. 11 9
      lazpaint/image/ustatetype.pas
  10. 5 3
      lazpaint/lazpaint.lpi
  11. 1 1
      lazpaint/lazpaintembeddedpack.lpk
  12. 1 1
      lazpaint/lazpaintmainform.lfm
  13. 30 9
      lazpaint/lazpaintmainform.pas
  14. 3 1
      lazpaint/lazpainttype.pas
  15. 1 0
      lazpaint/maintoolbar.inc
  16. 1195 0
      lazpaint/release/bin/i18n/lazpaint.ar.po
  17. 1196 0
      lazpaint/release/bin/i18n/lazpaint.cs.po
  18. 140 136
      lazpaint/release/bin/i18n/lazpaint.de.po
  19. 1199 0
      lazpaint/release/bin/i18n/lazpaint.es.po
  20. 1195 0
      lazpaint/release/bin/i18n/lazpaint.fi.po
  21. 1199 0
      lazpaint/release/bin/i18n/lazpaint.fr.po
  22. 1200 0
      lazpaint/release/bin/i18n/lazpaint.ja.po
  23. 1196 0
      lazpaint/release/bin/i18n/lazpaint.lv.po
  24. 1198 0
      lazpaint/release/bin/i18n/lazpaint.nl.po
  25. 4 0
      lazpaint/release/bin/i18n/lazpaint.po
  26. 1199 0
      lazpaint/release/bin/i18n/lazpaint.pt_BR.po
  27. 1190 0
      lazpaint/release/bin/i18n/lazpaint.ru.po
  28. 1195 0
      lazpaint/release/bin/i18n/lazpaint.sv.po
  29. 21 0
      lazpaint/release/changelog
  30. 21 0
      lazpaint/release/debian/linux32/DEBIAN/changelog
  31. 1 1
      lazpaint/release/debian/linux32/DEBIAN/control
  32. 21 0
      lazpaint/release/debian/linux64/DEBIAN/changelog
  33. 1 1
      lazpaint/release/debian/linux64/DEBIAN/control
  34. 2 2
      lazpaint/release/macOS/LazPaint.app/Contents/Info.plist
  35. 8 3
      lazpaint/release/macOS/instructions.txt
  36. 25 19
      lazpaint/release/macOS/makedmg.sh
  37. 1 1
      lazpaint/release/windows/lazpaint.iss
  38. 27 0
      lazpaint/tools/utoolpolygon.pas
  39. 189 66
      lazpaint/tools/utoolvectorial.pas
  40. 15 12
      lazpaint/uchoosecolor.pas
  41. 127 23
      lazpaint/uimagepreview.pas
  42. 9 8
      lazpaint/ulayerstack.pas
  43. 1 0
      lazpaint/uresourcestrings.pas
  44. 22 0
      lazpaint/uscripting.pas
  45. 17 7
      lazpaintcontrols/lcvectorclipboard.pas
  46. 12 1
      lazpaintcontrols/lcvectorialfill.pas
  47. 61 7
      lazpaintcontrols/lcvectororiginal.pas
  48. 37 9
      lazpaintcontrols/lcvectorpolyshapes.pas
  49. 159 22
      lazpaintcontrols/lcvectorrectshapes.pas
  50. 13 1
      lazpaintcontrols/lcvectortextshapes.pas

+ 1 - 0
.gitignore

@@ -34,3 +34,4 @@ lazpaint/image/backup/
 lazpaint/dialog/backup/
 .DS_Store
 lazpaint/release/bin/lazpaint.app
+lazpaint/release/macOS/*.dmg

+ 13 - 0
commit.sh

@@ -0,0 +1,13 @@
+#!/bin/bash
+git checkout HEAD~ -- lazpaint/release/bin/i18n/*.po
+git add .
+git status
+echo "Type commit description (or press Enter to cancel):"
+read commitdesc
+if test -z "$commitdesc"
+then
+  git reset --
+else
+  git commit -m "$commitdesc"
+fi
+cd ..

+ 1 - 0
lazpaint/dialog/umultiimage.pas

@@ -111,6 +111,7 @@ begin
       result.bmp := images[selectedIndex].bmp.Duplicate(AFormat = ifCur,True) as TBGRABitmap;
       result.bpp := images[selectedIndex].bpp;
       result.frameIndex := images[selectedIndex].frameIndex;
+      result.isDuplicate:= images[selectedIndex].isDuplicate;
     end;
   end;
 end;

+ 16 - 2
lazpaint/dialog/upreviewdialog.pas

@@ -20,9 +20,11 @@ type
     procedure FormDestroy(Sender: TObject);
   private
     FPreview: TImagePreview;
+    function GetDuplicateSourceIndex: integer;
     function GetEntryCount: integer;
     function GetFilename: string;
     function GetLazPaintInstance: TLazPaintCustomInstance;
+    procedure SetDuplicateSourceIndex(AValue: integer);
     procedure SetFilename(AValue: string);
     procedure PreviewValidate(Sender: TObject);
     procedure PreviewEscape(Sender: TObject);
@@ -32,21 +34,23 @@ type
     property Filename: string read GetFilename write SetFilename;
     property LazPaintInstance: TLazPaintCustomInstance read GetLazPaintInstance write SetLazPaintInstance;
     property EntryCount: integer read GetEntryCount;
+    property DuplicateSourceIndex: integer read GetDuplicateSourceIndex write SetDuplicateSourceIndex;
   end;
 
 var
   FPreviewDialog: TFPreviewDialog;
 
 function ShowPreviewDialog(AInstance: TLazPaintCustomInstance; AFilename: string; ATitle: string = '';
-  ASkipIfSingleImage: boolean = false): TImageEntry;
+  ASkipIfSingleImage: boolean = false; ADuplicateSourceIndex: integer = -1): TImageEntry;
 
 implementation
 
 function ShowPreviewDialog(AInstance: TLazPaintCustomInstance; AFilename: string; ATitle: string;
-  ASkipIfSingleImage: boolean): TImageEntry;
+  ASkipIfSingleImage: boolean; ADuplicateSourceIndex: integer): TImageEntry;
 var f: TFPreviewDialog;
 begin
   f := TFPreviewDialog.Create(nil);
+  f.DuplicateSourceIndex := ADuplicateSourceIndex;
   f.LazPaintInstance := AInstance;
   if ATitle <> '' then f.Caption := ATitle;
   f.Filename:= AFilename;
@@ -90,11 +94,21 @@ begin
     result := 0;
 end;
 
+function TFPreviewDialog.GetDuplicateSourceIndex: integer;
+begin
+  result := FPreview.DuplicateEntrySourceIndex;
+end;
+
 function TFPreviewDialog.GetLazPaintInstance: TLazPaintCustomInstance;
 begin
   result := FPreview.LazPaintInstance;
 end;
 
+procedure TFPreviewDialog.SetDuplicateSourceIndex(AValue: integer);
+begin
+  FPreview.DuplicateEntrySourceIndex:= AValue;
+end;
+
 procedure TFPreviewDialog.SetFilename(AValue: string);
 begin
   FPreview.Filename := AValue;

+ 63 - 41
lazpaint/image/uimage.pas

@@ -182,12 +182,14 @@ type
     procedure MergeLayerOver;
     procedure MoveLayer(AFromIndex,AToIndex: integer);
     procedure RemoveLayer;
+    procedure ClearLayer;
 
     procedure HorizontalFlip(ALayerIndex: integer); overload;
     procedure VerticalFlip(ALayerIndex: integer); overload;
 
     // whole image
-    procedure Assign(const AValue: TBGRABitmap; AOwned: boolean; AUndoable: boolean); overload;
+    procedure Assign(const AValue: TBGRABitmap; AOwned: boolean; AUndoable: boolean;
+                     ACaption: string = ''; AOpacity: byte = 255); overload;
     procedure Assign(const AValue: TBGRALayeredBitmap; AOwned: boolean; AUndoable: boolean); overload;
     procedure Assign(const AValue: TLayeredBitmapAndSelection; AOwned: boolean; AUndoable: boolean); overload;
 
@@ -315,26 +317,41 @@ end;
 
 function TLazPaintImage.MakeCroppedLayer: TBGRABitmap;
 var r: TRect;
+  cropped: TBGRABitmap;
+  ofs: TPoint;
 begin
+  ofs := Point(0,0);
   result := DuplicateBitmap(FCurrentState.SelectionLayer);
   if (result <> nil) and (SelectionMask <> nil) then result.ApplyMask(SelectionMask);
   if (result <> nil) and result.Empty then FreeAndNil(result);
   if result = nil then
   begin
+    ofs := LayerOffset[CurrentLayerIndex];
     result := DuplicateBitmap(GetSelectedImageLayer);
-    if (result <> nil) and (SelectionMask <> nil) then result.ApplyMask(SelectionMask);
+    if (result <> nil) and (SelectionMask <> nil) then
+      result.ApplyMask(SelectionMask, rect(0,0,result.Width,result.Height),
+                       Point(ofs.X,ofs.Y));
   end;
   if result <> nil then
   begin
     if SelectionMask = nil then
       r := result.GetImageBounds
     else
+    begin
       r := SelectionMaskBounds;
+      OffsetRect(r, -ofs.x, -ofs.y);
+    end;
     if IsRectEmpty(r) then
       FreeAndNil(result)
     else
+    begin
       if (r.left <> 0) or (r.top <> 0) or (r.right <> result.Width) or (r.bottom <> result.Height) then
-        BGRAReplace(result, result.GetPart(r));
+      begin
+        cropped := TBGRABitmap.Create(r.Width,r.Height);
+        cropped.PutImage(-r.Left, -r.Top, result, dmSet);
+        BGRAReplace(result, cropped);
+      end;
+    end;
   end;
 end;
 
@@ -465,6 +482,11 @@ end;
 
 procedure TLazPaintImage.UpdateMultiImage(AOutputFilename: string = '');
 begin
+  if not FileManager.FileExists(currentFilenameUTF8) then
+  begin
+    ShowMessage(rsFileNotFound + LineEnding + LineEnding + currentFilenameUTF8);
+    exit;
+  end;
   if IsIconCursor then
     UpdateIconFileUTF8(currentFilenameUTF8, AOutputFilename)
   else if IsTiff then
@@ -557,7 +579,10 @@ begin
     else
     begin
       newFrameIndex := FrameIndex;
-      tiff.Delete(newFrameIndex);
+      if newFrameIndex >= tiff.Count then
+        newFrameIndex := tiff.Count
+      else
+        tiff.Delete(newFrameIndex);
       tiff.Move(addedTiff,0,newFrameIndex);
     end;
 
@@ -956,11 +981,6 @@ begin
         ImageMayChange(ADiff.ChangingBounds)
       else
         ImageMayChangeCompletely;
-  idkChangeLayer:
-      if ADiff.ChangingBoundsDefined then
-        LayerMayChange(CurrentLayerReadOnly, ADiff.ChangingBounds)
-      else
-        LayerMayChangeCompletely(CurrentLayerReadOnly);
   idkChangeSelection:
       if ADiff.ChangingBoundsDefined then
         SelectionMaskMayChange(ADiff.ChangingBounds)
@@ -1669,48 +1689,40 @@ begin
   if Assigned(Zoom) then result := Zoom.Factor else result := 1;
 end;
 
-procedure TLazPaintImage.Assign(const AValue: TBGRABitmap; AOwned: boolean; AUndoable: boolean);
+procedure TLazPaintImage.Assign(const AValue: TBGRABitmap; AOwned: boolean; AUndoable: boolean;
+  ACaption: string; AOpacity: byte);
 var layeredBmp: TBGRALayeredBitmap;
   mask: TBGRABitmap;
 begin
   if not CheckNoAction then exit;
   CursorHotSpot := AValue.HotSpot;
-  if not AUndoable then
-  begin
-    FCurrentState.Assign(AValue, AOwned);
-    FCurrentState.RemoveSelection;
-    LayeredBitmapReplaced;
-    ImageMayChangeCompletely;
-    SelectionMaskMayChangeCompletely;
-    ClearUndo;
-  end else
+  layeredBmp := TBGRALayeredBitmap.Create(AValue.Width,AValue.Height);
+  if AOwned then
   begin
-    layeredBmp := TBGRALayeredBitmap.Create(AValue.Width,AValue.Height);
-    if AOwned then
+    layeredBmp.AddOwnedLayer(AValue);
+    if Assigned(AValue.XorMask) then
     begin
-      layeredBmp.AddOwnedLayer(AValue);
-      if Assigned(AValue.XorMask) then
-      begin
-        mask := AValue.XorMask.Duplicate as TBGRABitmap;
-        mask.AlphaFill(255);
-        mask.ReplaceColor(BGRABlack,BGRAPixelTransparent);
-        layeredBmp.LayerName[layeredBmp.AddOwnedLayer(mask,boXor)] := 'Xor';
-        AValue.DiscardXorMask;
-      end;
-    end
-    else
+      mask := AValue.XorMask.Duplicate as TBGRABitmap;
+      mask.AlphaFill(255);
+      mask.ReplaceColor(BGRABlack,BGRAPixelTransparent);
+      layeredBmp.LayerName[layeredBmp.AddOwnedLayer(mask,boXor)] := 'Xor';
+      AValue.DiscardXorMask;
+    end;
+  end
+  else
+  begin
+    layeredBmp.AddLayer(AValue);
+    if Assigned(AValue.XorMask) then
     begin
-      layeredBmp.AddLayer(AValue);
-      if Assigned(AValue.XorMask) then
-      begin
-        mask := AValue.XorMask.Duplicate as TBGRABitmap;
-        mask.AlphaFill(255);
-        mask.ReplaceColor(BGRABlack,BGRAPixelTransparent);
-        layeredBmp.LayerName[layeredBmp.AddOwnedLayer(mask,boXor)] := 'Xor';
-      end;
+      mask := AValue.XorMask.Duplicate as TBGRABitmap;
+      mask.AlphaFill(255);
+      mask.ReplaceColor(BGRABlack,BGRAPixelTransparent);
+      layeredBmp.LayerName[layeredBmp.AddOwnedLayer(mask,boXor)] := 'Xor';
     end;
-    Assign(layeredBmp,True,AUndoable);
   end;
+  layeredBmp.LayerName[0] := ACaption;
+  layeredBmp.LayerOpacity[0] := AOpacity;
+  Assign(layeredBmp,True,AUndoable);
 end;
 
 procedure TLazPaintImage.Assign(const AValue: TBGRALayeredBitmap;
@@ -1913,6 +1925,16 @@ begin
   ImageMayChangeCompletely;
 end;
 
+procedure TLazPaintImage.ClearLayer;
+begin
+  if not CheckNoAction then exit;
+  try
+    AddUndo(FCurrentState.ClearLayer);
+  except on ex: exception do NotifyException('ClearLayer',ex);
+  end;
+  ImageMayChangeCompletely;
+end;
+
 procedure TLazPaintImage.SaveOriginalToStream(AStream: TStream);
 begin
   FCurrentState.LayeredBitmap.SaveOriginalToStream(

+ 88 - 15
lazpaint/image/uimageaction.pas

@@ -30,7 +30,8 @@ type
     function SmartZoom3: boolean;
     procedure Undo;
     procedure Redo;
-    procedure SetCurrentBitmap(bmp: TBGRABitmap; AUndoable: boolean);
+    procedure SetCurrentBitmap(bmp: TBGRABitmap; AUndoable: boolean;
+      ACaption: string = ''; AOpacity: byte = 255);
     procedure CropToSelectionAndLayer;
     procedure CropToSelection;
     procedure HorizontalFlip(AOption: TFlipOption);
@@ -388,7 +389,7 @@ begin
           end;
           FInstance.ShowTopmost(top);
         end;
-        SetCurrentBitmap(partial,true);
+        SetCurrentBitmap(partial,true,image.LayerName[image.CurrentLayerIndex],image.LayerOpacity[image.CurrentLayerIndex]);
       end
       else
         partial.Free;
@@ -401,15 +402,14 @@ end;
 
 procedure TImageActions.CropToSelection;
 var cropped: TLayeredBitmapAndSelection;
-    r: TRect;
+    r, subBounds: TRect;
     i,selectedLayer: integer;
+    ofs: TPoint;
+    tempLayer, flattened: TBGRABitmap;
+    selectionIsRect: Boolean;
+    top: TTopMostInfo;
 begin
   if not image.CheckNoAction then exit;
-  if image.NbLayers = 1 then
-  begin
-    CropToSelectionAndLayer;
-    exit;
-  end;
   try
     if image.SelectionMaskEmpty then
     begin
@@ -421,15 +421,68 @@ begin
       r := image.SelectionMaskBounds;
       if (r.left = 0) and (r.Top = 0) and (r.right = image.width) and (r.Bottom =image.height) then exit;
       cropped := image.MakeLayeredBitmapAndSelectionCopy;
+      BGRAReplace(cropped.selection,cropped.selection.GetPart(r));
+      selectionIsRect := cropped.selection.Equals(BGRAWhite);
+      if cropped.selectionLayer <> nil then BGRAReplace(cropped.selectionLayer,cropped.selectionLayer.GetPart(r));
       selectedLayer := image.CurrentLayerIndex;
       for i := 0 to cropped.layeredBitmap.NbLayers-1 do
       begin
-        cropped.layeredBitmap.LayerBitmap[i].ApplyMask(cropped.selection);
-        cropped.layeredBitmap.SetLayerBitmap(i, cropped.layeredBitmap.LayerBitmap[i].GetPart(r) as TBGRABitmap, true);
+        tempLayer := TBGRABitmap.Create(r.Width,r.Height);
+        if selectionIsRect and (cropped.layeredBitmap.LayerOriginalGuid[i]<>GUID_NULL) and
+          cropped.layeredBitmap.LayerOriginalKnown[i] then
+        begin
+          ofs := cropped.layeredBitmap.LayerOffset[i];
+          cropped.layeredBitmap.LayerOriginalMatrix[i] :=
+             AffineMatrixTranslation(-r.Left, -r.Top)*
+             cropped.layeredBitmap.LayerOriginalMatrix[i];
+          cropped.layeredBitmap.RenderLayerFromOriginal(i);
+        end else
+        begin
+          ofs := cropped.layeredBitmap.LayerOffset[i];
+          tempLayer.PutImage(ofs.x-r.Left,ofs.y-r.Top, cropped.layeredBitmap.LayerBitmap[i], dmSet);
+          tempLayer.ApplyMask(cropped.selection);
+          cropped.layeredBitmap.SetLayerBitmap(i, tempLayer, true);
+          cropped.layeredBitmap.LayerOffset[i] := Point(0,0);
+        end;
+      end;
+      if cropped.selectionLayer = nil then
+      begin
+        FreeAndNil(cropped.selection);
+        if (CurrentTool in [ptMoveSelection,ptRotateSelection]) then
+          ChooseTool(ptHand);
       end;
       cropped.layeredBitmap.SetSize(r.right-r.left,r.Bottom-r.top);
-      BGRAReplace(cropped.selection,cropped.selection.GetPart(r));
-      if cropped.selectionLayer <> nil then BGRAReplace(cropped.selectionLayer,cropped.selectionLayer.GetPart(r));
+      cropped.layeredBitmap.RemoveUnusedOriginals;
+      flattened := cropped.layeredBitmap.ComputeFlatImage;
+      subBounds := flattened.GetImageBounds;
+      flattened.Free;
+      if cropped.selectionLayer<>nil then
+        subBounds := RectUnion(subBounds, cropped.selectionLayer.GetImageBounds);
+      if (subBounds.Left > 0) or (subBounds.Top > 0) or
+        (subBounds.Right < cropped.layeredBitmap.Width) or (subBounds.Bottom < cropped.layeredBitmap.Height) then
+      begin
+        top := FInstance.HideTopmost;
+        case MessageDlg(rsCrop,rsKeepEmptySpace,mtConfirmation,mbYesNo,0) of
+        mrNo: begin
+            for i := 0 to cropped.layeredBitmap.NbLayers-1 do
+            begin
+              if cropped.layeredBitmap.LayerOriginalGuid[i]=GUID_NULL then
+              begin
+                ofs := cropped.layeredBitmap.LayerOffset[i];
+                cropped.layeredBitmap.LayerOffset[i] := Point(ofs.x-subBounds.Left,ofs.y-subBounds.Top);
+              end else
+              begin
+                cropped.layeredBitmap.LayerOriginalMatrix[i] :=
+                  AffineMatrixTranslation(-subBounds.Left,-subBounds.Top)*
+                  cropped.layeredBitmap.LayerOriginalMatrix[i];
+                cropped.layeredBitmap.RenderLayerFromOriginal(i);
+              end;
+            end;
+            cropped.layeredBitmap.SetSize(subBounds.Width, subBounds.Height);
+          end;
+        end;
+        FInstance.ShowTopmost(top);
+      end;
       image.Assign(cropped,true,true);
       image.SetCurrentLayerByIndex(selectedLayer);
     end;
@@ -439,11 +492,12 @@ begin
   end;
 end;
 
-procedure TImageActions.SetCurrentBitmap(bmp: TBGRABitmap; AUndoable : boolean);
+procedure TImageActions.SetCurrentBitmap(bmp: TBGRABitmap; AUndoable : boolean;
+  ACaption: string; AOpacity: byte);
 begin
   ToolManager.ToolCloseDontReopen;
   try
-    image.Assign(bmp,True,AUndoable);
+    image.Assign(bmp,True,AUndoable, ACaption,AOpacity);
   finally
     ToolManager.ToolOpen;
   end;
@@ -962,7 +1016,11 @@ begin
   end;}
   if image.NbLayers < MaxLayersToAdd then
   begin
+    if CurrentTool in[ptMoveLayer,ptRotateLayer,ptZoomLayer,ptLayerMapping,ptTextureMapping,ptDeformation] then
+      ChooseTool(ptHand);
+    ToolManager.ToolCloseDontReopen;
     Image.AddNewLayer;
+    ToolManager.ToolOpen;
     FInstance.ScrollLayerStackOnItem(Image.CurrentLayerIndex);
   end;
 end;
@@ -972,7 +1030,11 @@ function TImageActions.NewLayer(ALayer: TBGRABitmap; AName: string;
 begin
   if image.NbLayers < MaxLayersToAdd then
   begin
+    if CurrentTool in[ptMoveLayer,ptRotateLayer,ptZoomLayer,ptLayerMapping,ptTextureMapping,ptDeformation] then
+      ChooseTool(ptHand);
+    ToolManager.ToolCloseDontReopen;
     Image.AddNewLayer(ALayer, AName, ABlendOp);
+    ToolManager.ToolOpen;
     FInstance.ScrollLayerStackOnItem(Image.CurrentLayerIndex);
     result := true;
   end else
@@ -988,7 +1050,11 @@ function TImageActions.NewLayer(ALayer: TBGRALayerCustomOriginal;
 begin
   if image.NbLayers < MaxLayersToAdd then
   begin
+    if CurrentTool in[ptMoveLayer,ptRotateLayer,ptZoomLayer,ptLayerMapping,ptTextureMapping,ptDeformation] then
+      ChooseTool(ptHand);
+    ToolManager.ToolCloseDontReopen;
     Image.AddNewLayer(ALayer, AName, ABlendOp, AMatrix);
+    ToolManager.ToolOpen;
     FInstance.ScrollLayerStackOnItem(Image.CurrentLayerIndex);
     result := true;
   end else
@@ -1010,9 +1076,11 @@ end;
 
 procedure TImageActions.RasterizeLayer;
 begin
-  if CurrentTool in[ptMoveLayer,ptRotateLayer,ptZoomLayer,ptLayerMapping] then
+  if CurrentTool in[ptMoveLayer,ptRotateLayer,ptZoomLayer,ptLayerMapping,ptTextureMapping,ptDeformation] then
     ChooseTool(ptHand);
+  ToolManager.ToolCloseDontReopen;
   Image.RasterizeLayer;
+  ToolManager.ToolOpen;
   FInstance.ScrollLayerStackOnItem(Image.CurrentLayerIndex);
 end;
 
@@ -1020,6 +1088,7 @@ procedure TImageActions.MergeLayerOver;
 begin
   if (Image.CurrentLayerIndex <> -1) and (image.NbLayers > 1) then
   begin
+    ChooseTool(ptHand);
     Image.MergeLayerOver;
     FInstance.ScrollLayerStackOnItem(Image.CurrentLayerIndex);
   end;
@@ -1031,7 +1100,11 @@ begin
   if (Image.CurrentLayerIndex <> -1) and (Image.NbLayers > 1) then
   begin
     idx := Image.CurrentLayerIndex;
+    if CurrentTool in[ptMoveLayer,ptRotateLayer,ptZoomLayer,ptLayerMapping,ptTextureMapping,ptDeformation] then
+      ChooseTool(ptHand);
+    ToolManager.ToolCloseDontReopen;
     Image.RemoveLayer;
+    ToolManager.ToolOpen;
     FInstance.ScrollLayerStackOnItem(idx);
   end;
 end;

+ 191 - 9
lazpaint/image/uimagediff.pas

@@ -105,8 +105,11 @@ type
   private
     previousOpacity,nextOpacity: byte;
     layerId: integer;
+    layerBounds: TRect;
   protected
     function GetImageDifferenceKind: TImageDifferenceKind; override;
+    function GetChangingBounds: TRect; override;
+    function GetChangingBoundsDefined: boolean; override;
     function GetIsIdentity: boolean; override;
   public
     constructor Create(ADestination: TState; ALayerId: integer; ANewOpacity: byte);
@@ -202,8 +205,11 @@ type
   private
     previousVisible,nextVisible: boolean;
     layerId: integer;
+    layerBounds: TRect;
   protected
     function GetImageDifferenceKind: TImageDifferenceKind; override;
+    function GetChangingBounds: TRect; override;
+    function GetChangingBoundsDefined: boolean; override;
     function GetIsIdentity: boolean; override;
   public
     constructor Create(ADestination: TState; ALayerId: integer; ANewVisible: boolean);
@@ -217,8 +223,11 @@ type
   private
     previousBlendOp,nextBlendOp: TBlendOperation;
     layerId: integer;
+    layerBounds: TRect;
   protected
     function GetImageDifferenceKind: TImageDifferenceKind; override;
+    function GetChangingBounds: TRect; override;
+    function GetChangingBoundsDefined: boolean; override;
     function GetIsIdentity: boolean; override;
   public
     constructor Create(ADestination: TState; ALayerId: integer; ANewBlendOp: TBlendOperation);
@@ -483,6 +492,8 @@ type
     layerOverIndex: integer;
     layerOverCompressedBackup: TStoredLayer;
     layerUnderCompressedBackup: TStoredLayer;
+    mergeVectorial: boolean;
+    mergeVectorialGuid: TGuid;
     constructor Create(ADestination: TState; ALayerOverIndex: integer);
     function UsedMemory: int64; override;
     function TryCompress: boolean; override;
@@ -704,7 +715,9 @@ begin
   img := AState as TImageState;
   idxOrig := img.LayeredBitmap.IndexOfOriginal(FOriginalGuid);
   if idxOrig<>-1 then
-    FDiff.Apply(img.LayeredBitmap.Original[idxOrig]);
+    FDiff.Apply(img.LayeredBitmap.Original[idxOrig])
+  else
+    raise exception.Create('Cannot find original');
 end;
 
 procedure TVectorOriginalEmbeddedDifference.UnapplyTo(AState: TState);
@@ -716,7 +729,9 @@ begin
   img := AState as TImageState;
   idxOrig := img.LayeredBitmap.IndexOfOriginal(FOriginalGuid);
   if idxOrig<>-1 then
-    FDiff.Unapply(img.LayeredBitmap.Original[idxOrig]);
+    FDiff.Unapply(img.LayeredBitmap.Original[idxOrig])
+  else
+    raise exception.Create('Cannot find original');
 end;
 
 { TDiscardOriginalDifference }
@@ -929,17 +944,40 @@ begin
     shape.BackFill.Transform(imgState.LayeredBitmap.LayerOriginalMatrix[ALayerIndex]);
     orig.AddShape(shape);
   end else
+  if imgState.LayeredBitmap.LayerOriginalClass[ALayerIndex]=TBGRALayerImageOriginal then
+  begin
+    temp := (imgState.LayeredBitmap.LayerOriginal[ALayerIndex] as TBGRALayerImageOriginal).GetImageCopy;
+    if temp <> nil then
+    begin
+      if not temp.Empty then
+      begin
+        shape := TRectShape.Create(orig);
+        shape.QuickDefine(PointF(-0.5,-0.5),PointF(temp.Width-0.5,temp.Height-0.5));
+        shape.PenStyle := ClearPenStyle;
+        if temp.Equals(temp.GetPixel(0,0)) then
+          shape.BackFill.SetSolid(temp.GetPixel(0,0))
+          else shape.BackFill.SetTexture(temp,AffineMatrixIdentity,255,trNone);
+        shape.Transform(imgState.LayeredBitmap.LayerOriginalMatrix[ALayerIndex]);
+        with imgState.LayeredBitmap.LayerOffset[ALayerIndex] do
+          shape.Transform(AffineMatrixTranslation(-X-FSourceBounds.Left,-Y-FSourceBounds.Top));
+        orig.AddShape(shape);
+      end;
+      temp.FreeReference;
+    end;
+  end else
   begin
     source := imgState.LayeredBitmap.LayerBitmap[ALayerIndex];
     if not source.Empty then
     begin
+      temp := source.GetPart(FSourceBounds) as TBGRABitmap;
       shape := TRectShape.Create(orig);
       shape.QuickDefine(PointF(-0.5,-0.5),PointF(FSourceBounds.Width-0.5,FSourceBounds.Height-0.5));
       shape.PenStyle := ClearPenStyle;
-      temp := source.GetPart(FSourceBounds) as TBGRABitmap;
-      shape.BackFill.SetTexture(temp,AffineMatrixIdentity,255,trNone);
-      temp.FreeReference;
+      if temp.Equals(temp.GetPixel(0,0)) then
+        shape.BackFill.SetSolid(temp.GetPixel(0,0))
+        else shape.BackFill.SetTexture(temp,AffineMatrixIdentity,255,trNone);
       orig.AddShape(shape);
+      temp.FreeReference;
     end;
   end;
   result := orig;
@@ -1143,6 +1181,7 @@ begin
     imgState.LayeredBitmap.LayerOriginalRenderStatus[layerIdx] := orsNone;
     imgState.LayeredBitmap.RenderLayerFromOriginal(layerIdx);
   end;
+  imgState.LayeredBitmap.RemoveUnusedOriginals;
 end;
 
 procedure TReplaceLayerByOriginalDifference.UnapplyTo(AState: TState);
@@ -1637,7 +1676,17 @@ end;
 
 function TSetLayerBlendOpStateDifference.GetImageDifferenceKind: TImageDifferenceKind;
 begin
-  Result:= idkChangeLayer;
+  Result:= idkChangeImage;
+end;
+
+function TSetLayerBlendOpStateDifference.GetChangingBounds: TRect;
+begin
+  Result:= layerBounds;
+end;
+
+function TSetLayerBlendOpStateDifference.GetChangingBoundsDefined: boolean;
+begin
+  Result:= true;
 end;
 
 function TSetLayerBlendOpStateDifference.GetIsIdentity: boolean;
@@ -1658,6 +1707,8 @@ begin
   if idx =-1 then
     raise exception.Create('Layer not found');
   previousBlendOp:= imgDest.BlendOperation[idx];
+  layerBounds := imgDest.LayerBitmap[idx].GetImageBounds;
+  with imgDest.LayerOffset[idx] do layerBounds.Offset(x,y);
   ApplyTo(imgDest);
 end;
 
@@ -1685,7 +1736,17 @@ end;
 
 function TSetLayerVisibleStateDifference.GetImageDifferenceKind: TImageDifferenceKind;
 begin
-  Result:= idkChangeLayer;
+  Result:= idkChangeImage;
+end;
+
+function TSetLayerVisibleStateDifference.GetChangingBounds: TRect;
+begin
+  Result:= layerBounds;
+end;
+
+function TSetLayerVisibleStateDifference.GetChangingBoundsDefined: boolean;
+begin
+  Result:= true;
 end;
 
 function TSetLayerVisibleStateDifference.GetIsIdentity: boolean;
@@ -1706,6 +1767,8 @@ begin
   if idx =-1 then
     raise exception.Create('Layer not found');
   previousVisible:= imgDest.LayerVisible[idx];
+  layerBounds := imgDest.LayerBitmap[idx].GetImageBounds;
+  with imgDest.LayerOffset[idx] do layerBounds.Offset(x,y);
   ApplyTo(imgDest);
 end;
 
@@ -1733,7 +1796,17 @@ end;
 
 function TSetLayerOpacityStateDifference.GetImageDifferenceKind: TImageDifferenceKind;
 begin
-  Result:= idkChangeLayer;
+  Result:= idkChangeImage;
+end;
+
+function TSetLayerOpacityStateDifference.GetChangingBounds: TRect;
+begin
+  Result:= layerBounds;
+end;
+
+function TSetLayerOpacityStateDifference.GetChangingBoundsDefined: boolean;
+begin
+  Result:= true;
 end;
 
 function TSetLayerOpacityStateDifference.GetIsIdentity: boolean;
@@ -1754,6 +1827,8 @@ begin
   if idx =-1 then
     raise exception.Create('Layer not found');
   previousOpacity:= imgDest.LayerOpacity[idx];
+  layerBounds := imgDest.LayerBitmap[idx].GetImageBounds;
+  with imgDest.LayerOffset[idx] do layerBounds.Offset(x,y);
   ApplyTo(imgDest);
 end;
 
@@ -2093,6 +2168,7 @@ constructor TMergeLayerOverStateDifference.Create(ADestination: TState;
   ALayerOverIndex: integer);
 var
   imgDest: TImageState;
+  totalCost: Integer;
 begin
   inherited Create(ADestination);
   imgDest := ADestination as TImageState;
@@ -2101,12 +2177,30 @@ begin
   if ALayerOverIndex = 0 then
     raise exception.Create('First layer cannot be merged over');
 
+  mergeVectorial := false;
+  mergeVectorialGuid := GUID_NULL;
   layerOverIndex := ALayerOverIndex;
   with imgDest.LayeredBitmap do
   begin
     previousActiveLayerId:= LayerUniqueId[imgDest.SelectedImageLayerIndex];
     layerOverCompressedBackup := TStoredLayer.Create(imgDest.LayeredBitmap, ALayerOverIndex, true);
     layerUnderCompressedBackup := TStoredLayer.Create(imgDest.LayeredBitmap, ALayerOverIndex-1, true);
+    if ((LayerOriginalClass[ALayerOverIndex] = TVectorOriginal) or
+       (LayerOriginalClass[ALayerOverIndex-1] = TVectorOriginal) or
+       (LayerOriginalClass[ALayerOverIndex] = TBGRALayerGradientOriginal) or
+       (LayerOriginalClass[ALayerOverIndex-1] = TBGRALayerGradientOriginal)) and
+       (BlendOperation[ALayerOverIndex] = boTransparent) and
+       (BlendOperation[ALayerOverIndex-1] = boTransparent) then
+    begin
+      totalCost := 0;
+      if LayerOriginalClass[ALayerOverIndex] = TVectorOriginal then
+        inc(totalCost, TVectorOriginal(LayerOriginal[ALayerOverIndex]).GetShapesCost)
+      else inc(totalCost, 10);
+      if LayerOriginalClass[ALayerOverIndex-1] = TVectorOriginal then
+        inc(totalCost, TVectorOriginal(LayerOriginal[ALayerOverIndex-1]).GetShapesCost)
+      else inc(totalCost, 10);
+      if totalCost <= MediumShapeCost then mergeVectorial := true;
+    end;
   end;
 
   //select layer under and merge
@@ -2128,6 +2222,80 @@ end;
 procedure TMergeLayerOverStateDifference.ApplyTo(AState: TState);
 var
   merged: TBGRABitmap;
+  mergedOriginal: TVectorOriginal;
+
+  procedure AppendToMergedOriginal(ALayeredBitmap: TBGRALayeredBitmap; ALayerIndex: integer);
+  var
+    vectOrig: TVectorOriginal;
+    m: TAffineMatrix;
+    i: Integer;
+    s: TVectorShape;
+    temp: TBGRABitmap;
+    b: TRect;
+    c: TBGRALayerOriginalAny;
+  begin
+    c := ALayeredBitmap.LayerOriginalClass[ALayerIndex];
+    m := ALayeredBitmap.LayerOriginalMatrix[ALayerIndex];
+    if c = TVectorOriginal then
+    begin
+      vectOrig := ALayeredBitmap.LayerOriginal[ALayerIndex] as TVectorOriginal;
+      for i := 0 to vectOrig.ShapeCount-1 do
+      begin
+        s := vectOrig.Shape[i].Duplicate;
+        s.Transform(m);
+        mergedOriginal.AddShape(s);
+      end;
+    end else
+    if c = TBGRALayerGradientOriginal then
+    begin
+      s := TRectShape.Create(mergedOriginal);
+      s.PenStyle := ClearPenStyle;
+      s.BackFill.SetGradient(ALayeredBitmap.LayerOriginal[ALayerIndex] as TBGRALayerGradientOriginal, false);
+      s.BackFill.Transform(m);
+      s.QuickDefine(PointF(-0.5,-0.5), PointF(ALayeredBitmap.width-0.5,ALayeredBitmap.Height-0.5));
+      mergedOriginal.AddShape(s);
+    end else
+    if c = TBGRALayerImageOriginal then
+    begin
+      temp := (ALayeredBitmap.LayerOriginal[ALayerIndex] as TBGRALayerImageOriginal).GetImageCopy;
+      if Assigned(temp) then
+      begin
+        if not temp.Empty then
+        begin
+          s := TRectShape.Create(mergedOriginal);
+          s.PenStyle := ClearPenStyle;
+          if temp.Equals(temp.GetPixel(0,0)) then
+            s.BackFill.SetSolid(temp.GetPixel(0,0))
+            else s.BackFill.SetTexture(temp, AffineMatrixIdentity, 255, trNone);
+          s.QuickDefine(PointF(-0.5,-0.5), PointF(temp.width-0.5,temp.Height-0.5));
+          s.Transform(m);
+          mergedOriginal.AddShape(s);
+        end;
+        temp.FreeReference;
+      end;
+    end else
+    begin
+      if Assigned(ALayeredBitmap.LayerBitmap[ALayerIndex]) then
+      begin
+        b := ALayeredBitmap.LayerBitmap[ALayerIndex].GetImageBounds;
+        if not b.IsEmpty then
+        begin
+          temp := ALayeredBitmap.LayerBitmap[ALayerIndex].GetPart(b) as TBGRABitmap;
+          s := TRectShape.Create(mergedOriginal);
+          s.PenStyle := ClearPenStyle;
+          if temp.Equals(temp.GetPixel(0,0)) then
+            s.BackFill.SetSolid(temp.GetPixel(0,0))
+            else s.BackFill.SetTexture(temp, AffineMatrixIdentity, 255, trNone);
+          s.QuickDefine(PointF(-0.5,-0.5), PointF(temp.width-0.5,temp.Height-0.5));
+          with ALayeredBitmap.LayerOffset[ALayerIndex] do
+            s.Transform(AffineMatrixTranslation(b.Left+X,b.Top+Y));
+          mergedOriginal.AddShape(s);
+          temp.FreeReference;
+        end;
+      end;
+    end;
+  end;
+
 begin
   inherited ApplyTo(AState);
   with AState as TImageState do
@@ -2135,6 +2303,18 @@ begin
     if layerOverIndex >= NbLayers then exit;
 
      SelectedImageLayerIndex := layerOverIndex-1;
+     if mergeVectorial then
+     begin
+       mergedOriginal := TVectorOriginal.Create;
+       mergedOriginal.Guid := mergeVectorialGuid;
+       AppendToMergedOriginal(LayeredBitmap, layerOverIndex-1);
+       AppendToMergedOriginal(LayeredBitmap, layerOverIndex);
+       LayeredBitmap.AddOriginal(mergedOriginal);
+       mergeVectorialGuid := mergedOriginal.Guid;
+       LayeredBitmap.LayerOriginalGuid[layerOverIndex-1] := mergedOriginal.Guid;
+       LayeredBitmap.LayerOriginalMatrix[layerOverIndex-1] := AffineMatrixIdentity;
+       LayeredBitmap.RenderLayerFromOriginal(layerOverIndex-1);
+     end else
      if (LayerBitmap[layerOverIndex-1].Width <> Width) or
         (LayerBitmap[layerOverIndex-1].Height <> Height) or
         (LayerOffset[layerOverIndex-1].X <> 0) or
@@ -2241,7 +2421,7 @@ begin
         if duplicateOriginal then
         begin
           stream:= TMemoryStream.Create;
-          SaveOriginalToStream(sourceLayerIndex, stream);
+          SaveOriginalToStream(LayerOriginalGuid[sourceLayerIndex], stream);
           stream.Position:= 0;
           AddOriginalFromStream(stream, duplicateGuid, true);
           stream.Free;
@@ -2510,6 +2690,7 @@ begin
   begin
     idx := lState.LayeredBitmap.GetLayerIndexFromId(layerId);
     if idx = -1 then raise exception.Create('Layer not found');
+    lState.LayeredBitmap.Unfreeze(idx);
     if ChangeImageLayer and (lState.LayeredBitmap.LayerOriginalGuid[idx] <> GUID_NULL) then raise exception.Create('Does not apply to originals');
     if ChangeImageLayer then
     begin
@@ -2534,6 +2715,7 @@ begin
   begin
     idx := lState.LayeredBitmap.GetLayerIndexFromId(layerId);
     if idx = -1 then raise exception.Create('Layer not found');
+    lState.LayeredBitmap.Unfreeze(idx);
     if ChangeImageLayer and (lState.LayeredBitmap.LayerOriginalGuid[idx] <> GUID_NULL) then raise exception.Create('Does not apply to originals');
     if ChangeImageLayer then
     begin

+ 26 - 1
lazpaint/image/uimagestate.pas

@@ -124,6 +124,7 @@ type
     function SwapRedBlue: TCustomImageDifference;
     function LinearNegative: TCustomImageDifference;
     function Negative: TCustomImageDifference;
+    function ClearLayer: TCustomImageDifference;
     function ComputeLayerOffsetDifference(AOffsetX, AOffsetY: integer): TCustomImageDifference;
     function ComputeSelectionTransformDifference: TCustomImageDifference;
     function ComputeLayerMatrixDifference(AIndex: integer; APrevMatrix, ANewMatrix: TAffineMatrix): TCustomImageDifference;
@@ -172,7 +173,7 @@ type
 implementation
 
 uses BGRAStreamLayers, UImageDiff, BGRALzpCommon, UFileSystem, BGRATransform,
-  UResourceStrings;
+  UResourceStrings, LCVectorOriginal;
 
 { TImageState }
 
@@ -745,9 +746,21 @@ begin
 end;
 
 procedure TImageState.SaveToStreamAs(AStream: TStream; AFormat: TBGRAImageFormat);
+var
+  i: Integer;
+  curGuid: TGuid;
 begin
   if LayeredBitmap <> nil then
+  begin
+    if AFormat = ifLazPaint then
+    begin
+      curGuid := LayeredBitmap.LayerOriginalGuid[GetCurrentLayerIndex];
+      for i := 0 to LayeredBitmap.OriginalCount-1 do
+        if LayeredBitmap.OriginalGuid[i] <> curGuid then
+          LayeredBitmap.UnloadOriginal(i);
+    end;
     LayeredBitmap.SaveToStreamAs(AStream, SuggestImageExtension(AFormat));
+  end;
 end;
 
 procedure TImageState.SaveOriginalToStream(AStream: TStream);
@@ -1027,6 +1040,18 @@ begin
   result := AssignWithUndo(newImg, true, SelectedImageLayerIndex);
 end;
 
+function TImageState.ClearLayer: TCustomImageDifference;
+begin
+  if (LayeredBitmap = nil) or SelectedImageLayer.Empty then
+    result := nil
+  else
+  begin
+    result := TReplaceLayerByCustomOriginalDifference.Create(self,
+                   SelectedImageLayerIndex, true,
+                   TVectorOriginal.Create);
+  end;
+end;
+
 function TImageState.RotateCW: TCustomImageDifference;
 begin
   if LayeredBitmap = nil then

+ 11 - 9
lazpaint/image/ustatetype.pas

@@ -32,7 +32,7 @@ type
   end;
 
   TImageDifferenceKind = (idkChangeImageAndSelection, idkChangeStack, idkChangeSelection,
-                           idkChangeImage, idkChangeLayer);
+                           idkChangeImage);
 
   { TCustomImageDifference }
 
@@ -205,6 +205,7 @@ type
     FOriginalRenderStatus: TOriginalRenderStatus;
     FOriginalMatrix: TAffineMatrix;
     FOriginalDraft: boolean;
+    FOriginalGuid: TGuid;
   public
     constructor Create(ALayeredImage: TBGRALayeredBitmap; AIndex: integer);
     constructor Create(ALayeredImage: TBGRALayeredBitmap; AIndex: integer;
@@ -416,16 +417,12 @@ begin
   for i := 0 to FDiffs.Count-1 do
     case FDiffs[i].GetImageDifferenceKind of
       idkChangeImageAndSelection: result := idkChangeImageAndSelection;
-      idkChangeSelection: if result in[idkChangeImage,idkChangeLayer,idkChangeImageAndSelection] then
+      idkChangeSelection: if result in[idkChangeImage,idkChangeImageAndSelection] then
                             result := idkChangeImageAndSelection
                           else result := idkChangeSelection;
       idkChangeImage: if result in[idkChangeImageAndSelection,idkChangeSelection] then
                             result := idkChangeImageAndSelection
                           else result := idkChangeImage;
-      idkChangeLayer: if result in[idkChangeImageAndSelection,idkChangeSelection] then
-                            result := idkChangeImageAndSelection
-                      else if result = idkChangeStack then
-                        result := idkChangeLayer;
     end;
 end;
 
@@ -1069,7 +1066,8 @@ begin
       inherited Create(ALayeredImage.LayerBitmap[AIndex]);
 
     FOriginalData := TMemoryStream.Create;
-    ALayeredImage.SaveOriginalToStream(ALayeredImage.LayerOriginalGuid[AIndex], FOriginalData);
+    FOriginalGuid := ALayeredImage.LayerOriginalGuid[AIndex];
+    ALayeredImage.SaveOriginalToStream(FOriginalGuid, FOriginalData);
     FOriginalMatrix := ALayeredImage.LayerOriginalMatrix[AIndex];
     FOriginalDraft := ALayeredImage.LayerOriginalRenderStatus[AIndex] in[orsDraft,orsPartialDraft];
   end else
@@ -1092,7 +1090,9 @@ begin
   if Assigned(FOriginalData) then
   begin
     FOriginalData.Position:= 0;
-    idxOrig := ALayeredImage.AddOriginalFromStream(FOriginalData, true);
+    idxOrig := ALayeredImage.IndexOfOriginal(FOriginalGuid);
+    if idxOrig = -1 then
+      idxOrig := ALayeredImage.AddOriginalFromStream(FOriginalData, FOriginalGuid, true);
 
     if not FOriginalBitmapStored then
     begin
@@ -1120,7 +1120,9 @@ begin
   if Assigned(FOriginalData) then
   begin
     FOriginalData.Position:= 0;
-    idxOrig := ALayeredImage.AddOriginalFromStream(FOriginalData, true);
+    idxOrig := ALayeredImage.IndexOfOriginal(FOriginalGuid);
+    if idxOrig = -1 then
+      idxOrig := ALayeredImage.AddOriginalFromStream(FOriginalData, FOriginalGuid, true);
     if not FOriginalBitmapStored then
     begin
       ALayeredImage.LayerOriginalGuid[FIndex] := ALayeredImage.OriginalGuid[idxOrig];

+ 5 - 3
lazpaint/lazpaint.lpi

@@ -11,17 +11,19 @@
       <UseXPManifest Value="True"/>
       <XPManifest>
         <DpiAware Value="True"/>
+        <TextName Value="LazPaint"/>
+        <TextDesc Value="Paint program made with Lazarus"/>
       </XPManifest>
       <Icon Value="0"/>
     </General>
     <i18n>
-      <EnableI18N Value="True"/>
+      <EnableI18N Value="True" LFM="False"/>
       <OutDir Value="release\bin\i18n"/>
     </i18n>
     <VersionInfo>
       <UseVersionInfo Value="True"/>
       <MajorVersionNr Value="7"/>
-      <RevisionNr Value="6"/>
+      <RevisionNr Value="7"/>
       <CharSet Value="04B0"/>
       <StringTable CompanyName="http://sourceforge.net/projects/lazpaint/" ProductName="LazPaint" InternalName="lazpaint" OriginalFilename="lazpaint.exe"/>
     </VersionInfo>
@@ -328,7 +330,7 @@
       </Item1>
       <Item2>
         <PackageName Value="BGRABitmapPack"/>
-        <MinVersion Major="10" Minor="6" Release="2" Valid="True"/>
+        <MinVersion Major="10" Minor="6" Release="3" Valid="True"/>
       </Item2>
       <Item3>
         <PackageName Value="lazpaintcontrols"/>

+ 1 - 1
lazpaint/lazpaintembeddedpack.lpk

@@ -26,7 +26,7 @@
         </Debugging>
       </Linking>
     </CompilerOptions>
-    <Version Major="7" Release="6"/>
+    <Version Major="7" Release="7"/>
     <Files Count="94">
       <Item1>
         <Filename Value="lazpaintinstance.pas"/>

+ 1 - 1
lazpaint/lazpaintmainform.lfm

@@ -7920,7 +7920,7 @@ object FMain: TFMain
       Caption = 'Shift colors...'
       ImageIndex = 69
       OnExecute = ScriptExecute
-      ShortCut = 24576
+      ShortCut = 24648
     end
     object ColorColorize: TAction
       Category = 'Colors'

+ 30 - 9
lazpaint/lazpaintmainform.pas

@@ -836,8 +836,9 @@ type
 
     procedure PaintPictureNow;
     procedure InvalidatePicture;
-    function TryOpenFileUTF8(filenameUTF8: string; AddToRecent: Boolean=True; ALoadedImage: PImageEntry = nil;
-      ASkipDialogIfSingleImage: boolean = false): Boolean;
+    function TryOpenFileUTF8(filenameUTF8: string; AddToRecent: Boolean=True;
+      ALoadedImage: PImageEntry = nil; ASkipDialogIfSingleImage: boolean = false;
+      AAllowDuplicate: boolean = false): Boolean;
     function PictureCanvasOfs: TPoint;
     procedure UpdateLineCapBar;
     procedure UpdateColorToolbar(AUpdateColorDiff: boolean);
@@ -1297,7 +1298,8 @@ begin
     if AVars.IsReferenceDefined(vFileName) then
     begin
       FLazPaintInstance.ShowTopmost(topInfo);
-      if TryOpenFileUTF8(AVars.GetString(vFilename), true, nil) then
+      if TryOpenFileUTF8(AVars.GetString(vFilename), true, nil,
+           false, AVars.Booleans['AllowDuplicate']) then
         result := srOk
       else
         result := srException;
@@ -3023,6 +3025,7 @@ var
 begin
   openParams := TVariableSet.Create('FileOpen');
   openParams.AddString('FileName',Image.currentFilenameUTF8);
+  openParams.AddBoolean('AllowDuplicate',true);
   Scripting.CallScriptFunction(openParams);
   openParams.Free;
 end;
@@ -3547,10 +3550,12 @@ begin
 end;
 
 function TFMain.TryOpenFileUTF8(filenameUTF8: string; AddToRecent: Boolean;
-     ALoadedImage: PImageEntry; ASkipDialogIfSingleImage: boolean): Boolean;
+     ALoadedImage: PImageEntry; ASkipDialogIfSingleImage: boolean;
+     AAllowDuplicate: boolean): Boolean;
 var
   newPicture: TImageEntry;
   format: TBGRAImageFormat;
+  dupIndex: Integer;
 
   procedure StartImport;
   begin
@@ -3631,14 +3636,30 @@ begin
     else
     if format in[ifIco,ifTiff] then
     begin
-      newPicture := ShowPreviewDialog(LazPaintInstance, FilenameUTF8, 'TIFF', ASkipDialogIfSingleImage);
-      ImportNewPicture;
+      if (format = ifTiff) and AAllowDuplicate and (Image.FrameIndex <> -1) then dupIndex := Image.FrameIndex else dupIndex := -1;
+      newPicture := ShowPreviewDialog(LazPaintInstance, FilenameUTF8, 'TIFF',
+        ASkipDialogIfSingleImage, dupIndex);
+      if newPicture.isDuplicate then
+      begin
+        newPicture.FreeAndNil;
+        Image.FrameIndex:= newPicture.frameIndex;
+        Image.OnImageChanged.NotifyObservers;
+      end
+      else ImportNewPicture;
     end
     else
     if format = ifGif then
     begin
-      newPicture := ShowPreviewDialog(LazPaintInstance, FilenameUTF8, rsAnimatedGIF, ASkipDialogIfSingleImage);
-      ImportNewPicture;
+      if AAllowDuplicate and (Image.FrameIndex <> -1) then dupIndex := Image.FrameIndex else dupIndex := -1;
+      newPicture := ShowPreviewDialog(LazPaintInstance, FilenameUTF8, rsAnimatedGIF,
+        ASkipDialogIfSingleImage, dupIndex);
+      if newPicture.isDuplicate then
+      begin
+        newPicture.FreeAndNil;
+        Image.FrameIndex:= newPicture.frameIndex;
+        Image.OnImageChanged.NotifyObservers;
+      end
+      else ImportNewPicture;
     end else
     begin
       StartImport;
@@ -3861,7 +3882,7 @@ end;
 procedure TFMain.InvalidatePicture;
 begin
   if Assigned(FImageView) and Assigned(FLayout) then
-    FImageView.InvalidatePicture(False, FLayout.WorkArea, Point(0,0), self);
+    FImageView.InvalidatePicture(True, FLayout.WorkArea, Point(0,0), self);
 end;
 
 function TFMain.GetUseImageBrowser: boolean;

+ 3 - 1
lazpaint/lazpainttype.pas

@@ -10,7 +10,7 @@ uses
   {$IFDEF LINUX}, InterfaceBase{$ENDIF};
 
 const
-  LazPaintVersion = 7000600;
+  LazPaintVersion = 7000700;
 
   function LazPaintVersionStr: string;
 
@@ -118,6 +118,7 @@ type
       bmp: TBGRABitmap;
       bpp: integer;
       frameIndex: integer;
+      isDuplicate: boolean;
       class function Empty: TImageEntry; static;
       class function NewFrameIndex: integer; static;
       procedure FreeAndNil;
@@ -527,6 +528,7 @@ begin
   result.bmp := nil;
   result.bpp := 0;
   result.frameIndex := 0;
+  result.isDuplicate:= false;
 end;
 
 class function TImageEntry.NewFrameIndex: integer;

+ 1 - 0
lazpaint/maintoolbar.inc

@@ -5,6 +5,7 @@ begin
   if FToolbarElementsInitDone then exit;
   FToolbarElementsInitDone:= true;
 
+  Panel_ToolbarBackground.PopupMenu := PopupToolbar;
   Perspective_Repeat.OnClick := @Perspective_RepeatClick;
   Perspective_TwoPlanes.OnClick := @Perspective_TwoPlanesClick;
   Shape_PenColor.OnMouseDown := @Shape_PenColorMouseDown;

+ 1195 - 0
lazpaint/release/bin/i18n/lazpaint.ar.po

@@ -2309,3 +2309,1198 @@ msgstr ""
 msgid "Yes"
 msgstr "نعم"
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "تبرع..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "عنا"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "مؤلفون:"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular, FabienWang, Lainz"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "الصفحة الرئيسة"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "المكتبات المستعملة"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "الرخصة"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "مفتوح المصدر (جي بي ال 3) "
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "ضبط المنحنيات"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "تجاهل المنحنى الحالي و البدء من جديدة"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "قسلمة"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "حذف النقطة المحددة (Del)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "عملية المزج"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr "فئة عملية المزج"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "مزيج من عمليات Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr "آخر"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "مزيج من عمليات LazPaint وPaint.NET"
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr "نمط علوي"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr " معاينة عملية المزيج  مع الصورة المحددة في الأعلى"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr "نمط سفلي"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "معاينة عملية المزيج  مع الصورة المحددة في الأسفل"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr "معاينة مع"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "عملية المزج المحددة :"
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr "اساس SVG"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "  عمليات المزج الأساسية المتاحة تقريبا في جميع برامج تحرير الصور"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "تصفح الصور"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "الصعود بمجلد"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr "عرض إيقونات كبيرة"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr "عرض التفاصيل و المعاينة"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "حجم الصورة"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "نمط الإستدارة "
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "مرسي :"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "الطول :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "عرض"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "حدة"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "تضاعف"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "إزاحة"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "تلوين"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "تصحيح درجة اللون و الخفة"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "الألوان"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "تدرج"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "مسبقا"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "تحرير القناع"
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "تحميل قناع"
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "ضبابية مخصصة"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "فتح ملف تدرج الرمادي"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "زخرف"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "إشراف"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "تطبيق الوضيفة"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "تصحيح درجة اللون و الخفة"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "."
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "قائمة الصور"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr "تعيين آلي للملفات عند فتحها"
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr "تعيين آلي للملفات عند التحرير و الحفظ"
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "قائمة الصور فارغة"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr "حذف الصور الغير موجودة"
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr "حذف الصور الغير معينة"
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr "إزالة تعيين الملفات الغير موجودة"
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "إضافة الصورة الى القائمة"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr "تفعيل/تعطيل التعيين الآلي للملفات المعالجة "
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr "تفعيل/تعطيل التناسب الآلي في نافذة LazPaint"
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr "تعيين كل الملفات للمعالجة"
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "التبديل إلى النافذة الصغيرة "
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "تحريك العناصر المحددة للأسفل"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "تحريك العناصر المحددة للاعلى"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "التبديل الى النافذة العادية"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "فتح الصورة الحالية"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr " فتح الصورة التالية (Alt-Right)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr "فتح الصورة التالية"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "فتح الصورة السابقة (Alt-Left)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr "فتح الصورة السابقة"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "حذف الصور المحددة من القائمة"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr "عدم تعيين كل الملفات للمعالجة"
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "تحميل ..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "ضبابية الحركة"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "منحى"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "المدى :"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "إنتقاء الصورة"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "صورة جديدة"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "الطول :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "العرض :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "مرشح الضجيج"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "العتمة :"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "ضجيج تدرج رمادي"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "ضجيج لوني RGB"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "نسيج..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "جسم ثلاثي الابعاد"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "ضد الإسترداف"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "وجه بجهتين"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "نسيج متولد"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr "المادة المحددة"
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr "اللون :"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "اللون :"
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "الطول :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr "إضاءة طبيعية"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr "المواد :"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr "العتمة :"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr "فهرس :"
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "عرض"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr "زوم"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "المواد :"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "فتح نسيج"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "تصيير"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr "خارطة التظليل"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "لون"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "خارطة الإرتفاع"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "الإرتفاع الشامل"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "موقع الضوء"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "ألفا"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "G"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "إضاءة"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "الخفة الخطية"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "التشبيع"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "لون الخلفية"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "احتفظ"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "لون القلم"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "النسيج الحالي"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "تأخير البكس"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "حجم البيكسل :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "الجودة :"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr "قسلمة"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "حسب الضوء"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "المستوى :"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "تكوين..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "طباعة!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "زووم مناسب"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "طباعة"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "إبقاء نسبة الجانب"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "حجم الصورة"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "هوامش"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "أسفل"
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "إرتفاع:"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "اليسار:"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "توجه:"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "طابعات و اوراق"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "اليمين:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "الأعلى"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "العرض:"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "ضباب شعاعي"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "نصف القطر :"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "إعادة تشكيل"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "إبقاء نسبة الجانب"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "الطول :"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "الجودة :"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "عرض"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "حفظ"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "موافق"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr ""
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr "القدر :"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "إلغاء"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "موافق"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "سحب الألوان  "
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "تصحيح درجة اللون و الخفة"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "تدرج"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "التشبيع"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr " الأدوات "
+

+ 1196 - 0
lazpaint/release/bin/i18n/lazpaint.cs.po

@@ -2306,3 +2306,1199 @@ msgstr ""
 msgid "Yes"
 msgstr "Ano"
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Přispět..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "O programu"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Autoři:"
+
+#: tfabout.label_authorsvalue.caption
+#| msgid "Circular help by FabienWang and Lainz"
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular s pomocí FabienWang, Lainz a dalších"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Domovská stránka:"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "Použité knihovny:"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "Licence:"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "Otevřený kód (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Nastavit křivky"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Zahodit aktuální křivku a začít novou"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "Posterizace"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Odebrat vybrané body (Del)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "Operace míchání"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr "Kategorie operace mísení"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "Operace mísení jsou dostupné v Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr "Jiné"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "Operace mísení LazPaint a Paint.NET"
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr "Vzor přes"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr "Náhled operace mísení se zadaným obrázkem nahoře"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr "Vzor pod"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "Náhled operace mísení se zadaným obrázkem pod"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr "Náhled s"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Vybraná operace míchání :"
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr "Základní SVG"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "Základní operace mísení, který je dostupná prakticky ve všech editorech obrázků"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Procházet obrázky"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Jít o adresář výše"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr "Ukázat velké ikony"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr "Ukázat podrobnosti a náhled"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "Velikost plátna"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Převrácený režim"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "Kotva :"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "Výška :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "Šířka :"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "Jas"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "Násobek"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "Posun"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Obarvení"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Opravený odstín a světlost"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "Barevný"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "Odstín"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Předvolba"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Upravit masku..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Načíst masku..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "Vlastní rozostření"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Otevřít černobílý obrázek"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "Vytlačit"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "Směr :"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Použít funkci"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Opravný odstín a světlost"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Proměnné :"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "Seznam obrázků"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr "Samo odškrtnutí souborů po otevření"
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr "Samo odškrtnutí souborů po úpravě a uložení"
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "Prázdný seznam obrázků"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr "Odebrat neexistující obrázky"
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr "Odstranit nezaškrtnuté soubory"
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr "Odškrtnout neexistující soubory"
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "Přidat obrázek do seznamu"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr "Povolení/zakázaní samo zaškrtnutí pro zpracované soubory"
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr "Povolit/zakázat samopřiblížení obrázků v okně LazPaint"
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr "Zaškrtněte všechny soubory ke zpracování"
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "Přepnout na malé okno"
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "Přesunout vybrané položky dolů"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "Přesunout vybrané položky nahoru"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "Přepnout na normální okno"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "Otevřít aktuální obrázek"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr "Otevřít další soubor (Alt+Right)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr "Otevřít další soubor"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "Otevřít předchozí obrázek (Alt-Left)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr "Otevřít předchozí obrázek"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "Odebrat vybrané obrázky ze seznamu"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr "Odškrtnout všechny soubory pro zpracování"
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Načítání..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "Pohybové rozostření"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Orientovaný"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "Vzdálenost :"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "Vybrat obrázek"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "Nový obrázek"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "Výška :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "Šířka :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Šumový filtr"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Průhlednost:"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Šedý šum"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "RBG šum"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "Textura..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr "Ne tex."
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "3D objekt"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Antialiasing"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "2-stranné povrchy"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Interpolace textury"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr "Vybraný materiál"
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr "Barva :"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Barva :"
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "Výška :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr "Světelné normály :"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr "Materiály:"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr "Průhlednost :"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr "Zrcadl. index :"
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "Šířka :"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr "Měřítko"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Materiály"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "Otevřít texturu"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Vykreslení"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr "Stínová mapa"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "Barva"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Výšková mapa"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Celková výška :"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Pozice světla :"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "Alfa"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "G"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "Světlost"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Lineární světlost"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "Barevnost"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Barva pozadí"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Ponechat"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Barva pera"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "Aktuální textura"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "Pixelizace"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "Velikost bodu :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "Kvalita :"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr "Posterizace"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "Podle světlosti"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "Úrovně:"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Nastavit..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "Tisk!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Přizpůsobit zvětšení"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Tisk"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Udržovat poměr"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Velikost obrázku"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Okraje"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Dole:"
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Výška:"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Vlevo:"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Otočení:"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Tiskárna a papír:"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Vpravo:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Nahoře:"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Šířka:"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Radiální rozmazání"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "Poloměr :"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "Převzorkovat"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Udržovat poměr"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "Výška :"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "Kvalita :"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "Šířka :"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Uložit"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Ostření/Vyhlazení"
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr "Množství :"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "Posunout barvy"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Opravený odstín a světlost"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Odstín"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Barevnost"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "Nástroje"
+

File diff ditekan karena terlalu besar
+ 140 - 136
lazpaint/release/bin/i18n/lazpaint.de.po


+ 1199 - 0
lazpaint/release/bin/i18n/lazpaint.es.po

@@ -1698,6 +1698,10 @@ msgstr "El directorio no esta vacío"
 msgid "Dither layer using palette"
 msgstr "Entramado de capa usando paleta"
 
+#: uresourcestrings.rsduplicateimage
+msgid "Duplicate image"
+msgstr "Duplicar imagen"
+
 #: uresourcestrings.rseditmask
 msgctxt "uresourcestrings.rseditmask"
 msgid "Edit mask"
@@ -2320,3 +2324,1198 @@ msgstr "Capa vectorial"
 msgid "Yes"
 msgstr "Sí"
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr "Procedimiento %s falló al cargar."
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr "Falló la apertura del contexto de Tableta."
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Donar..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "Acerca de"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Autores:"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular ayudado por FabienWang, Lainz y otros"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Sitio Web:"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "Librerías usadas:"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "Licencia:"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "Código libre (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Ajustar curvas"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Desechar esta curva y empezar una nueva"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "Posterizar"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Sacar punto seleccionado (Supr)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "Operación de mezcla"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr "Categoría de operación de mezcla"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "Operaciónes de mezcla disponibles en Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr "Otra"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "Operaciónes de mezcla disponibles en LazPaint y Paint.NET"
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr "Patrón sobre"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr "Previsualización de la operación de mezcla con la imagen seleccionada encima"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr "Patrón debajo"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "Previsualización de la operación de mezcla con la imagen seleccionada debajo"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr "Previsualización con"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Operación seleccionada:"
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr "SVG Básico"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "Operaciónes de mezcla disponibles en casi todos los programas"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Explorar imágenes"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr "Utilizar esta carpeta al encendido"
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr "Crear carpeta o contenedor"
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Ir a la carpeta raíz"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr "Abrir archivos seleccionados"
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr "Icono grandes"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr "Detalles y previsualización"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr "Seleccionar unidad"
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "Tamaño de papel"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Modo de volteo"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "Anclaje:"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "Alto:"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "Ancho:"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "Intensidad"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "Multiplicar"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "Cambiar"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Colorizar"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Corregir matiz e iluminación"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "Saturación"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "Matiz"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Preajuste"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Editar máscara.."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Abrir máscara.."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "Desenfoque personalizado"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Abrir archivo de escala de grises"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "Realzar"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr "Preservar colores"
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr "Transparente"
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "Dirección:"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Aplicar función"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Corregido matiz e iluminación"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Variables:"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr "Pincel geométrico"
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr "Opacidad de degradado"
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr "Número de lados:"
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "Lista de imágenes"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr "Desactivar automáticamente la casilla del fichero cuando está abierto"
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr "Desactivar automáticamente la casilla del fichero cuando está modificado y guardado"
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "Llenar la lista de imágenes"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr "Sacar imágenes que no existan"
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr "Sacar imágenes con la casilla deactivada"
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr "Deactivar las casillas de los ficheros que no existan"
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "Añadir imágenes a la lista"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr "Deactivar automáticamente o no las casillas de los ficheros"
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr "Si se debe encajar la imagen en la ventana"
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr "Activar todas las casillas para procesamiento"
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "Cambiar a ventanita"
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "Mover el elemento seleccionado abajo"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "Mover el elemento seleccionado encima"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "Cambiar a ventana normal"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "Abrir la imagen seleccionada"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr "Abrir la imagen siguiente (Alt-Derecha)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr "Abrir la imagen siguiente"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "Abrir la imagen anterior (Alt-Izquierda)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr "Abrir la imagen anterior"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "Sacar imágenes selectadas de la lista"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr "Desactivar las casillas de todos los ficheros"
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Cargando..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "Desenfoque de movimiento"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Orientado"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "Distancia:"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "Eligir imagen"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "Nueva imágen"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr "32"
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr "Profundidad de bit:"
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "Alto:"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr "Proporción:"
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr "Memoria requerida:"
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "Ancho:"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Ruido"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Opacidad:"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Ruido con escala de grises"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "Ruido con colores"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "Textura..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr "No text."
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "Objeto 3D"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Antiafilado"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "2 caras"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Interpolación de textura"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr "Luz seleccionada"
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr "Material seleccionado"
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr "Color:"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Color:"
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "Alto:"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr "Iluminaciónes normales:"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr "Luces:"
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr "Materiales:"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr "Opacidad:"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr "Índice esp.:"
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "Ancho:"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr "Zoom"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr "Luces"
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Materiales"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "Abrir textura"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Renderizado"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr "Agregar una luz direccional"
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr "Agregar una luz puntual"
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr "Quitar luz seleccionada"
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr "Mapa sombreado"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "Color"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Mapa de altitud"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Altitud global:"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Posición de la luz:"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "Alfa"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "G"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "Luminosidad"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Iluminación linear"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "Saturación"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Color de fondo"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Mantener"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Color de pluma"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "Textura actual"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "Pixelar"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "Tamaño de píxel:"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "Calidad:"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr "Posterizar"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "Por claridad"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "Niveles:"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr "Vista previa"
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Configurar..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "¡Imprimir!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Encajar zoom"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Imprimir"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Mantener aspecto"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Tamaño de imagen"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Margen"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Inferior:"
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Alto:"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Izquierda:"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Orientación:"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Impresora y papel:"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Derecha:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Superior:"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Ancho:"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr "Pregunta"
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr "Recordar esta opción"
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Desenfoque radial"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "Radio:"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr "Lluvia"
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr "Cantidad:"
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr "Viento:"
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "Redimensionar"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Mantener aspecto"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "Alto:"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "Calidad:"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "Ancho:"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Guardar"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr "Entramado"
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr "Calidad:"
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr "0"
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr "100"
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr "50"
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr "Profundidad de color:"
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr "Tamaño:"
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr "16 colores"
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr "24 bits"
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr "256 colores"
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr "2 colores"
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr "32 bits"
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr "MioMap"
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Nítido/Suave"
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr "Cantidad:"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Aceptar"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "Intercambiar colores"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Corregido matiz e iluminación"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Matiz"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Saturación"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "Herramientas"
+

+ 1195 - 0
lazpaint/release/bin/i18n/lazpaint.fi.po

@@ -2297,3 +2297,1198 @@ msgstr ""
 msgid "Yes"
 msgstr "Kyllä"
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "TFABOUT.BUTTON_DONATE.CAPTION"
+msgid "Donate..."
+msgstr ""
+
+#: tfabout.caption
+msgctxt "TFABOUT.CAPTION"
+msgid "About"
+msgstr "Tietoja"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr ""
+
+#: tfabout.label_authors.caption
+msgctxt "TFABOUT.LABEL_AUTHORS.CAPTION"
+msgid "Authors:"
+msgstr "Tekijät:"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "TFABOUT.LABEL_AUTHORSVALUE.CAPTION"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular jota on avustaneet FabienWang, Lainz ja muut"
+
+#: tfabout.label_homepage.caption
+msgctxt "TFABOUT.LABEL_HOMEPAGE.CAPTION"
+msgid "Homepage:"
+msgstr "Kotisivu:"
+
+#: tfabout.label_libraries.caption
+msgctxt "TFABOUT.LABEL_LIBRARIES.CAPTION"
+msgid "Libraries used:"
+msgstr "Käytetyt kirjastot:"
+
+#: tfabout.label_licence.caption
+msgctxt "TFABOUT.LABEL_LICENCE.CAPTION"
+msgid "Licence:"
+msgstr "Lisenssi:"
+
+#: tfabout.label_opensource.caption
+msgctxt "TFABOUT.LABEL_OPENSOURCE.CAPTION"
+msgid "Open source (GPLv3)"
+msgstr "Avoin lähdekoodi (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "TFADJUSTCURVES.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "TFADJUSTCURVES.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Muokkaa käyriä"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Hylkää nykyinen käyrä ja aloita uusi"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Poista valittu piste (Del)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "TFBLENDOP.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfblendop.button_ok.caption
+msgctxt "TFBLENDOP.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "TFBLENDOP.LABEL_BLENDOPCATEGORY.CAPTION"
+msgid "Category of blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr ""
+
+#: tfblendop.label_kritaover.caption
+msgctxt "TFBLENDOP.LABEL_KRITAOVER.CAPTION"
+msgid "Krita"
+msgstr ""
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr ""
+
+#: tfblendop.label_otherover.caption
+msgctxt "TFBLENDOP.LABEL_OTHEROVER.CAPTION"
+msgid "Other"
+msgstr ""
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr ""
+
+#: tfblendop.label_patternover.caption
+msgctxt "TFBLENDOP.LABEL_PATTERNOVER.CAPTION"
+msgid "Pattern over"
+msgstr ""
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr ""
+
+#: tfblendop.label_patternunder.caption
+msgctxt "TFBLENDOP.LABEL_PATTERNUNDER.CAPTION"
+msgid "Pattern under"
+msgstr ""
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr ""
+
+#: tfblendop.label_previewwith.caption
+msgctxt "TFBLENDOP.LABEL_PREVIEWWITH.CAPTION"
+msgid "Preview with"
+msgstr ""
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr ""
+
+#: tfblendop.label_svgover.caption
+msgctxt "TFBLENDOP.LABEL_SVGOVER.CAPTION"
+msgid "Basic SVG"
+msgstr ""
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr ""
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Selaa kuvia"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr ""
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Siirry yksi kansio ylöspäin"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr "Avaa valitut tiedostot"
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "TFBROWSEIMAGES.TOOLBUTTON_VIEWBIGICON.HINT"
+msgid "Show big icons"
+msgstr "Näytä isot kuvakkeet"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "TFBROWSEIMAGES.TOOLBUTTON_VIEWDETAILS.HINT"
+msgid "Show details and preview"
+msgstr "Näytä tiedoston tiedot ja esikatselu"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr "Valitse asema"
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcanvassize.caption
+msgctxt "TFCANVASSIZE.CAPTION"
+msgid "Canvas size"
+msgstr "Kuva-alueen koko"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr ""
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "TFCANVASSIZE.LABEL_ANCHOR.CAPTION"
+msgid "Anchor :"
+msgstr ""
+
+#: tfcanvassize.label_height.caption
+msgctxt "TFCANVASSIZE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Korkeus :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "TFCANVASSIZE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Leveys :"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcolorintensity.caption
+msgctxt "TFCOLORINTENSITY.CAPTION"
+msgid "Intensity"
+msgstr "Voimakkuus"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "TFCOLORINTENSITY.LABEL_MULTIPLY.CAPTION"
+msgid "Multiply"
+msgstr ""
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "TFCOLORINTENSITY.LABEL_SHIFT.CAPTION"
+msgid "Shift"
+msgstr ""
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcolorize.caption
+msgctxt "TFCOLORIZE.CAPTION"
+msgid "Colorize"
+msgstr ""
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "TFCOLORIZE.CHECKBOX_GSBA.CAPTION"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tfcolorize.label_colorness.caption
+msgctxt "TFCOLORIZE.LABEL_COLORNESS.CAPTION"
+msgid "Colorness"
+msgstr ""
+
+#: tfcolorize.label_hue.caption
+msgctxt "TFCOLORIZE.LABEL_HUE.CAPTION"
+msgid "Hue"
+msgstr "Värisävy"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Esiasetus"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Muokkaa maskia"
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Lataa maski"
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcustomblur.caption
+msgctxt "TFCUSTOMBLUR.CAPTION"
+msgid "Custom blur"
+msgstr "Maskin mukainen sumennus"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Avaa harmaasävytiedosto"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfemboss.caption
+msgctxt "TFEMBOSS.CAPTION"
+msgid "Emboss"
+msgstr "Kohokuviointi"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "TFEMBOSS.LABEL_DIRECTION.CAPTION"
+msgid "Direction :"
+msgstr "Suunta :"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "TFFILTERFUNCTION.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "TFFILTERFUNCTION.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr ""
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "TFFILTERFUNCTION.CHECKBOX_GSBA.CAPTION"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr ""
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr ""
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr ""
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "TFGEOMETRICBRUSH.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "TFGEOMETRICBRUSH.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr "Sudin geometria"
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr "Liukuva peittävyys"
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr "Sivujen määrä:"
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "Kuvaluettelo"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr ""
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "Tyhjä kuvaluettelo"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr ""
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr ""
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "TFIMAGELIST.STRINGGRID1.COLUMNS[1].TITLE.CAPTION"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "TFIMAGELIST.STRINGGRID1.COLUMNS[2].TITLE.CAPTION"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "TFIMAGELIST.STRINGGRID1.COLUMNS[3].TITLE.CAPTION"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "Lisää kuvat luetteloon"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr ""
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr ""
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr ""
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "Muuta ikkuna minikokoiseksi"
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "Siirrä valitut alaspäin"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "Siirrä valitut ylöspäin"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "Muuta ikkuna normaalikokoon"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "Avaa valittu kuva"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr "Avaa seuraava kuva (Alt-Right)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "TFIMAGELIST.TBOPENNEXTSW.HINT"
+msgid "Open next image"
+msgstr "Avaa kuvaluettelon seuraava kuva"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "Avaa edellinen kuva (Alt-Left)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "TFIMAGELIST.TBOPENPREVSW.HINT"
+msgid "Open previous image"
+msgstr "Avaa kuvaluettelon edellinen kuva"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "Poista valitut kuvat luettelosta"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr ""
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr ""
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfmotionblur.caption
+msgctxt "TFMOTIONBLUR.CAPTION"
+msgid "Motion blur"
+msgstr "Liikesumennus"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Suunnattu"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "TFMOTIONBLUR.LABEL_DISTANCE.CAPTION"
+msgid "Distance :"
+msgstr ""
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "TFMULTIIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "TFMULTIIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr ""
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfnewimage.caption
+msgctxt "TFNEWIMAGE.CAPTION"
+msgid "New image"
+msgstr "Uusi kuva"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "TFNEWIMAGE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Korkeus :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "TFNEWIMAGE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Leveys :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "TFNOISEFILTER.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "TFNOISEFILTER.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Kohinasuodatin"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Läpikuultavuus:"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Harmaasävykohina"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "RGB-kohina"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "TFOBJECT3D.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr ""
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "TFOBJECT3D.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr ""
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr ""
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr ""
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "TFOBJECT3D.GROUPBOX_SELECTEDMATERIAL.CAPTION"
+msgid "Selected material"
+msgstr ""
+
+#: tfobject3d.label_color.caption
+msgctxt "TFOBJECT3D.LABEL_COLOR.CAPTION"
+msgid "Color :"
+msgstr "Väri :"
+
+#: tfobject3d.label_color1.caption
+msgctxt "TFOBJECT3D.LABEL_COLOR1.CAPTION"
+msgid "Color :"
+msgstr "Väri :"
+
+#: tfobject3d.label_height.caption
+msgctxt "TFOBJECT3D.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Korkeus :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "TFOBJECT3D.LABEL_LIGHTINGNORMALS.CAPTION"
+msgid "Lighting normals :"
+msgstr ""
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "TFOBJECT3D.LABEL_MATERIALS.CAPTION"
+msgid "Materials :"
+msgstr ""
+
+#: tfobject3d.label_opacity.caption
+msgctxt "TFOBJECT3D.LABEL_OPACITY.CAPTION"
+msgid "Opacity :"
+msgstr ""
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "TFOBJECT3D.LABEL_SPECULARINDEX.CAPTION"
+msgid "Spec. index :"
+msgstr ""
+
+#: tfobject3d.label_width.caption
+msgctxt "TFOBJECT3D.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Leveys :"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "TFOBJECT3D.LABEL_ZOOM.CAPTION"
+msgid "Zoom"
+msgstr ""
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr ""
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "TFOBJECT3D.OPENTEXTUREDIALOG.TITLE"
+msgid "Open texture"
+msgstr ""
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr ""
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "TFPHONGFILTER.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "TFPHONGFILTER.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfphongfilter.caption
+msgctxt "TFPHONGFILTER.CAPTION"
+msgid "Shaded map"
+msgstr "Varjostettu kartta"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "TFPHONGFILTER.GROUPBOX_COLOR.CAPTION"
+msgid "Color"
+msgstr "Väri"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr ""
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr ""
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Valon paikka :"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr ""
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr ""
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr ""
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "TFPHONGFILTER.RADIO_MAPLIGHTNESS.CAPTION"
+msgid "Lightness"
+msgstr ""
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr ""
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr ""
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "TFPHONGFILTER.RADIO_MAPSATURATION.CAPTION"
+msgid "Saturation"
+msgstr "Kylläisyys"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Taustan väri"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Säilytä värit"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Kynän väri"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "TFPHONGFILTER.RADIO_USETEXTURE.CAPTION"
+msgid "Current texture"
+msgstr ""
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfpixelate.caption
+msgctxt "TFPIXELATE.CAPTION"
+msgid "Pixelate"
+msgstr "Pikselöinti"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "TFPIXELATE.LABEL_PIXELSIZE.CAPTION"
+msgid "Pixel size :"
+msgstr "Pkselin koko :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "TFPIXELATE.LABEL_QUALITY.CAPTION"
+msgid "Quality :"
+msgstr ""
+
+#: tfposterize.button_cancel.caption
+msgctxt "TFPOSTERIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfposterize.button_ok.caption
+msgctxt "TFPOSTERIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfposterize.caption
+msgctxt "TFPOSTERIZE.CAPTION"
+msgid "Posterize"
+msgstr ""
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr ""
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr ""
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Muokkaa asetuksia"
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "Tulosta!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "TFPRINT.BUTTON_ZOOMFIT.CAPTION"
+msgid "Zoom fit"
+msgstr "Sovita"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Tulosta"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "TFPRINT.CHECKBOX_RATIO.CAPTION"
+msgid "Keep aspect ratio"
+msgstr ""
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Kuvan koko"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Marginaalit"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Alaosa:"
+
+#: tfprint.label_dpix.caption
+msgctxt "TFPRINT.LABEL_DPIX.CAPTION"
+msgid "."
+msgstr ""
+
+#: tfprint.label_dpiy.caption
+msgctxt "TFPRINT.LABEL_DPIY.CAPTION"
+msgid "."
+msgstr ""
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Korkeus:"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Vasen reuna"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Tulosteen asettelusuunta"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Tulostin ja paperikoko"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Oikea reuna:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Yläreuna:"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Leveys:"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr ""
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfradialblur.caption
+msgctxt "TFRADIALBLUR.CAPTION"
+msgid "Radial blur"
+msgstr "Säteittäinen sumennus"
+
+#: tfradialblur.label_radius.caption
+msgctxt "TFRADIALBLUR.LABEL_RADIUS.CAPTION"
+msgid "Radius :"
+msgstr ""
+
+#: tfrain.button_cancel.caption
+msgctxt "TFRAIN.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfrain.button_ok.caption
+msgctxt "TFRAIN.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfrain.caption
+msgid "Rain"
+msgstr "Sade"
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr "Määrä:"
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr "Tuuli"
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfresample.caption
+msgctxt "TFRESAMPLE.CAPTION"
+msgid "Resample"
+msgstr ""
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr ""
+
+#: tfresample.label_height.caption
+msgctxt "TFRESAMPLE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Korkeus :"
+
+#: tfresample.label_quality.caption
+msgctxt "TFRESAMPLE.LABEL_QUALITY.CAPTION"
+msgid "Quality :"
+msgstr ""
+
+#: tfresample.label_width.caption
+msgctxt "TFRESAMPLE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Leveys :"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "TFSAVEOPTION.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "TFSAVEOPTION.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfsaveoption.caption
+msgctxt "TFSAVEOPTION.CAPTION"
+msgid "Save"
+msgstr "Tallenna"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr "Rasterointi"
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr "16 väriä"
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr "256 väriä"
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr "2 väriä"
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "TFSHARPEN.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfsharpen.button_ok.caption
+msgctxt "TFSHARPEN.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Terävöitä/Pehmennä"
+
+#: tfsharpen.label_amount.caption
+msgctxt "TFSHARPEN.LABEL_AMOUNT.CAPTION"
+msgid "Amount :"
+msgstr ""
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Peru"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfshiftcolors.caption
+msgctxt "TFSHIFTCOLORS.CAPTION"
+msgid "Shift colors"
+msgstr ""
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Värisävy"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Kylläisyys"
+
+#: tftoolbox.caption
+msgctxt "TFTOOLBOX.CAPTION"
+msgid "Tools"
+msgstr "Työkalut"
+

+ 1199 - 0
lazpaint/release/bin/i18n/lazpaint.fr.po

@@ -1720,6 +1720,10 @@ msgstr "Le dossier n'est pas vide"
 msgid "Dither layer using palette"
 msgstr "Tramer le calque en utilisant la palette"
 
+#: uresourcestrings.rsduplicateimage
+msgid "Duplicate image"
+msgstr "Dupliquer l'image"
+
 #: uresourcestrings.rseditmask
 msgctxt "uresourcestrings.rseditmask"
 msgid "Edit mask"
@@ -2346,3 +2350,1198 @@ msgstr "Calque vectoriel"
 msgid "Yes"
 msgstr "Oui"
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr "La procédure %s n'a pas réussi à se charger correctement."
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr "Le contexte de la tablette ne s'est pas ouvert."
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Faire un don..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "À propos"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Auteurs :"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular aidé par FabienWang, Lainz et autres"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Site Web :"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "Bibliothèques :"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "Licence :"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "Code libre (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Ajuster les courbes"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Effacer et commencer une nouvelle courbe"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "Niveaux"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Supprimer le point (Suppr)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "Mode de fusion"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr "Catégorie de mode de fusion"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "Modes de fusion disponibles dans le logiciel Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr "Autre"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "Modes de fusion de LazPaint et de Paint.NET"
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr "Texture au-dessus"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr "Aperçu du mode de fusion avec l'image donnée au-dessus"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr "Texture en-dessous"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "Aperçu du mode de fusion avec l'image donnée en-dessous"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr "Aperçu avec"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Mode de fusion choisi :"
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr "SVG basique"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "Modes de fusion de base disponibles dans presque tous les logiciels"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Parcourir les images"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr "Utiliser ce dossier au démarrage"
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr "Créer dossier ou conteneur"
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Répertoire parent"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr "Ouvrir les fichiers sélectionnés"
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr "Grandes icônes"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr "Détails et aperçu"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr "Choisir le support"
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "Taille du canevas"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Retourner"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "Ancre :"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "Hauteur :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "Largeur :"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "Intensifier"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "Multiplier"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "Décaler"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Coloriser"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Teinte et luminosité corrigées"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "Couleurs"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "Nuances"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Prédéfini"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Éditer un masque..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Charger un masque..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "Flou personnalisé"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Ouvrir un fichier en échelle de gris"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "Embosser"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr "Conserver les couleurs"
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr "Transparent"
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "Direction :"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Appliquer la fonction"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Teinte et luminosité corrigées"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Variables :"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr "Pinceau géométrique"
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr "Gradient d'opacité"
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr "Nombre de côtés :"
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "Liste d'images"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr "Décocher automatiquement les fichiers lors de l'ouverture"
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr "Décocher automatiquement les fichiers après édition et sauvegarde"
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "Vider la liste d'images"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr "Enlever les images inexistantes"
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr "Enlever les images non cochées"
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr "Décocher les images inexistantes"
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "Ajouter des images"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr "Activer/désactiver le décochage automatique des fichiers déjà ouverts"
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr "Activer l'ajustement du zoom automatique dans la fenêtre principale"
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr "Cocher tous les fichiers pour traitement"
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "Passer en mode mini-fenêtre"
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "Faire descendre l'élément sélectionné"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "Faire monter l'élément sélectionné"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "Passer en mode fenêtre normale"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "Ouvrir l'image en cours"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr "Ouvrir l'image suivante (Alt-Droite)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr "Ouvrir l'image suivante"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "Ouvrir l'image précédente (Alt-Gauche)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr "Ouvrir l'image précédente"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "Retirer les images sélectionnées de la liste"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr "Décocher toutes les images pour traitement"
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Chargement..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "Flou de mouvement"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Orienté"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "Distance :"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "Choisir une image"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "Nouvelle image"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr "Bits par pixel :"
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "Hauteur :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr "Rapport :"
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr "Mémoire nécessaire :"
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "Largeur :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Bruit"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Opacité :"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Bruit en tons de gris"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "Bruit R/V/B"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "Texture..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr "Aucune"
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "Objet 3D"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Anticrénelage"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "Faces avec 2 côtés"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Interpolation de texture"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr "Source lumineuse"
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr "Matériau sélectionné"
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr "Couleur :"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Couleur :"
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "Hauteur :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr "Perp. pour éclairage :"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr "Sources lumineuses :"
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr "Matériaux :"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr "Opacité :"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr "Indice spéc. :"
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "Largeur :"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr "Zoom"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr "Lumières"
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Matériaux"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "Ouvrir une texture"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Rendu"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr "Ajouter une lumière directionnelle"
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr "Ajouter une lumière ponctuelle"
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr "Supprimer la source lumineuse"
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr "Carte éclairée"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "Couleur"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Carte d'altitude"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Altitude globale :"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Position de la lumière :"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "Canal alpha"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "V"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "Clarté"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Clarté linéaire"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "Saturation"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Couleur de fond"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Conserver"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Couleur de crayon"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "Texture en cours"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "Pixéliser"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "Taille pixel :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "Qualité :"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr "Niveaux"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "Par intensité"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "Niveaux :"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr "Aperçu"
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Configurer..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "Imprimer !"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Ajuster le zoom"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Imprimer"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Maintenir le ratio"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Taille de l'image"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Marges"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Bas :"
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Hauteur :"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Gauche :"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Orientation :"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Imprimante et papier :"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Droite :"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Haute :"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Largeur :"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr "Question"
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr "Se souvenir du choix"
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Flou radial"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "Rayon :"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr "Pluie"
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr "Quantité :"
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr "Vent :"
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "Redimensionner"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Maintenir le ratio"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "Hauteur :"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "Qualité :"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "Largeur :"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Enregistrer"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr "Tramage"
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr "Qualité :"
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr "0"
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr "100"
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr "50"
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr "Couleurs :"
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr "Taille :"
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr "16 couleurs"
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr "24 bits"
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr "256 coul."
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr "2 couleurs"
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr "32 bits"
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr "MioMap"
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Accentuer/Lisser"
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr "Quantité :"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuler"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "Décaler les couleurs"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Teinte et luminosité corrigées"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Teinte"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Saturation"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "Outils"
+

+ 1200 - 0
lazpaint/release/bin/i18n/lazpaint.ja.po

@@ -2309,3 +2309,1203 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "寄付する..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "About"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Authors"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular, FabienWang, Lainz"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Homepage"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "使用しているライブラリ:"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "ライセンス:"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "Open source (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr ""
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr ""
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr ""
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr ""
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr ""
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr ""
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr ""
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr ""
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr ""
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr ""
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr ""
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr ""
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr ""
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr ""
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr ""
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr ""
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr ""
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "キャンバスのサイズ"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "フリップモード"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "アンカー:"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "高さ:"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "幅:"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "輝度"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "乗算"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "シフト"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Colorize"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "濃淡"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "色相"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr ""
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "マスク編集"
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "マスク読み込み"
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "カスタムブラー"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "注意:ブラー用に作成されたグレースケール画像を開く"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "エンボス"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "方向:"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr ""
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr ""
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr ""
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr ""
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr ""
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr ""
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr ""
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr ""
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr ""
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr ""
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr ""
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr ""
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr ""
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr ""
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr ""
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr ""
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr ""
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr ""
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr ""
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr ""
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr ""
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr ""
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr ""
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr ""
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "モーションブラー"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "両方向にのばす"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "距離:"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "距離:"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr ""
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "新規画像"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "高さ:"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "幅:"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr ""
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr ""
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr ""
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr ""
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr ""
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr ""
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr ""
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr ""
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr ""
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr ""
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr ""
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "高さ:"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr ""
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr ""
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr ""
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr ""
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "幅:"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr ""
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr ""
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "テクスチャを開く"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr ""
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr ""
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "色"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr ""
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr ""
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr ""
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr ""
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr ""
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr ""
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "明度"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr ""
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr ""
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "濃淡"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr ""
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr ""
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr ""
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "現在のテクスチャ"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "モザイク"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "画素のサイズ:"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "精度:"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr ""
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr ""
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr ""
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr ""
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr ""
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "ズームfit"
+
+#: tfprint.caption
+msgid "Print"
+msgstr ""
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "アスペクト比を保持する"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr ""
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr ""
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr ""
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr ""
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr ""
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr ""
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr ""
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr ""
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr ""
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr ""
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr ""
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Radialブラー"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "半径:"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "再サンプル"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "アスペクト比を保持する"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "高さ:"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "精度:"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "幅:"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "保存"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr ""
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr ""
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "色合いをずらす"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "色相"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "濃淡"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "ツール"
+

+ 1196 - 0
lazpaint/release/bin/i18n/lazpaint.lv.po

@@ -2307,3 +2307,1199 @@ msgstr ""
 msgid "Yes"
 msgstr "Jā"
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "TFABOUT.BUTTON_DONATE.CAPTION"
+msgid "Donate..."
+msgstr "Ziedot ..."
+
+#: tfabout.caption
+msgctxt "TFABOUT.CAPTION"
+msgid "About"
+msgstr "Par LazPaint"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "TFABOUT.LABEL_AUTHORS.CAPTION"
+msgid "Authors:"
+msgstr "Autori:"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "TFABOUT.LABEL_AUTHORSVALUE.CAPTION"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular, kuram palīdzēja FabienWang, Lainz un citi"
+
+#: tfabout.label_homepage.caption
+msgctxt "TFABOUT.LABEL_HOMEPAGE.CAPTION"
+msgid "Homepage:"
+msgstr "Mājas lapa:"
+
+#: tfabout.label_libraries.caption
+msgctxt "TFABOUT.LABEL_LIBRARIES.CAPTION"
+msgid "Libraries used:"
+msgstr "Izmantotās bibliotēkas:"
+
+#: tfabout.label_licence.caption
+msgctxt "TFABOUT.LABEL_LICENCE.CAPTION"
+msgid "Licence:"
+msgstr "Licence"
+
+#: tfabout.label_opensource.caption
+msgctxt "TFABOUT.LABEL_OPENSOURCE.CAPTION"
+msgid "Open source (GPLv3)"
+msgstr "Atklātā pirmkoda programmatūra (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "TFADJUSTCURVES.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "TFADJUSTCURVES.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Mainīt līknes"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Dzēst patreizējo un sākt jaunu līkni"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "Plakāta efekts"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Dzēst izvēlēto punktu (Del)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "TFBLENDOP.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfblendop.button_ok.caption
+msgctxt "TFBLENDOP.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "Sapludināšana"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "TFBLENDOP.LABEL_BLENDOPCATEGORY.CAPTION"
+msgid "Category of blend operation"
+msgstr "Sapludināšanas veids"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgctxt "TFBLENDOP.LABEL_KRITAOVER.CAPTION"
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "Sapludināšana kāda iespējama programmā Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "TFBLENDOP.LABEL_OTHEROVER.CAPTION"
+msgid "Other"
+msgstr "Cits"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "LazPant un Paint.NET sapludināšanas darbības"
+
+#: tfblendop.label_patternover.caption
+msgctxt "TFBLENDOP.LABEL_PATTERNOVER.CAPTION"
+msgid "Pattern over"
+msgstr "Raksts pa virsu"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr "Sapludināsanas priekšapskate ar izvēlēto attēlu augšpusē"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "TFBLENDOP.LABEL_PATTERNUNDER.CAPTION"
+msgid "Pattern under"
+msgstr "Raksts apakšā"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "Sapludināsanas priekšapskate ar izvēlēto attēlu apakšpusē"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "TFBLENDOP.LABEL_PREVIEWWITH.CAPTION"
+msgid "Preview with"
+msgstr "Priekšskatīt ar"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Izvēlētā sapludināšana"
+
+#: tfblendop.label_svgover.caption
+msgctxt "TFBLENDOP.LABEL_SVGOVER.CAPTION"
+msgid "Basic SVG"
+msgstr "PamatSVG"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "Sapludunāšana veidi, kuri pieejami gandrīz visos attēlu redaktoros"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Caurskatīt attēlus"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Vienu direktoriju augšup"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr "Atvērt izvēlētos failus"
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "TFBROWSEIMAGES.TOOLBUTTON_VIEWBIGICON.HINT"
+msgid "Show big icons"
+msgstr "Rādīt lielas ikonas"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "TFBROWSEIMAGES.TOOLBUTTON_VIEWDETAILS.HINT"
+msgid "Show details and preview"
+msgstr "Ziņas un priekšapskate"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr "Izvēlies disku"
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfcanvassize.caption
+msgctxt "TFCANVASSIZE.CAPTION"
+msgid "Canvas size"
+msgstr "Audekla izmērs"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Spoguļot"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "TFCANVASSIZE.LABEL_ANCHOR.CAPTION"
+msgid "Anchor :"
+msgstr "Slāņa novietojums:"
+
+#: tfcanvassize.label_height.caption
+msgctxt "TFCANVASSIZE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Augstums:"
+
+#: tfcanvassize.label_width.caption
+msgctxt "TFCANVASSIZE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Platums:"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfcolorintensity.caption
+msgctxt "TFCOLORINTENSITY.CAPTION"
+msgid "Intensity"
+msgstr "Spilgtums"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "TFCOLORINTENSITY.LABEL_MULTIPLY.CAPTION"
+msgid "Multiply"
+msgstr "Reizinātājs"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "TFCOLORINTENSITY.LABEL_SHIFT.CAPTION"
+msgid "Shift"
+msgstr "Novirze"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfcolorize.caption
+msgctxt "TFCOLORIZE.CAPTION"
+msgid "Colorize"
+msgstr "Iekrāsot"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "TFCOLORIZE.CHECKBOX_GSBA.CAPTION"
+msgid "Corrected hue and lightness"
+msgstr "Izlabot nokrāsu un gaišumu"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "TFCOLORIZE.LABEL_COLORNESS.CAPTION"
+msgid "Colorness"
+msgstr "Piesātinājums"
+
+#: tfcolorize.label_hue.caption
+msgctxt "TFCOLORIZE.LABEL_HUE.CAPTION"
+msgid "Hue"
+msgstr "Nokrāsa"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Iestatījumi"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Labot masku ..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Ielasīt masku ..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfcustomblur.caption
+msgctxt "TFCUSTOMBLUR.CAPTION"
+msgid "Custom blur"
+msgstr "Pielāgota aizmiglošana"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Atvērt pelēktoņu attēlu"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfemboss.caption
+msgctxt "TFEMBOSS.CAPTION"
+msgid "Emboss"
+msgstr "Gofrēt"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "TFEMBOSS.LABEL_DIRECTION.CAPTION"
+msgid "Direction :"
+msgstr "Virziens:"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "TFFILTERFUNCTION.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "TFFILTERFUNCTION.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Pielietot funkciju"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "TFFILTERFUNCTION.CHECKBOX_GSBA.CAPTION"
+msgid "Corrected hue and lightness"
+msgstr "Izlabota nokrāsa un gaišums"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Mainīgie:"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "Labi"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr "Simetriska ota"
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr "Izgaišana uz malām"
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr "Malu skaits"
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "Attēlu saraksts"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr "Noņemt ķeksi, kad attēls atvērts"
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr "Noņemt ķeksi, kad attēls labots un saglabāts"
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "Tukšs attēlu saraksts"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr "Izņemt neesošus attēlus"
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr "Izņemt neatzīmētus attēlus"
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr "Izņemt atzīmējumu neesošiem failiem"
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "TFIMAGELIST.STRINGGRID1.COLUMNS[1].TITLE.CAPTION"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "TFIMAGELIST.STRINGGRID1.COLUMNS[2].TITLE.CAPTION"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "TFIMAGELIST.STRINGGRID1.COLUMNS[3].TITLE.CAPTION"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "Pievienot attēlu sarakstam"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr "Iespējot ķekšu noņemšanu no apstrādātiem attēliem"
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr "Iespējot attēlu pielāgošanu „LazPaint” logam"
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr "Atzīmēt visus failus apstrādei"
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "Pārslēgties uz mazo lodziņu"
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "Pavirzīt atzīmētos attēlus uz leju"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "Pavirzīt atzīmētos attēlus uz augšu"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "Pārslēgties uz parasto logu"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "Atvērt doto attēlu"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr "Atvērt sarakstā esošo nākamo attēlu (Alt-Pa_labi)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "TFIMAGELIST.TBOPENNEXTSW.HINT"
+msgid "Open next image"
+msgstr "Atvērt nākamo attēlu"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "Atvērt sarakstā esošo iepriekšējo attēlu (Alt-Pa_kreisi)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "TFIMAGELIST.TBOPENPREVSW.HINT"
+msgid "Open previous image"
+msgstr "Atvērt iepriekšējo attēlu"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "Izņemt atzīmētos attēlus no saraksta"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr "Noņemt visus ķekšus"
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Ielasu ..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfmotionblur.caption
+msgctxt "TFMOTIONBLUR.CAPTION"
+msgid "Motion blur"
+msgstr "Kustības izplūdums"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Virzīts"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "TFMOTIONBLUR.LABEL_DISTANCE.CAPTION"
+msgid "Distance :"
+msgstr "Attālums:"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "TFMULTIIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "TFMULTIIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "Izvēlies attēlu"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfnewimage.caption
+msgctxt "TFNEWIMAGE.CAPTION"
+msgid "New image"
+msgstr "Jauns attēls"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "TFNEWIMAGE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Augstums:"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "TFNEWIMAGE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Platums:"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "TFNOISEFILTER.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "TFNOISEFILTER.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Trokšņu filtrs"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Redzamība"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Pelēko toņu troksnis"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "RGB troksnis"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "TFOBJECT3D.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "Virsmas raksts ..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "TFOBJECT3D.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "3D veidojums"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Kropļojumnovērse"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "Divpusējas virsmas"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Iestarpinājumi virsmas rakstā"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr "Izvēlētā gaisma"
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "TFOBJECT3D.GROUPBOX_SELECTEDMATERIAL.CAPTION"
+msgid "Selected material"
+msgstr "Izvēlētais materiāls"
+
+#: tfobject3d.label_color.caption
+msgctxt "TFOBJECT3D.LABEL_COLOR.CAPTION"
+msgid "Color :"
+msgstr "Krāsa:"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Krāsa:"
+
+#: tfobject3d.label_height.caption
+msgctxt "TFOBJECT3D.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Augstums:"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "TFOBJECT3D.LABEL_LIGHTINGNORMALS.CAPTION"
+msgid "Lighting normals :"
+msgstr "Apgaismojuma normāles:"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr "Gaismas:"
+
+#: tfobject3d.label_materials.caption
+msgctxt "TFOBJECT3D.LABEL_MATERIALS.CAPTION"
+msgid "Materials :"
+msgstr "Materiāli:"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "TFOBJECT3D.LABEL_OPACITY.CAPTION"
+msgid "Opacity :"
+msgstr "Redzamība:"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "TFOBJECT3D.LABEL_SPECULARINDEX.CAPTION"
+msgid "Spec. index :"
+msgstr ""
+
+#: tfobject3d.label_width.caption
+msgctxt "TFOBJECT3D.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Platums:"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "TFOBJECT3D.LABEL_ZOOM.CAPTION"
+msgid "Zoom"
+msgstr "Tuvinājums"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr "Gaismas"
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Materiāli"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "TFOBJECT3D.OPENTEXTUREDIALOG.TITLE"
+msgid "Open texture"
+msgstr "Atvērt virsmas rakstu"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Atveidošana"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr "Pievinot virzītu gaismu"
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr "Pievienot punktveida gaismas avotu"
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr "Izmest doto gaismu"
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "TFPHONGFILTER.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "TFPHONGFILTER.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfphongfilter.caption
+msgctxt "TFPHONGFILTER.CAPTION"
+msgid "Shaded map"
+msgstr "Ēnota virsma"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "TFPHONGFILTER.GROUPBOX_COLOR.CAPTION"
+msgid "Color"
+msgstr "Krāsa"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Virsmas pacēlums"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Kopējais pacēlums"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Gaismas avots"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "Caurspīdīgums"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "G"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "TFPHONGFILTER.RADIO_MAPLIGHTNESS.CAPTION"
+msgid "Lightness"
+msgstr "Gaišums"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Tiešs gaišums"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "TFPHONGFILTER.RADIO_MAPSATURATION.CAPTION"
+msgid "Saturation"
+msgstr "Piesātinājums"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Pamatnes krāsa"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Saglabāt"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Otas krāsa"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "TFPHONGFILTER.RADIO_USETEXTURE.CAPTION"
+msgid "Current texture"
+msgstr "Virsmas raksts"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfpixelate.caption
+msgctxt "TFPIXELATE.CAPTION"
+msgid "Pixelate"
+msgstr ""
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "TFPIXELATE.LABEL_PIXELSIZE.CAPTION"
+msgid "Pixel size :"
+msgstr ""
+
+#: tfpixelate.label_quality.caption
+msgctxt "TFPIXELATE.LABEL_QUALITY.CAPTION"
+msgid "Quality :"
+msgstr ""
+
+#: tfposterize.button_cancel.caption
+msgctxt "TFPOSTERIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfposterize.button_ok.caption
+msgctxt "TFPOSTERIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfposterize.caption
+msgctxt "TFPOSTERIZE.CAPTION"
+msgid "Posterize"
+msgstr "Samazināts krāsu daudzums"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "Pēc gaišuma"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "Līmeņi:"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Iestatījumi ..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "Drukāt!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "TFPRINT.BUTTON_ZOOMFIT.CAPTION"
+msgid "Zoom fit"
+msgstr "Pielāgot lapai"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Drukāt"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "TFPRINT.CHECKBOX_RATIO.CAPTION"
+msgid "Keep aspect ratio"
+msgstr "Saglabāt attiecību"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Attēla izmērs"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Malas"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Apakšā:"
+
+#: tfprint.label_dpix.caption
+msgctxt "TFPRINT.LABEL_DPIX.CAPTION"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "TFPRINT.LABEL_DPIY.CAPTION"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Augstums"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Kreisā pusē:"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Orientācija"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Drukas iekārta un papīrs"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Labā pusē:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Augšā:"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Platums"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfradialblur.caption
+msgctxt "TFRADIALBLUR.CAPTION"
+msgid "Radial blur"
+msgstr "Izpludināšana"
+
+#: tfradialblur.label_radius.caption
+msgctxt "TFRADIALBLUR.LABEL_RADIUS.CAPTION"
+msgid "Radius :"
+msgstr "Rādiuss:"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "Labi"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr "Lietus"
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr "Stiprums"
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr "Vējš"
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfresample.caption
+msgctxt "TFRESAMPLE.CAPTION"
+msgid "Resample"
+msgstr "Izmēra maiņa"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Saglabāt attiecību"
+
+#: tfresample.label_height.caption
+msgctxt "TFRESAMPLE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Augstums:"
+
+#: tfresample.label_quality.caption
+msgctxt "TFRESAMPLE.LABEL_QUALITY.CAPTION"
+msgid "Quality :"
+msgstr ""
+
+#: tfresample.label_width.caption
+msgctxt "TFRESAMPLE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Platums:"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "Labi"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Saglabāt"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr "Neīstā tonēšana"
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr "0"
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr "100"
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr "50"
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr "Krasu dziļums:"
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr "Izmērs:"
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr "16 krāsas"
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr "24 bitu"
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr "256 krāsas"
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr "2 krāsas"
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "TFSHARPEN.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfsharpen.button_ok.caption
+msgctxt "TFSHARPEN.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Asināt/Nogludināt"
+
+#: tfsharpen.label_amount.caption
+msgctxt "TFSHARPEN.LABEL_AMOUNT.CAPTION"
+msgid "Amount :"
+msgstr ""
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Atsaukt"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "Labi"
+
+#: tfshiftcolors.caption
+msgctxt "TFSHIFTCOLORS.CAPTION"
+msgid "Shift colors"
+msgstr "Nobīdīt krāsas"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Pielāgot nokrāsas un gaišumu"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Nokrāsa"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Piesātinājums"
+
+#: tftoolbox.caption
+msgctxt "TFTOOLBOX.CAPTION"
+msgid "Tools"
+msgstr "Rīki"
+
+

+ 1198 - 0
lazpaint/release/bin/i18n/lazpaint.nl.po

@@ -2338,3 +2338,1201 @@ msgstr "Vector laag"
 #: uresourcestrings.rsyes
 msgid "Yes"
 msgstr "Ja"
+
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Doneren..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "Over"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Auteurs:"
+
+#: tfabout.label_authorsvalue.caption
+#| msgid "Circular help by FabienWang and Lainz"
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular geholpen door FabienWang, Lainz en anderen"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "Gebruikte libraries:"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "Licentie:"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "Open source (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Krommen aanpassen"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Huidige kromme weggooien en een nieuwe beginnen"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "Posterize"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Verwijder geselecteerd punt (Del)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "Mengoperatie"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr "Categorie van mengoperatie"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "Mengoperaties die beschikbaar zijn in Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr "Overig"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "Mengoperaties van LazPaint en Paint.NET"
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr "Patroon over"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr "Voorvertoning van mengoperatie met gekozen afbeelding boven"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr "Patroon onder"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "Voorvertoning van mengoperatie met gekozen afbeelding onder"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr "Voorvertoning met"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Gekozen mengoperatie :"
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr "Basale SVG"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "Basale mengoperaties die beschikbaar zijn in bijna alle beeldbewerkingssoftware"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Blader door beelden"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Een directory omhoog gaan"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr "Toon grote iconen"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr "Toon details en voorvertoning"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "Canvasgrootte"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Spiegelmodus"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "Anker :"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "Hoogte :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "Breedte :"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "Intensiteit"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "Vermenigvuldigen"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "Verschuiven"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Inkleuren"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Gecorrigeerde tint en helderheid"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "Kleuring"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "Kleurtint"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Voorinstelling"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Bewerkingsmasker..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Laad masker..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "Aangepaste vervaging"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Open grijstinten-bestand"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "Reliëf"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "Richting :"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Functie toepassen"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Gecorrigeerde tint en helderheid"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Variabelen :"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr "Afbeeldingslijst"
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr "Automatisch bestanden uitvinken na openen"
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr "Automatisch bestanden uitvinken na bewerking en opslag"
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr "Schoon beeldlijst op"
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr "Verwijder niet-bestaande beelden"
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr "Verwijder uitgevinkte beelden"
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr "Vink niet-bestaande bestanden uit"
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr "-"
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr "Voeg beelden to aan lijst"
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr "Auto-uitvinken aan/uitzetten voor verwerkte bestanden"
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr "Afbeelding autofit in LazPaint venster aan/uitzetten"
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr "Controleer alle bestanden voor verwerking"
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr "Schakel naar minivenster"
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr "Verplaats geselecteerde items omlaag"
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr "Verplaats geselecteerde items omhoog"
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr "Schakel naar normaal venster"
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr "Open huidige afbeelding"
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr "Open volgende afbeelding (Alt-Rechts)"
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr "Open volgende afbeelding"
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr "Open vorige afbeelding (Alt-Links)"
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr "Open vorige afbeelding"
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr "Verwijder geselecteerde afbeeldingen uit lijst"
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr "Vink alle bestanden uit voor verwerking"
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Bezig met laden..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "Bewegingsvervaging"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Oriëntatie"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "Afstand :"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "Afbeelding kiezen"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "Nieuwe afbeelding"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "Hoogte :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "Breedte :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Ruisfilter"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Dekking:"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Grijstint ruis"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "RGB ruis"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "Tekstuur..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr "Geen tex."
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "3d object"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Antialiasing"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "2-zijdige vlakken"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Texture interpolatie"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr "Geselecteerd materiaal"
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr "Kleur :"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Kleur :"
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "Hoogte :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr "Belichting normalen :"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr "Materialen :"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr "Dekking :"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr "Spec. index :"
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "Breedte :"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr "Zoomen"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Materialen"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "Textuur openen"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Renderen"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr "Shaded map"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "Kleur"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Hoogte map"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Algemene hoogte :"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Lichtpositie :"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "Alpha"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "G"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "Lichtheid"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Lineaire lichtheid"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "Verzadiging"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Achtergrondkleur"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Behouden"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Penkleur"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "Huidige textuur"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "In pixels tonen"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "Pixelgrootte :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "Kwaliteit :"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr "Posterize"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "Middels lichtheid"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "Niveaus :"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Instellen..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "Druk af!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Passend maken"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Druk af"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Aspectverhouding behouden"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Afbeeldingsgrootte"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Marges"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Onderkant:"
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Hoogte:"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Links:"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Oriëntatie:"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Printer en papier:"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Rechts:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Bovenkant:"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Breedte:"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Radiale vervaging"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "Radius :"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "Opnieuw samplen"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Aspectverhouding behouden"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "Hoogte :"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "Kwaliteit :"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "Breedte :"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Opslaan"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Verscherpen/Gladstrijken"
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr "Hoeveelheid :"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "Kleuren verschuiven"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Gecorrigeerde tint en helderheid"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Kleurtint"
+
+#: tfshiftcolors.label2.caption
+#| msgid "Colorness"
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Verzadiging"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "Gereedschappen"
+

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.po

@@ -1684,6 +1684,10 @@ msgstr ""
 msgid "Dither layer using palette"
 msgstr ""
 
+#: uresourcestrings.rsduplicateimage
+msgid "Duplicate image"
+msgstr ""
+
 #: uresourcestrings.rseditmask
 msgid "Edit mask"
 msgstr ""

+ 1199 - 0
lazpaint/release/bin/i18n/lazpaint.pt_BR.po

@@ -1706,6 +1706,10 @@ msgstr ""
 msgid "Dither layer using palette"
 msgstr ""
 
+#: uresourcestrings.rsduplicateimage
+msgid "Duplicate image"
+msgstr "Duplicar imagem"
+
 #: uresourcestrings.rseditmask
 msgid "Edit mask"
 msgstr "Editar máscara"
@@ -2311,3 +2315,1198 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Doar..."
+
+#: tfabout.caption
+msgctxt "TFABOUT.CAPTION"
+msgid "About"
+msgstr "Sobre"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr ""
+
+#: tfabout.label_authors.caption
+msgctxt "TFABOUT.LABEL_AUTHORS.CAPTION"
+msgid "Authors:"
+msgstr "Autores:"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "TFABOUT.LABEL_AUTHORSVALUE.CAPTION"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular, ajuda por FabienWang e Lainz"
+
+#: tfabout.label_homepage.caption
+msgctxt "TFABOUT.LABEL_HOMEPAGE.CAPTION"
+msgid "Homepage:"
+msgstr "Página Inicial:"
+
+#: tfabout.label_libraries.caption
+msgctxt "TFABOUT.LABEL_LIBRARIES.CAPTION"
+msgid "Libraries used:"
+msgstr "Bibliotecas usadas:"
+
+#: tfabout.label_licence.caption
+msgctxt "TFABOUT.LABEL_LICENCE.CAPTION"
+msgid "Licence:"
+msgstr "Licença:"
+
+#: tfabout.label_opensource.caption
+msgctxt "TFABOUT.LABEL_OPENSOURCE.CAPTION"
+msgid "Open source (GPLv3)"
+msgstr ""
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "TFADJUSTCURVES.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "TFADJUSTCURVES.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr "Ajustar curvas"
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr "Descartar curva atual e iniciar uma nova"
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr "Posterizar"
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr "Remover ponto selecionado (Del)"
+
+#: tfblendop.button_cancel.caption
+msgctxt "TFBLENDOP.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfblendop.button_ok.caption
+msgctxt "TFBLENDOP.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "operação de mesclagem"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "TFBLENDOP.LABEL_BLENDOPCATEGORY.CAPTION"
+msgid "Category of blend operation"
+msgstr "Categoria de operação de mesclagem"
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr ""
+
+#: tfblendop.label_kritaover.caption
+msgctxt "TFBLENDOP.LABEL_KRITAOVER.CAPTION"
+msgid "Krita"
+msgstr ""
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr "Mesclar operações que estão disponíveis em Krita"
+
+#: tfblendop.label_otherover.caption
+msgctxt "TFBLENDOP.LABEL_OTHEROVER.CAPTION"
+msgid "Other"
+msgstr "Outro"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr "Operações de mesclagem de LazPaint e Paint.NET"
+
+#: tfblendop.label_patternover.caption
+msgctxt "TFBLENDOP.LABEL_PATTERNOVER.CAPTION"
+msgid "Pattern over"
+msgstr "Padrão sobre"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr "Pré-operação de mesclagem com a imagem especificada no topo"
+
+#: tfblendop.label_patternunder.caption
+msgctxt "TFBLENDOP.LABEL_PATTERNUNDER.CAPTION"
+msgid "Pattern under"
+msgstr "Padrão sob"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr "Pré-operação de mesclagem com a imagem especificada por baixo"
+
+#: tfblendop.label_previewwith.caption
+msgctxt "TFBLENDOP.LABEL_PREVIEWWITH.CAPTION"
+msgid "Preview with"
+msgstr "Pré-visualização com"
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Operação de mesclagem selecionada :"
+
+#: tfblendop.label_svgover.caption
+msgctxt "TFBLENDOP.LABEL_SVGOVER.CAPTION"
+msgid "Basic SVG"
+msgstr "SVG Básico"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr "Operações de mesclagem básicas que estão disponíveis em praticamente todos os editores de imagem"
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr "Navegue nas imagens"
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr ""
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr "Ir para um diretório acima"
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr "Mostrar ícones grandes"
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr "Mostrar detalhes e pré-visualização"
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcanvassize.caption
+msgctxt "TFCANVASSIZE.CAPTION"
+msgid "Canvas size"
+msgstr "Tamanho da Tela da Imagem"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "modo de inversão"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "TFCANVASSIZE.LABEL_ANCHOR.CAPTION"
+msgid "Anchor :"
+msgstr "Âncora :"
+
+#: tfcanvassize.label_height.caption
+msgctxt "TFCANVASSIZE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Altura :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "TFCANVASSIZE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Largura :"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcolorintensity.caption
+msgctxt "TFCOLORINTENSITY.CAPTION"
+msgid "Intensity"
+msgstr "Intensidade"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "TFCOLORINTENSITY.LABEL_MULTIPLY.CAPTION"
+msgid "Multiply"
+msgstr "Multiplicar"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "TFCOLORINTENSITY.LABEL_SHIFT.CAPTION"
+msgid "Shift"
+msgstr "Alterar"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcolorize.caption
+msgctxt "TFCOLORIZE.CAPTION"
+msgid "Colorize"
+msgstr "Colorir"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "TFCOLORIZE.CHECKBOX_GSBA.CAPTION"
+msgid "Corrected hue and lightness"
+msgstr "Corrigida a tonalidade e luminosidade"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "TFCOLORIZE.LABEL_COLORNESS.CAPTION"
+msgid "Colorness"
+msgstr "Saturação"
+
+#: tfcolorize.label_hue.caption
+msgctxt "TFCOLORIZE.LABEL_HUE.CAPTION"
+msgid "Hue"
+msgstr "Tonalidade"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr "Predefinida"
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Editar máscara..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Abrir máscara..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfcustomblur.caption
+msgctxt "TFCUSTOMBLUR.CAPTION"
+msgid "Custom blur"
+msgstr "Desfoque personalizado"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Abrir arquivo em tons de cinza"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfemboss.caption
+msgctxt "TFEMBOSS.CAPTION"
+msgid "Emboss"
+msgstr "Realçar"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "TFEMBOSS.LABEL_DIRECTION.CAPTION"
+msgid "Direction :"
+msgstr "Direção :"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "TFFILTERFUNCTION.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "TFFILTERFUNCTION.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Aplicar função"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "TFFILTERFUNCTION.CHECKBOX_GSBA.CAPTION"
+msgid "Corrected hue and lightness"
+msgstr "Corrigida a tonalidade e luminosidade"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Variáveis :"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr ""
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr ""
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr ""
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr ""
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr ""
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr ""
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr ""
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr ""
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr ""
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr ""
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr ""
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr ""
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr ""
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr ""
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr ""
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr ""
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr ""
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr ""
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr ""
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr ""
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr ""
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr ""
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Carregando..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfmotionblur.caption
+msgctxt "TFMOTIONBLUR.CAPTION"
+msgid "Motion blur"
+msgstr "Borrão de movimento"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Orientado"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "TFMOTIONBLUR.LABEL_DISTANCE.CAPTION"
+msgid "Distance :"
+msgstr "Distância:"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "TFMULTIIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "TFMULTIIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr "Escolher imagem"
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfnewimage.caption
+msgctxt "TFNEWIMAGE.CAPTION"
+msgid "New image"
+msgstr "Nova imagem"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "TFNEWIMAGE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Altura :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "TFNEWIMAGE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Largura :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "TFNOISEFILTER.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "TFNOISEFILTER.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr "Filtro de ruído"
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr "Opacidade:"
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr "Ruído em tons de cinza"
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr "Ruído em RGB"
+
+#: tfobject3d.button_cancel.caption
+msgctxt "TFOBJECT3D.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr "Textura..."
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "TFOBJECT3D.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "Objeto 3D"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Suavização"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "Superfície dupla face"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Interpolação da textura"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "TFOBJECT3D.GROUPBOX_SELECTEDMATERIAL.CAPTION"
+msgid "Selected material"
+msgstr "Material selecionado"
+
+#: tfobject3d.label_color.caption
+msgctxt "TFOBJECT3D.LABEL_COLOR.CAPTION"
+msgid "Color :"
+msgstr "Cor :"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Cor :"
+
+#: tfobject3d.label_height.caption
+msgctxt "TFOBJECT3D.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Altura :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "TFOBJECT3D.LABEL_LIGHTINGNORMALS.CAPTION"
+msgid "Lighting normals :"
+msgstr "Normais de iluminação :"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "TFOBJECT3D.LABEL_MATERIALS.CAPTION"
+msgid "Materials :"
+msgstr "Materiais :"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "TFOBJECT3D.LABEL_OPACITY.CAPTION"
+msgid "Opacity :"
+msgstr "Opacidade :"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "TFOBJECT3D.LABEL_SPECULARINDEX.CAPTION"
+msgid "Spec. index :"
+msgstr ""
+
+#: tfobject3d.label_width.caption
+msgctxt "TFOBJECT3D.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Largura :"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "TFOBJECT3D.LABEL_ZOOM.CAPTION"
+msgid "Zoom"
+msgstr ""
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Materiais"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "TFOBJECT3D.OPENTEXTUREDIALOG.TITLE"
+msgid "Open texture"
+msgstr "Abrir textura"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Renderização"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "TFPHONGFILTER.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "TFPHONGFILTER.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfphongfilter.caption
+msgctxt "TFPHONGFILTER.CAPTION"
+msgid "Shaded map"
+msgstr "Mapa sombreado"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "TFPHONGFILTER.GROUPBOX_COLOR.CAPTION"
+msgid "Color"
+msgstr "Cor"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Altura do mapa"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Altura global :"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Posição de luz :"
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr ""
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr ""
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr ""
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "TFPHONGFILTER.RADIO_MAPLIGHTNESS.CAPTION"
+msgid "Lightness"
+msgstr "Luminosidade"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Luminosidade linear"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr ""
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "TFPHONGFILTER.RADIO_MAPSATURATION.CAPTION"
+msgid "Saturation"
+msgstr "Saturação"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Cor de fundo"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Manter"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "cor da caneta"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "TFPHONGFILTER.RADIO_USETEXTURE.CAPTION"
+msgid "Current texture"
+msgstr "Textura atual"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfpixelate.caption
+msgctxt "TFPIXELATE.CAPTION"
+msgid "Pixelate"
+msgstr "Pixelizar"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "TFPIXELATE.LABEL_PIXELSIZE.CAPTION"
+msgid "Pixel size :"
+msgstr "Tamanho do pixel :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "TFPIXELATE.LABEL_QUALITY.CAPTION"
+msgid "Quality :"
+msgstr "Qualidade :"
+
+#: tfposterize.button_cancel.caption
+msgctxt "TFPOSTERIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfposterize.button_ok.caption
+msgctxt "TFPOSTERIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfposterize.caption
+msgctxt "TFPOSTERIZE.CAPTION"
+msgid "Posterize"
+msgstr "Posterizar"
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr "Por luminosidade"
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr "Níveis :"
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr "Configurar..."
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr "Imprimir!"
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Ajuste de zoom"
+
+#: tfprint.caption
+msgid "Print"
+msgstr "Imprimir"
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "TFPRINT.CHECKBOX_RATIO.CAPTION"
+msgid "Keep aspect ratio"
+msgstr "Manter a proporção"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr "Tamanho da imagem"
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr "Margens"
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr "Botão:"
+
+#: tfprint.label_dpix.caption
+msgctxt "TFPRINT.LABEL_DPIX.CAPTION"
+msgid "."
+msgstr ""
+
+#: tfprint.label_dpiy.caption
+msgctxt "TFPRINT.LABEL_DPIY.CAPTION"
+msgid "."
+msgstr ""
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr "Altura:"
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr "Esquerda:"
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr "Orientação:"
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr "Impressora e papel:"
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr "Direita:"
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr "Acima:"
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr "Largura:"
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr ""
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfradialblur.caption
+msgctxt "TFRADIALBLUR.CAPTION"
+msgid "Radial blur"
+msgstr "Desfoque radial"
+
+#: tfradialblur.label_radius.caption
+msgctxt "TFRADIALBLUR.LABEL_RADIUS.CAPTION"
+msgid "Radius :"
+msgstr "Raio :"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr ""
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfresample.caption
+msgctxt "TFRESAMPLE.CAPTION"
+msgid "Resample"
+msgstr "Reamostrar"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Manter a proporção"
+
+#: tfresample.label_height.caption
+msgctxt "TFRESAMPLE.LABEL_HEIGHT.CAPTION"
+msgid "Height :"
+msgstr "Altura :"
+
+#: tfresample.label_quality.caption
+msgctxt "TFRESAMPLE.LABEL_QUALITY.CAPTION"
+msgid "Quality :"
+msgstr "Qualidade :"
+
+#: tfresample.label_width.caption
+msgctxt "TFRESAMPLE.LABEL_WIDTH.CAPTION"
+msgid "Width :"
+msgstr "Largura :"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr ""
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Salvar"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "TFSHARPEN.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfsharpen.button_ok.caption
+msgctxt "TFSHARPEN.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Nitidez/Suave"
+
+#: tfsharpen.label_amount.caption
+msgctxt "TFSHARPEN.LABEL_AMOUNT.CAPTION"
+msgid "Amount :"
+msgstr "Quantidade :"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr ""
+
+#: tfshiftcolors.caption
+msgctxt "TFSHIFTCOLORS.CAPTION"
+msgid "Shift colors"
+msgstr "Mudar as cores"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Correção de tonalidade e luminosidade"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Tonalidade"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Saturação"
+
+#: tftoolbox.caption
+msgctxt "TFTOOLBOX.CAPTION"
+msgid "Tools"
+msgstr "Ferramentas"
+

+ 1190 - 0
lazpaint/release/bin/i18n/lazpaint.ru.po

@@ -2307,3 +2307,1193 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Пожертвования ..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "О программе"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Авторы:"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular, FabienWang и Lainz"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Сайт:"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "Библиотеки:"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "Лицензия:"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "С открытым исходным кодом (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr ""
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr "Операции наложения"
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr "."
+
+#: tfblendop.label_kritaover.caption
+msgid "Krita"
+msgstr "Krita"
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr ""
+
+#: tfblendop.label_otherover.caption
+msgid "Other"
+msgstr "Другое"
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr ""
+
+#: tfblendop.label_patternover.caption
+msgid "Pattern over"
+msgstr "Узор над"
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr ""
+
+#: tfblendop.label_patternunder.caption
+msgid "Pattern under"
+msgstr "Узор под"
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr ""
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr ""
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr "Выбранная операц. налож.:"
+
+#: tfblendop.label_svgover.caption
+msgid "Basic SVG"
+msgstr "Базов. SVG"
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr ""
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr ""
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr "."
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr ""
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "Размер холста"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Режим отражения"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "Привязка:"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "Высота:"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "Ширина:"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "Интенсивность"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "Умножить"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "Shift"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Раскрасить"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Исправить оттенок и освещение"
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "Цветность"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "Оттенок"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr ""
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Редактировать маску ..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Загрузить маску ..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "Пользовательское размытие"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Открытие файла оттенков серого"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "Тиснение"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "Направление:"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr "Применить функц"
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Исправить оттенок и освещение"
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr "."
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr "Переменные :"
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr "HSL"
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr "RGB"
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr ""
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr ""
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr ""
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr ""
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr ""
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr ""
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr ""
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr ""
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr ""
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr ""
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr ""
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr ""
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr ""
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr ""
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr ""
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr ""
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr ""
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr ""
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr ""
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr "Загрузка..."
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "Размытие в движении"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Ориентированный"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "Расстояние:"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr ""
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "Новое изображение"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "Высота:"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "Ширина:"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr ""
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr ""
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr ""
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr ""
+
+#: tfobject3d.button_cancel.caption
+msgctxt "TFOBJECT3D.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr ""
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "TFOBJECT3D.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr "3D-объект"
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr "Сглаживание"
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr "Двухсторонние грани"
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr "Текстурная интерполяция"
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr "Выбор материала"
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr "Цвет:"
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr "Цвет:"
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "Высота:"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr "Освещение нормалей:"
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr "Материалы:"
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr "Непрозрачность:"
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr "Специальный индекс:"
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "Ширина:"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr "Увеличить"
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr "Материалы"
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "Открыть текстуру"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr "Визуализация"
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr "Затененная карта"
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "Цвет"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr "Карта высот"
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr "Глобальная высота:"
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr "Позиция света: "
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr "Alpha"
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr "B"
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr "G"
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "Освещение"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr "Линейное освещение"
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr "R"
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "Насыщенность"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr "Цвет фона"
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr "Придержать"
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr "Цвет пера"
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "Текущая текстура"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "Растрировать"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "Размер пикселя:"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "Качество:"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr ""
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr ""
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr ""
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr ""
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr ""
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Увеличить, полностью вписав"
+
+#: tfprint.caption
+msgid "Print"
+msgstr ""
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Сохранять пропорции"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr ""
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr ""
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr ""
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr "."
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr ""
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr ""
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr ""
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr ""
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr ""
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr ""
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr ""
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr "."
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Радиальное размытие"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "Радиус:"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "Ресэмпл"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Сохранять пропорции"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "Высота:"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "Качество:"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "Ширина:"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Сохранить"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "ОК"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr "Заострить/Сгладить"
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr "Суммировать:"
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Отменить"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "ОК"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "Сдвиг цвета"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr "Исправить оттенок и освещение"
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Оттенок"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Насыщенность"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "Инструменты"
+

+ 1195 - 0
lazpaint/release/bin/i18n/lazpaint.sv.po

@@ -2293,3 +2293,1198 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
+#: tablet.getprocfailed
+msgid "Procedure %s failed to load properly."
+msgstr ""
+
+#: tablet.openfailed
+msgid "Tablet context failed to open."
+msgstr ""
+
+#: tfabout.button_donate.caption
+msgctxt "tfabout.button_donate.caption"
+msgid "Donate..."
+msgstr "Donera..."
+
+#: tfabout.caption
+msgctxt "tfabout.caption"
+msgid "About"
+msgstr "Om"
+
+#: tfabout.labelurl.caption
+msgid "http://sourceforge.net/projects/lazpaint/"
+msgstr "http://sourceforge.net/projects/lazpaint/"
+
+#: tfabout.label_authors.caption
+msgctxt "tfabout.label_authors.caption"
+msgid "Authors:"
+msgstr "Upphovsman"
+
+#: tfabout.label_authorsvalue.caption
+msgctxt "tfabout.label_authorsvalue.caption"
+msgid "Circular helped by FabienWang, Lainz and others"
+msgstr "Circular, FabienWang och Lainz"
+
+#: tfabout.label_homepage.caption
+msgctxt "tfabout.label_homepage.caption"
+msgid "Homepage:"
+msgstr "Hemsidan"
+
+#: tfabout.label_libraries.caption
+msgctxt "tfabout.label_libraries.caption"
+msgid "Libraries used:"
+msgstr "Använda bibliotek:"
+
+#: tfabout.label_licence.caption
+msgctxt "tfabout.label_licence.caption"
+msgid "Licence:"
+msgstr "Licens:"
+
+#: tfabout.label_opensource.caption
+msgctxt "tfabout.label_opensource.caption"
+msgid "Open source (GPLv3)"
+msgstr "Öppen källkod (GPLv3)"
+
+#: tfadjustcurves.button_cancel.caption
+msgctxt "tfadjustcurves.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfadjustcurves.button_ok.caption
+msgctxt "tfadjustcurves.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfadjustcurves.caption
+msgid "Adjust curves"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_newcurve.hint
+msgid "Discard current curve and start a new one"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_posterize.hint
+msgctxt "tfadjustcurves.toolbutton_posterize.hint"
+msgid "Posterize"
+msgstr ""
+
+#: tfadjustcurves.toolbutton_removepoint.hint
+msgid "Remove selected point (Del)"
+msgstr ""
+
+#: tfblendop.button_cancel.caption
+msgctxt "tfblendop.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfblendop.button_ok.caption
+msgctxt "tfblendop.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfblendop.caption
+msgid "Blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopcategory.caption
+msgctxt "tfblendop.label_blendopcategory.caption"
+msgid "Category of blend operation"
+msgstr ""
+
+#: tfblendop.label_blendopvalue.caption
+msgctxt "tfblendop.label_blendopvalue.caption"
+msgid "."
+msgstr ""
+
+#: tfblendop.label_kritaover.caption
+msgctxt "tfblendop.label_kritaover.caption"
+msgid "Krita"
+msgstr ""
+
+#: tfblendop.label_kritaover.hint
+msgid "Blend operations that are available in Krita"
+msgstr ""
+
+#: tfblendop.label_otherover.caption
+msgctxt "tfblendop.label_otherover.caption"
+msgid "Other"
+msgstr ""
+
+#: tfblendop.label_otherover.hint
+msgid "Blend operations of LazPaint and Paint.NET"
+msgstr ""
+
+#: tfblendop.label_patternover.caption
+msgctxt "tfblendop.label_patternover.caption"
+msgid "Pattern over"
+msgstr ""
+
+#: tfblendop.label_patternover.hint
+msgid "Preview blend operation with the specified image on top"
+msgstr ""
+
+#: tfblendop.label_patternunder.caption
+msgctxt "tfblendop.label_patternunder.caption"
+msgid "Pattern under"
+msgstr ""
+
+#: tfblendop.label_patternunder.hint
+msgid "Preview blend operation with the specified image underneath"
+msgstr ""
+
+#: tfblendop.label_previewwith.caption
+msgctxt "tfblendop.label_previewwith.caption"
+msgid "Preview with"
+msgstr ""
+
+#: tfblendop.label_selectedblendop.caption
+msgid "Selected blend operation :"
+msgstr ""
+
+#: tfblendop.label_svgover.caption
+msgctxt "tfblendop.label_svgover.caption"
+msgid "Basic SVG"
+msgstr ""
+
+#: tfblendop.label_svgover.hint
+msgid "Basic blend operations that are available in virtually all image editors"
+msgstr ""
+
+#: tfbrowseimages.caption
+msgid "Browse images"
+msgstr ""
+
+#: tfbrowseimages.checkbox_usedirectoryonstartup.caption
+msgid "Use this directory on startup"
+msgstr ""
+
+#: tfbrowseimages.label_status.caption
+msgctxt "tfbrowseimages.label_status.caption"
+msgid "."
+msgstr ""
+
+#: tfbrowseimages.toolbutton_createfolderorcontainer.hint
+msgid "Create folder or container"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_goup.hint
+msgid "Go one directory up"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_openselectedfiles.hint
+msgid "Open selected files"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewbigicon.hint
+msgctxt "tfbrowseimages.toolbutton_viewbigicon.hint"
+msgid "Show big icons"
+msgstr ""
+
+#: tfbrowseimages.toolbutton_viewdetails.hint
+msgctxt "tfbrowseimages.toolbutton_viewdetails.hint"
+msgid "Show details and preview"
+msgstr ""
+
+#: tfbrowseimages.tool_selectdrive.hint
+msgid "Select drive"
+msgstr ""
+
+#: tfcanvassize.button_cancel.caption
+msgctxt "TFCANVASSIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfcanvassize.button_ok.caption
+msgctxt "TFCANVASSIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcanvassize.caption
+msgctxt "tfcanvassize.caption"
+msgid "Canvas size"
+msgstr "Storlek på rityta"
+
+#: tfcanvassize.checkbox_flipmode.caption
+msgid "Flip mode"
+msgstr "Vändläge"
+
+#: tfcanvassize.label_anchor.caption
+msgctxt "tfcanvassize.label_anchor.caption"
+msgid "Anchor :"
+msgstr "Ankare :"
+
+#: tfcanvassize.label_height.caption
+msgctxt "tfcanvassize.label_height.caption"
+msgid "Height :"
+msgstr "Höjd :"
+
+#: tfcanvassize.label_width.caption
+msgctxt "tfcanvassize.label_width.caption"
+msgid "Width :"
+msgstr "Bredd :"
+
+#: tfcolorintensity.button_cancel.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfcolorintensity.button_ok.caption
+msgctxt "TFCOLORINTENSITY.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorintensity.caption
+msgctxt "tfcolorintensity.caption"
+msgid "Intensity"
+msgstr "Intensitet"
+
+#: tfcolorintensity.label_multiply.caption
+msgctxt "tfcolorintensity.label_multiply.caption"
+msgid "Multiply"
+msgstr "Multiplicera"
+
+#: tfcolorintensity.label_shift.caption
+msgctxt "tfcolorintensity.label_shift.caption"
+msgid "Shift"
+msgstr "Ändra"
+
+#: tfcolorize.button_cancel.caption
+msgctxt "TFCOLORIZE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfcolorize.button_ok.caption
+msgctxt "TFCOLORIZE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcolorize.caption
+msgctxt "tfcolorize.caption"
+msgid "Colorize"
+msgstr "Färgsätt"
+
+#: tfcolorize.checkbox_gsba.caption
+msgctxt "tfcolorize.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tfcolorize.label_colorness.caption
+msgctxt "tfcolorize.label_colorness.caption"
+msgid "Colorness"
+msgstr "Intensitet"
+
+#: tfcolorize.label_hue.caption
+msgctxt "tfcolorize.label_hue.caption"
+msgid "Hue"
+msgstr "Ton"
+
+#: tfcolorize.label_preset.caption
+msgid "Preset"
+msgstr ""
+
+#: tfcustomblur.button_cancel.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfcustomblur.button_editmask.caption
+msgid "Edit mask..."
+msgstr "Redigera mask..."
+
+#: tfcustomblur.button_loadmask.caption
+msgid "Load mask..."
+msgstr "Ladda mask..."
+
+#: tfcustomblur.button_ok.caption
+msgctxt "TFCUSTOMBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfcustomblur.caption
+msgctxt "tfcustomblur.caption"
+msgid "Custom blur"
+msgstr "Egen oskärpa"
+
+#: tfcustomblur.openpicturedialog1.title
+msgid "Open grayscale file"
+msgstr "Öppna gråskalefil"
+
+#: tfemboss.button_cancel.caption
+msgctxt "TFEMBOSS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfemboss.button_ok.caption
+msgctxt "TFEMBOSS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfemboss.caption
+msgctxt "tfemboss.caption"
+msgid "Emboss"
+msgstr "Ciselera"
+
+#: tfemboss.checkbox_preservecolors.caption
+msgid "Preserve colors"
+msgstr ""
+
+#: tfemboss.checkbox_transparent.caption
+msgid "Transparent"
+msgstr ""
+
+#: tfemboss.label_direction.caption
+msgctxt "tfemboss.label_direction.caption"
+msgid "Direction :"
+msgstr "Riktning :"
+
+#: tffilterfunction.button_cancel.caption
+msgctxt "tffilterfunction.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tffilterfunction.button_ok.caption
+msgctxt "tffilterfunction.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tffilterfunction.caption
+msgid "Apply function"
+msgstr ""
+
+#: tffilterfunction.checkbox_gsba.caption
+msgctxt "tffilterfunction.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tffilterfunction.label_alphaequals.caption
+msgctxt "tffilterfunction.label_alphaequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_blueequals.caption
+msgctxt "tffilterfunction.label_blueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_greenequals.caption
+msgctxt "tffilterfunction.label_greenequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_hueequals.caption
+msgctxt "tffilterfunction.label_hueequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_lightnessequals.caption
+msgctxt "tffilterfunction.label_lightnessequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_redequals.caption
+msgctxt "tffilterfunction.label_redequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_saturationequals.caption
+msgctxt "tffilterfunction.label_saturationequals.caption"
+msgid "."
+msgstr ""
+
+#: tffilterfunction.label_variables.caption
+msgid "Variables :"
+msgstr ""
+
+#: tffilterfunction.tabsheet_hsl.caption
+msgid "HSL"
+msgstr ""
+
+#: tffilterfunction.tabsheet_rgb.caption
+msgctxt "tffilterfunction.tabsheet_rgb.caption"
+msgid "RGB"
+msgstr ""
+
+#: tfgeometricbrush.button_cancel.caption
+msgctxt "tfgeometricbrush.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfgeometricbrush.button_ok.caption
+msgctxt "tfgeometricbrush.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfgeometricbrush.caption
+msgid "Geometric brush"
+msgstr ""
+
+#: tfgeometricbrush.checkbox_isgradient.caption
+msgid "Opacity gradient"
+msgstr ""
+
+#: tfgeometricbrush.label1.caption
+msgid "Number of sides:"
+msgstr ""
+
+#: tfimagelist.caption
+msgid "Image List"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonopen.caption
+msgid "Autouncheck files after being open"
+msgstr ""
+
+#: tfimagelist.pmautouncheckonsave.caption
+msgid "Autouncheck files after being edited and saved"
+msgstr ""
+
+#: tfimagelist.pmremoveall.caption
+msgid "Empty image list"
+msgstr ""
+
+#: tfimagelist.pmremovenonexisting.caption
+msgid "Remove nonexisting images"
+msgstr ""
+
+#: tfimagelist.pmremoveunchecked.caption
+msgid "Remove unchecked images"
+msgstr ""
+
+#: tfimagelist.pmunchecknonexisting.caption
+msgid "Uncheck nonexisting files"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[0].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[0].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[1].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[1].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[2].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[2].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.stringgrid1.columns[3].title.caption
+msgctxt "tfimagelist.stringgrid1.columns[3].title.caption"
+msgid "-"
+msgstr ""
+
+#: tfimagelist.tbaddfiles.hint
+msgid "Add images to list"
+msgstr ""
+
+#: tfimagelist.tbautouncheck.hint
+msgid "Enable/disable autounchecking for processed files"
+msgstr ""
+
+#: tfimagelist.tbautozoomfit.hint
+msgid "Enable/disable autofitting images in the LazPaint window"
+msgstr ""
+
+#: tfimagelist.tbcheckall.hint
+msgid "Check all files for processing"
+msgstr ""
+
+#: tfimagelist.tbminiwindow.hint
+msgid "Switch to miniwindow"
+msgstr ""
+
+#: tfimagelist.tbmovedown.hint
+msgid "Move selected items down"
+msgstr ""
+
+#: tfimagelist.tbmoveup.hint
+msgid "Move selected items up"
+msgstr ""
+
+#: tfimagelist.tbnormalwindows.hint
+msgid "Switch to normal window"
+msgstr ""
+
+#: tfimagelist.tbopenimage.hint
+msgid "Open current image"
+msgstr ""
+
+#: tfimagelist.tbopennext.hint
+msgctxt "tfimagelist.tbopennext.hint"
+msgid "Open next image (Alt-Right)"
+msgstr ""
+
+#: tfimagelist.tbopennextsw.hint
+msgctxt "tfimagelist.tbopennextsw.hint"
+msgid "Open next image"
+msgstr ""
+
+#: tfimagelist.tbopenprev.hint
+msgctxt "tfimagelist.tbopenprev.hint"
+msgid "Open previous image (Alt-Left)"
+msgstr ""
+
+#: tfimagelist.tbopenprevsw.hint
+msgctxt "tfimagelist.tbopenprevsw.hint"
+msgid "Open previous image"
+msgstr ""
+
+#: tfimagelist.tbremoveitem.hint
+msgid "Remove selected images from list"
+msgstr ""
+
+#: tfimagelist.tbuncheckall.hint
+msgid "Uncheck all files for processing"
+msgstr ""
+
+#: tfloading.caption
+msgctxt "tfloading.caption"
+msgid "Loading..."
+msgstr ""
+
+#: tfmotionblur.button_cancel.caption
+msgctxt "TFMOTIONBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfmotionblur.button_ok.caption
+msgctxt "TFMOTIONBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfmotionblur.caption
+msgctxt "tfmotionblur.caption"
+msgid "Motion blur"
+msgstr "Rörelseoskärpa"
+
+#: tfmotionblur.checkbox_oriented.caption
+msgid "Oriented"
+msgstr "Orientering"
+
+#: tfmotionblur.label_distance.caption
+msgctxt "tfmotionblur.label_distance.caption"
+msgid "Distance :"
+msgstr "Avstånd :"
+
+#: tfmultiimage.button_cancel.caption
+msgctxt "tfmultiimage.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfmultiimage.button_ok.caption
+msgctxt "tfmultiimage.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfmultiimage.caption
+msgid "Choose image"
+msgstr ""
+
+#: tfnewimage.button_cancel.caption
+msgctxt "TFNEWIMAGE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfnewimage.button_ok.caption
+msgctxt "TFNEWIMAGE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfnewimage.caption
+msgctxt "tfnewimage.caption"
+msgid "New image"
+msgstr "Ny bild"
+
+#: tfnewimage.combobox_bitdepth.text
+msgid "32"
+msgstr ""
+
+#: tfnewimage.label_bitdepth.caption
+msgid "Bit depth :"
+msgstr ""
+
+#: tfnewimage.label_height.caption
+msgctxt "tfnewimage.label_height.caption"
+msgid "Height :"
+msgstr "Höjd :"
+
+#: tfnewimage.label_height1.caption
+msgid "Ratio :"
+msgstr ""
+
+#: tfnewimage.label_memoryrequired.caption
+msgid "Memory required :"
+msgstr ""
+
+#: tfnewimage.label_width.caption
+msgctxt "tfnewimage.label_width.caption"
+msgid "Width :"
+msgstr "Bredd :"
+
+#: tfnoisefilter.button_cancel.caption
+msgctxt "tfnoisefilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfnoisefilter.button_ok.caption
+msgctxt "tfnoisefilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfnoisefilter.caption
+msgid "Noise filter"
+msgstr ""
+
+#: tfnoisefilter.label_opacity.caption
+msgid "Opacity:"
+msgstr ""
+
+#: tfnoisefilter.radio_grayscalenoise.caption
+msgid "Grayscale noise"
+msgstr ""
+
+#: tfnoisefilter.radio_rgbnoise.caption
+msgid "RGB noise"
+msgstr ""
+
+#: tfobject3d.button_cancel.caption
+msgctxt "tfobject3d.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfobject3d.button_loadtex.caption
+msgid "Texture..."
+msgstr ""
+
+#: tfobject3d.button_notex.caption
+msgid "No tex."
+msgstr ""
+
+#: tfobject3d.button_ok.caption
+msgctxt "tfobject3d.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfobject3d.caption
+msgid "3D object"
+msgstr ""
+
+#: tfobject3d.checkbox_antialiasing.caption
+msgid "Antialiasing"
+msgstr ""
+
+#: tfobject3d.checkbox_biface.caption
+msgid "2-sided faces"
+msgstr ""
+
+#: tfobject3d.checkbox_textureinterp.caption
+msgid "Texture interpolation"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedlight.caption
+msgid "Selected light"
+msgstr ""
+
+#: tfobject3d.groupbox_selectedmaterial.caption
+msgctxt "tfobject3d.groupbox_selectedmaterial.caption"
+msgid "Selected material"
+msgstr ""
+
+#: tfobject3d.label_color.caption
+msgctxt "tfobject3d.label_color.caption"
+msgid "Color :"
+msgstr ""
+
+#: tfobject3d.label_color1.caption
+msgctxt "tfobject3d.label_color1.caption"
+msgid "Color :"
+msgstr ""
+
+#: tfobject3d.label_height.caption
+msgctxt "tfobject3d.label_height.caption"
+msgid "Height :"
+msgstr "Höjd :"
+
+#: tfobject3d.label_lightingnormals.caption
+msgctxt "tfobject3d.label_lightingnormals.caption"
+msgid "Lighting normals :"
+msgstr ""
+
+#: tfobject3d.label_lights.caption
+msgid "Lights :"
+msgstr ""
+
+#: tfobject3d.label_materials.caption
+msgctxt "tfobject3d.label_materials.caption"
+msgid "Materials :"
+msgstr ""
+
+#: tfobject3d.label_opacity.caption
+msgctxt "tfobject3d.label_opacity.caption"
+msgid "Opacity :"
+msgstr ""
+
+#: tfobject3d.label_specularindex.caption
+msgctxt "tfobject3d.label_specularindex.caption"
+msgid "Spec. index :"
+msgstr ""
+
+#: tfobject3d.label_width.caption
+msgctxt "tfobject3d.label_width.caption"
+msgid "Width :"
+msgstr "Bredd :"
+
+#: tfobject3d.label_zoom.caption
+msgctxt "tfobject3d.label_zoom.caption"
+msgid "Zoom"
+msgstr ""
+
+#: tfobject3d.lights.caption
+msgid "Lights"
+msgstr ""
+
+#: tfobject3d.materials.caption
+msgid "Materials"
+msgstr ""
+
+#: tfobject3d.opentexturedialog.title
+msgctxt "tfobject3d.opentexturedialog.title"
+msgid "Open texture"
+msgstr "Öppna textur"
+
+#: tfobject3d.rendering.caption
+msgid "Rendering"
+msgstr ""
+
+#: tfobject3d.tooladddirectional.hint
+msgid "Add a directional light"
+msgstr ""
+
+#: tfobject3d.toolpointlight.hint
+msgid "Add a point light"
+msgstr ""
+
+#: tfobject3d.toolremoveselectedlight.hint
+msgid "Remove selected light"
+msgstr ""
+
+#: tfphongfilter.button_cancel.caption
+msgctxt "tfphongfilter.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfphongfilter.button_ok.caption
+msgctxt "tfphongfilter.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfphongfilter.caption
+msgctxt "tfphongfilter.caption"
+msgid "Shaded map"
+msgstr ""
+
+#: tfphongfilter.groupbox_color.caption
+msgctxt "tfphongfilter.groupbox_color.caption"
+msgid "Color"
+msgstr "Färg"
+
+#: tfphongfilter.groupbox_color1.caption
+msgid "Altitude map"
+msgstr ""
+
+#: tfphongfilter.label_altitude.caption
+msgid "Global altitude :"
+msgstr ""
+
+#: tfphongfilter.label_lightposition.caption
+msgid "Light position :"
+msgstr ""
+
+#: tfphongfilter.radio_mapalpha.caption
+msgid "Alpha"
+msgstr ""
+
+#: tfphongfilter.radio_mapblue.caption
+msgid "B"
+msgstr ""
+
+#: tfphongfilter.radio_mapgreen.caption
+msgid "G"
+msgstr ""
+
+#: tfphongfilter.radio_maplightness.caption
+msgctxt "tfphongfilter.radio_maplightness.caption"
+msgid "Lightness"
+msgstr "Ljusstyrka"
+
+#: tfphongfilter.radio_maplinearlightness.caption
+msgid "Linear lightness"
+msgstr ""
+
+#: tfphongfilter.radio_mapred.caption
+msgid "R"
+msgstr ""
+
+#: tfphongfilter.radio_mapsaturation.caption
+msgctxt "tfphongfilter.radio_mapsaturation.caption"
+msgid "Saturation"
+msgstr "Intensitet"
+
+#: tfphongfilter.radio_usebackcolor.caption
+msgid "Back color"
+msgstr ""
+
+#: tfphongfilter.radio_usekeep.caption
+msgid "Keep"
+msgstr ""
+
+#: tfphongfilter.radio_usepencolor.caption
+msgid "Pen color"
+msgstr ""
+
+#: tfphongfilter.radio_usetexture.caption
+msgctxt "tfphongfilter.radio_usetexture.caption"
+msgid "Current texture"
+msgstr "Vald textur"
+
+#: tfpixelate.button_cancel.caption
+msgctxt "TFPIXELATE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfpixelate.button_ok.caption
+msgctxt "TFPIXELATE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfpixelate.caption
+msgctxt "tfpixelate.caption"
+msgid "Pixelate"
+msgstr "Pixelera"
+
+#: tfpixelate.label_pixelsize.caption
+msgctxt "tfpixelate.label_pixelsize.caption"
+msgid "Pixel size :"
+msgstr "Pixelstorlek :"
+
+#: tfpixelate.label_quality.caption
+msgctxt "tfpixelate.label_quality.caption"
+msgid "Quality :"
+msgstr "Kvaltiet :"
+
+#: tfposterize.button_cancel.caption
+msgctxt "tfposterize.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfposterize.button_ok.caption
+msgctxt "tfposterize.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfposterize.caption
+msgctxt "tfposterize.caption"
+msgid "Posterize"
+msgstr ""
+
+#: tfposterize.checkbox_bylightness.caption
+msgid "By lightness"
+msgstr ""
+
+#: tfposterize.label_levels.caption
+msgid "Levels :"
+msgstr ""
+
+#: tfpreviewdialog.caption
+msgid "Preview"
+msgstr ""
+
+#: tfpreviewdialog.lstatus.caption
+msgctxt "tfpreviewdialog.lstatus.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.button_configureprinter.caption
+msgid "Configure..."
+msgstr ""
+
+#: tfprint.button_print.caption
+msgid "Print!"
+msgstr ""
+
+#: tfprint.button_zoomfit.caption
+msgctxt "tfprint.button_zoomfit.caption"
+msgid "Zoom fit"
+msgstr "Anpassad zoom"
+
+#: tfprint.caption
+msgid "Print"
+msgstr ""
+
+#: tfprint.checkbox_ratio.caption
+msgctxt "tfprint.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Behåll bildformat"
+
+#: tfprint.groupbox_imagesize.caption
+msgid "Image size"
+msgstr ""
+
+#: tfprint.groupbox_margins.caption
+msgid "Margins"
+msgstr ""
+
+#: tfprint.label_bottom.caption
+msgid "Bottom:"
+msgstr ""
+
+#: tfprint.label_dpix.caption
+msgctxt "tfprint.label_dpix.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.label_dpiy.caption
+msgctxt "tfprint.label_dpiy.caption"
+msgid "."
+msgstr ""
+
+#: tfprint.label_height.caption
+msgid "Height:"
+msgstr ""
+
+#: tfprint.label_left.caption
+msgid "Left:"
+msgstr ""
+
+#: tfprint.label_orientation.caption
+msgid "Orientation:"
+msgstr ""
+
+#: tfprint.label_printerandpaper.caption
+msgid "Printer and paper:"
+msgstr ""
+
+#: tfprint.label_right.caption
+msgid "Right:"
+msgstr ""
+
+#: tfprint.label_top.caption
+msgid "Top:"
+msgstr ""
+
+#: tfprint.label_width.caption
+msgid "Width:"
+msgstr ""
+
+#: tfquestion.caption
+msgid "Question"
+msgstr ""
+
+#: tfquestion.checkbox_rememberchoice.caption
+msgid "Remember this choice"
+msgstr ""
+
+#: tfquestion.label_message.caption
+msgctxt "tfquestion.label_message.caption"
+msgid "."
+msgstr ""
+
+#: tfradialblur.button_cancel.caption
+msgctxt "TFRADIALBLUR.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfradialblur.button_ok.caption
+msgctxt "TFRADIALBLUR.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfradialblur.caption
+msgctxt "tfradialblur.caption"
+msgid "Radial blur"
+msgstr "Cirkulär oskärpa"
+
+#: tfradialblur.label_radius.caption
+msgctxt "tfradialblur.label_radius.caption"
+msgid "Radius :"
+msgstr "Radie :"
+
+#: tfrain.button_cancel.caption
+msgctxt "tfrain.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfrain.button_ok.caption
+msgctxt "tfrain.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfrain.caption
+msgid "Rain"
+msgstr ""
+
+#: tfrain.label_quantity.caption
+msgid "Quantity:"
+msgstr ""
+
+#: tfrain.label_wind.caption
+msgid "Wind :"
+msgstr ""
+
+#: tfresample.button_cancel.caption
+msgctxt "TFRESAMPLE.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfresample.button_ok.caption
+msgctxt "TFRESAMPLE.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfresample.caption
+msgctxt "tfresample.caption"
+msgid "Resample"
+msgstr "Omsampling"
+
+#: tfresample.checkbox_ratio.caption
+msgctxt "tfresample.checkbox_ratio.caption"
+msgid "Keep aspect ratio"
+msgstr "Behåll bildformat"
+
+#: tfresample.label_height.caption
+msgctxt "tfresample.label_height.caption"
+msgid "Height :"
+msgstr "Höjd :"
+
+#: tfresample.label_quality.caption
+msgctxt "tfresample.label_quality.caption"
+msgid "Quality :"
+msgstr "Kvalitet :"
+
+#: tfresample.label_width.caption
+msgctxt "tfresample.label_width.caption"
+msgid "Width :"
+msgstr "Bredd :"
+
+#: tfsaveoption.button_cancel.caption
+msgctxt "tfsaveoption.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfsaveoption.button_ok.caption
+msgctxt "tfsaveoption.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsaveoption.caption
+msgctxt "tfsaveoption.caption"
+msgid "Save"
+msgstr "Spara"
+
+#: tfsaveoption.checkbox_dithering.caption
+msgid "Dithering"
+msgstr ""
+
+#: tfsaveoption.label1.caption
+msgid "Quality:"
+msgstr ""
+
+#: tfsaveoption.label_0.caption
+msgid "0"
+msgstr ""
+
+#: tfsaveoption.label_1.caption
+msgid "100"
+msgstr ""
+
+#: tfsaveoption.label_50.caption
+msgid "50"
+msgstr ""
+
+#: tfsaveoption.label_colordepth.caption
+msgid "Color depth:"
+msgstr ""
+
+#: tfsaveoption.label_size.caption
+msgid "Size:"
+msgstr ""
+
+#: tfsaveoption.radiobutton_16colors.caption
+msgid "16 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_24bitsperpixel.caption
+msgid "24 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_256colors.caption
+msgid "256 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_2colors.caption
+msgid "2 colors"
+msgstr ""
+
+#: tfsaveoption.radiobutton_32bitsperpixel.caption
+msgid "32 bits"
+msgstr ""
+
+#: tfsaveoption.radiobutton_miomap.caption
+msgid "MioMap"
+msgstr ""
+
+#: tfsharpen.button_cancel.caption
+msgctxt "tfsharpen.button_cancel.caption"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfsharpen.button_ok.caption
+msgctxt "tfsharpen.button_ok.caption"
+msgid "OK"
+msgstr "OK"
+
+#: tfsharpen.caption
+msgid "Sharpen/Smooth"
+msgstr ""
+
+#: tfsharpen.label_amount.caption
+msgctxt "tfsharpen.label_amount.caption"
+msgid "Amount :"
+msgstr ""
+
+#: tfshiftcolors.button_cancel.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_CANCEL.CAPTION"
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: tfshiftcolors.button_ok.caption
+msgctxt "TFSHIFTCOLORS.BUTTON_OK.CAPTION"
+msgid "OK"
+msgstr "OK"
+
+#: tfshiftcolors.caption
+msgctxt "tfshiftcolors.caption"
+msgid "Shift colors"
+msgstr "Skifta färger"
+
+#: tfshiftcolors.checkbox_gsba.caption
+msgctxt "tfshiftcolors.checkbox_gsba.caption"
+msgid "Corrected hue and lightness"
+msgstr ""
+
+#: tfshiftcolors.label1.caption
+msgctxt "TFSHIFTCOLORS.LABEL1.CAPTION"
+msgid "Hue"
+msgstr "Färgton"
+
+#: tfshiftcolors.label2.caption
+msgctxt "TFSHIFTCOLORS.LABEL2.CAPTION"
+msgid "Saturation"
+msgstr "Intensitet"
+
+#: tftoolbox.caption
+msgctxt "tftoolbox.caption"
+msgid "Tools"
+msgstr "Verktyg"
+

+ 21 - 0
lazpaint/release/changelog

@@ -87,3 +87,24 @@ lazpaint (7.0.6) stable; urgency=low
 
 -- circular <[email protected]>  Wed, 11 Sep 2019 18:20:00 +0100
 
+lazpaint (7.0.7) stable; urgency=low
+
+  * polygon: clicking first point closes the polygon, holding Shift while inserting new point will align it on segment
+  * rectangular shape: right-clicking on border will rotate/shear the shape as with Alt key  * clipboard image format with transparency
+  * merging vector layers will make a vector layer if possible
+  * merging a vector with a raster layer will convert the latter to a vector shape
+  * transform texture when modifying rectangular shape
+  * select vector shape even if clicking a bit aside
+  * allow Space key when editing text object
+  * update contextual toolbar when selecting shape with edit shape tool
+  * context menu of toolbar in the upper toolbar background
+  * handling case when saving current file that has been renamed/deleted
+  * faster saving of layers with vectors
+  * fix bug with undo of deleted vector layer
+  * fix transform when copying shapes between layers
+  * fix crop layer with layer offset
+  * clear layer when deleting it in shape editor
+  * duplicate entry in GIF or TIFF
+
+-- circular <[email protected]>  Wed, 10 Oct 2019 17:37:00 +0100
+

+ 21 - 0
lazpaint/release/debian/linux32/DEBIAN/changelog

@@ -87,3 +87,24 @@ lazpaint (7.0.6) stable; urgency=low
 
 -- circular <[email protected]>  Wed, 11 Sep 2019 18:20:00 +0100
 
+lazpaint (7.0.7) stable; urgency=low
+
+  * polygon: clicking first point closes the polygon, holding Shift while inserting new point will align it on segment
+  * rectangular shape: right-clicking on border will rotate/shear the shape as with Alt key  * clipboard image format with transparency
+  * merging vector layers will make a vector layer if possible
+  * merging a vector with a raster layer will convert the latter to a vector shape
+  * transform texture when modifying rectangular shape
+  * select vector shape even if clicking a bit aside
+  * allow Space key when editing text object
+  * update contextual toolbar when selecting shape with edit shape tool
+  * context menu of toolbar in the upper toolbar background
+  * handling case when saving current file that has been renamed/deleted
+  * faster saving of layers with vectors
+  * fix bug with undo of deleted vector layer
+  * fix transform when copying shapes between layers
+  * fix crop layer with layer offset
+  * clear layer when deleting it in shape editor
+  * duplicate entry in GIF or TIFF
+
+-- circular <[email protected]>  Wed, 10 Oct 2019 17:37:00 +0100
+

+ 1 - 1
lazpaint/release/debian/linux32/DEBIAN/control

@@ -1,5 +1,5 @@
 Package: lazpaint
-Version: 7.0.6
+Version: 7.0.7
 Section: base
 Priority: optional
 Architecture: i386

+ 21 - 0
lazpaint/release/debian/linux64/DEBIAN/changelog

@@ -87,3 +87,24 @@ lazpaint (7.0.6) stable; urgency=low
 
 -- circular <[email protected]>  Wed, 11 Sep 2019 18:20:00 +0100
 
+lazpaint (7.0.7) stable; urgency=low
+
+  * polygon: clicking first point closes the polygon, holding Shift while inserting new point will align it on segment
+  * rectangular shape: right-clicking on border will rotate/shear the shape as with Alt key  * clipboard image format with transparency
+  * merging vector layers will make a vector layer if possible
+  * merging a vector with a raster layer will convert the latter to a vector shape
+  * transform texture when modifying rectangular shape
+  * select vector shape even if clicking a bit aside
+  * allow Space key when editing text object
+  * update contextual toolbar when selecting shape with edit shape tool
+  * context menu of toolbar in the upper toolbar background
+  * handling case when saving current file that has been renamed/deleted
+  * faster saving of layers with vectors
+  * fix bug with undo of deleted vector layer
+  * fix transform when copying shapes between layers
+  * fix crop layer with layer offset
+  * clear layer when deleting it in shape editor
+  * duplicate entry in GIF or TIFF
+
+-- circular <[email protected]>  Wed, 10 Oct 2019 17:37:00 +0100
+

+ 1 - 1
lazpaint/release/debian/linux64/DEBIAN/control

@@ -1,5 +1,5 @@
 Package: lazpaint
-Version: 7.0.6
+Version: 7.0.7
 Section: base
 Priority: optional
 Architecture: amd64

+ 2 - 2
lazpaint/release/macOS/LazPaint.app/Contents/Info.plist

@@ -19,9 +19,9 @@
     <key>CFBundleSignature</key>
     <string>lazp</string>
     <key>CFBundleShortVersionString</key>
-    <string>7.0.6</string>
+    <string>7.0.7</string>
     <key>CFBundleVersion</key>
-    <string>7.0.6</string>
+    <string>7.0.7</string>
     <key>CSResourcesFileMapped</key>
     <true/>
     <key>CFBundleDocumentTypes</key>

+ 8 - 3
lazpaint/release/macOS/instructions.txt

@@ -1,5 +1,10 @@
-To make application bundle:
+To make the DMG file:
+- compile the program in release mode for a CPU target (32 or 64)
+- open a shell in this macOS folder and run ./makedmg.sh
+- rename the created DMG file by appending the CPU target
+
+Alternatively, you can make an application bundle by hand:
 - make copy the LazPaint.app folder
 - copy "lazpaint" executable file into subfolder /Contents/MacOS
-- copy additionnal files into subfolder /Contents/Resources
-(including i18n and models folders, but not the application bundle)
+- copy aditionnal files into subfolder /Contents/Resources
+(readme file, i18n and models folders, but not the auto-created application bundle)

+ 25 - 19
lazpaint/release/macOS/makedmg.sh

@@ -2,7 +2,7 @@
 set -e
 
 if ! [ ${OSTYPE:0:6} = "darwin" ]; then
-  echo " This script is for OS X only"
+  echo "This script is for OS X only"
   exit 1
 fi
 
@@ -12,7 +12,7 @@ fi
 
 
 appname=LazPaint
-appversion=7.0.6
+appversion=7.0.7
 pkgversion=0
 appnamenospaces=lazpaint
 appbundle="$appname.app"
@@ -22,6 +22,7 @@ VOL_NAME="$appnamenospaces${appversion}_macos"
 DMG_TMP="${VOL_NAME}-temp.dmg"
 DMG_FINAL="${VOL_NAME}.dmg"         
 STAGING_DIR="./staging"             # we copy all our stuff into this dir
+SOURCE_DIR="$(cd ../bin; pwd)"
 
 # Check the background image DPI and convert it if it isn't 72x72
 _BACKGROUND_IMAGE_DPI_H=`sips -g dpiHeight ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'`
@@ -46,12 +47,22 @@ mkdir -p "${STAGING_DIR}"
 cp -rpf "./$appbundle" "${STAGING_DIR}"
 # ... cp anything else you want in the DMG - documentation, etc.
 
-pushd "${STAGING_DIR}"
-
-# ... perform any other stripping/compressing of libs and executables
-
-popd
-
+echo Staging files...
+pushd "${STAGING_DIR}/${appbundle}" >/dev/null
+ pushd Contents >/dev/null
+  pushd MacOS >/dev/null
+   unlink delete.me
+   cp "${SOURCE_DIR}/${appnamenospaces}" .
+  popd >/dev/null
+  pushd Resources >/dev/null
+   cp -r "${SOURCE_DIR}/i18n" .
+   cp -r "${SOURCE_DIR}/models" .
+   cp "${SOURCE_DIR}/readme.txt" .
+  popd >/dev/null
+ popd >/dev/null
+popd >/dev/null
+
+echo Making uncompressed DMG
 # figure out how big our DMG needs to be
 #  assumes our contents are at least 1M!
 SIZE=`du -sh "${STAGING_DIR}" | sed 's/\([0-9\.]*\)M\(.*\)/\1/'`
@@ -66,8 +77,7 @@ fi
 hdiutil create -srcfolder "${STAGING_DIR}" -volname "${VOL_NAME}" -fs HFS+ \
       -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "${DMG_TMP}"
 
-echo "Created DMG: ${DMG_TMP}"
-
+echo Mounting DMG...
 # mount it and save the device
 DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \
          egrep '^/dev/' | sed 1q | awk '{print $1}')
@@ -75,12 +85,13 @@ DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \
 sleep 2
 
 # add a link to the Applications dir
-echo "Add link to /Applications"
-pushd /Volumes/"${VOL_NAME}"
+echo "Adding link to Applications..."
+pushd /Volumes/"${VOL_NAME}" >/dev/null
 ln -s /Applications
-popd
+popd >/dev/null
 
 # add a background image
+echo "Adding background image..."
 mkdir /Volumes/"${VOL_NAME}"/.background
 cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/
 
@@ -118,13 +129,8 @@ echo "Creating compressed image"
 hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}"
 
 # clean up
+echo Cleaning up...
 rm -rf "${DMG_TMP}"
 rm -rf "${STAGING_DIR}"
 
 echo 'Done.'
-
-if [ -e "debian/$bindir" ]; then
-  rm -R debian
-fi
-
-exit

+ 1 - 1
lazpaint/release/windows/lazpaint.iss

@@ -1,7 +1,7 @@
 #define MyAppName "LazPaint"
 #define MyAppOutputName "lazpaint"
 #define MyInstallerSuffix "_setup_win32_win64"
-#define MyAppVersion "7.0.6"
+#define MyAppVersion "7.0.7"
 #define MyAppPublisher "Circular, Fabien Wang, Lainz and others"
 #define MyAppURL "http://sourceforge.net/projects/lazpaint/"
 #define MyAppExeName "lazpaint.exe"

+ 27 - 0
lazpaint/tools/utoolpolygon.pas

@@ -34,10 +34,13 @@ type
 
   TToolPolygon = class(TVectorialTool)
   protected
+    initiallyClosed : boolean;
     function CreateShape: TVectorShape; override;
     procedure AssignShapeStyle(AMatrix: TAffineMatrix); override;
     procedure UpdateUserMode; virtual;
+    procedure ShapeValidated; override;
   public
+    function ToolUp: TRect; override;
     function ToolKeyPress(var key: TUTF8Char): TRect; override;
     function ToolKeyDown(var key: Word): TRect; override;
     function GetContextualToolbars: TContextualToolbars; override;
@@ -177,6 +180,7 @@ end;
 function TToolPolygon.CreateShape: TVectorShape;
 begin
   result := TPolylineShape.Create(nil);
+  initiallyClosed := toCloseShape in Manager.ShapeOptions;
 end;
 
 procedure TToolPolygon.AssignShapeStyle(AMatrix: TAffineMatrix);
@@ -196,6 +200,29 @@ begin
   if FQuickDefine then FShape.Usermode := vsuCreate;
 end;
 
+procedure TToolPolygon.ShapeValidated;
+begin
+  inherited ShapeValidated;
+  if not initiallyClosed then
+    Manager.ShapeOptions := Manager.ShapeOptions - [toCloseShape];
+end;
+
+function TToolPolygon.ToolUp: TRect;
+var
+  opt: TShapeOptions;
+begin
+  Result:=inherited ToolUp;
+  if Assigned(FShape) then
+  begin
+    opt := Manager.ShapeOptions;
+    if (FShape as TCustomPolypointShape).Closed then
+      include(opt, toCloseShape)
+    else
+      exclude(opt, toCloseShape);
+    Manager.ShapeOptions:= opt;
+  end;
+end;
+
 function TToolPolygon.ToolKeyPress(var key: TUTF8Char): TRect;
 var
   keyCode: Word;

+ 189 - 66
lazpaint/tools/utoolvectorial.pas

@@ -36,7 +36,6 @@ type
     FLastPos: TPointF;
     FLastShapeTransform: TAffineMatrix;
     FUseOriginal: boolean;
-    function GetShapesCost(AOriginal: TVectorOriginal): integer;
     function AlwaysRasterizeShape: boolean; virtual;
     function CreateShape: TVectorShape; virtual; abstract;
     function UseOriginal: boolean; virtual;
@@ -62,6 +61,7 @@ type
     procedure OnTryStop({%H-}sender: TCustomLayerAction); override;
     procedure UpdateUseOriginal;
     function ReplaceLayerAndAddShape(out ARect: TRect): TCustomImageDifference; virtual;
+    procedure ShapeValidated; virtual;
   public
     function ValidateShape: TRect;
     function CancelShape: TRect;
@@ -87,6 +87,7 @@ type
     FDownHandled,FRectEditorCapture,FLayerOriginalCapture,
     FLeftButton,FRightButton: boolean;
     FLastPos: TPointF;
+    FOriginalLayerId: integer;
     FOriginalRect: TRectShape;
     FOriginalRectUntransformed: TRectF;
     FRectEditor: TBGRAOriginalEditor;
@@ -115,12 +116,15 @@ type
     function GetIsSelectingTool: boolean; override;
     function GetVectorOriginal: TVectorOriginal;
     function GetGradientOriginal: TBGRALayerGradientOriginal;
+    function GetImageOriginal: TBGRALayerImageOriginal;
+    function GetOriginalTransform: TAffineMatrix;
     function FixLayerOffset: boolean; override;
     function GetCurrentSplineMode: TToolSplineMode;
     procedure SetCurrentSplineMode(AMode: TToolSplineMode);
     function IsGradientShape(AShape: TVectorShape): boolean;
     function ConvertToSpline: boolean;
     function GetEditMode: TEditShapeMode;
+    function InvalidEditMode: boolean;
   public
     constructor Create(AManager: TToolManager); override;
     destructor Destroy; override;
@@ -139,7 +143,7 @@ implementation
 
 uses LazPaintType, LCVectorPolyShapes, LCVectorTextShapes, LCVectorialFill, BGRASVGOriginal,
   ULoading, BGRATransform, math, UImageDiff, Controls, BGRAPen, UResourceStrings, ugraph,
-  LCScaleDPI, LCVectorClipboard, BGRAGradientScanner;
+  LCScaleDPI, LCVectorClipboard, BGRAGradientScanner, UClipboard;
 
 const PointSize = 6;
 
@@ -248,6 +252,8 @@ begin
     AShape.Usermode := vsuEditBackFill;
   end else
   begin
+    if AShape.Usermode in [vsuEditBackFill, vsuEditPenFill] then
+      AShape.Usermode := vsuEdit;
     opt := Manager.ShapeOptions;
     if AShape.Fields*[vsfPenFill,vsfBackFill,vsfPenStyle] = [vsfPenFill,vsfBackFill,vsfPenStyle] then
     begin
@@ -410,9 +416,12 @@ begin
   if not handled and (GetEditMode in [esmShape,esmGradient,esmNoShape]) then
   begin
     BindOriginalEvent(true);
-    UpdateSnap(Manager.Image.CurrentState.LayeredBitmap.OriginalEditor);
-    Manager.Image.CurrentState.LayeredBitmap.MouseDown(rightBtn, FShiftState, ptF.X,ptF.Y, cur, handled);
-    BindOriginalEvent(false);
+    try
+      UpdateSnap(Manager.Image.CurrentState.LayeredBitmap.OriginalEditor);
+      Manager.Image.CurrentState.LayeredBitmap.MouseDown(rightBtn, FShiftState, ptF.X,ptF.Y, cur, handled);
+    finally
+      BindOriginalEvent(false);
+    end;
     if handled then
     begin
       Cursor := OriginalCursorToCursor(cur);
@@ -435,9 +444,12 @@ begin
   esmGradient, esmShape, esmNoShape:
     begin
       BindOriginalEvent(true);
-      UpdateSnap(Manager.Image.CurrentState.LayeredBitmap.OriginalEditor);
-      Manager.Image.CurrentState.LayeredBitmap.MouseMove(FShiftState, ptF.X,ptF.Y, cur, handled);
-      BindOriginalEvent(false);
+      try
+        UpdateSnap(Manager.Image.CurrentState.LayeredBitmap.OriginalEditor);
+        Manager.Image.CurrentState.LayeredBitmap.MouseMove(FShiftState, ptF.X,ptF.Y, cur, handled);
+      finally
+        BindOriginalEvent(false);
+      end;
       Cursor := OriginalCursorToCursor(cur);
     end;
   esmSelection, esmOtherOriginal:
@@ -465,10 +477,10 @@ begin
   case GetEditMode of
   esmShape:
     with GetVectorOriginal do
-    begin
+    try
+      BindOriginalEvent(true);
       m := AffineMatrixInverse(Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
       zoom := (VectLen(m[1,1],m[2,1])+VectLen(m[1,2],m[2,2]))/2;
-      BindOriginalEvent(true);
       if IsGradientShape(SelectedShape) then
       begin
         SelectedShape.BackFill.Gradient.StartColor := Manager.ForeColor;
@@ -582,10 +594,11 @@ begin
           BorderSizePercent := Manager.PhongShapeBorderSize;
         end;
       end;
+    finally
       BindOriginalEvent(false);
     end;
   esmGradient:
-    begin
+    try
       BindOriginalEvent(true);
       with GetGradientOriginal do
       begin
@@ -601,6 +614,7 @@ begin
         end;
         ColorInterpolation := Manager.GradientColorspace;
       end;
+    finally
       BindOriginalEvent(false);
     end;
   end;
@@ -763,6 +777,16 @@ begin
   result := Manager.Image.LayerOriginal[Manager.Image.CurrentLayerIndex] as TBGRALayerGradientOriginal;
 end;
 
+function TEditShapeTool.GetImageOriginal: TBGRALayerImageOriginal;
+begin
+  result := Manager.Image.LayerOriginal[Manager.Image.CurrentLayerIndex] as TBGRALayerImageOriginal;
+end;
+
+function TEditShapeTool.GetOriginalTransform: TAffineMatrix;
+begin
+  result := Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex];
+end;
+
 function TEditShapeTool.FixLayerOffset: boolean;
 begin
   Result:= false;
@@ -807,6 +831,7 @@ var
   orig, xAxis, yAxis: TPointF;
   viewMatrix: TAffineMatrix;
 begin
+  if InvalidEditMode then StopEdit(false,false);
   with LayerOffset do
   begin
     orig := BitmapToVirtualScreen(PointF(-X,-Y));
@@ -930,6 +955,7 @@ end;
 
 function TEditShapeTool.GetEditMode: TEditShapeMode;
 begin
+  if InvalidEditMode then exit(esmNone);
   if Assigned(FSelectionRect) then exit(esmSelection)
   else if Assigned(FOriginalRect) then exit(esmOtherOriginal)
   else
@@ -940,6 +966,20 @@ begin
   end;
 end;
 
+function TEditShapeTool.InvalidEditMode: boolean;
+begin
+  if Assigned(FOriginalRect) and
+     ((FOriginalLayerId <> Manager.Image.LayerId[Manager.Image.CurrentLayerIndex])
+      or not (GetCurrentLayerKind in[lkTransformedBitmap,lkSVG,lkOther])) then
+      result := true
+  else if Assigned(FSelectionRect) and
+       Manager.Image.SelectionMaskEmpty then result := true
+  else if FIsEditingGradient and (GetCurrentLayerKind <> lkGradient) then
+      result := true
+  else
+    result := false;
+end;
+
 constructor TEditShapeTool.Create(AManager: TToolManager);
 begin
   inherited Create(AManager);
@@ -962,6 +1002,7 @@ end;
 function TEditShapeTool.ToolKeyDown(var key: Word): TRect;
 var
   handled: boolean;
+  keyUtf8: TUTF8Char;
 begin
   Result:= EmptyRect;
   if (Key = VK_SNAP) or (Key = VK_SNAP2) then Key := VK_CONTROL;
@@ -980,22 +1021,37 @@ begin
     include(FShiftState, ssAlt);
     key := 0;
   end else
+  if (Key = VK_SPACE) and (GetEditMode = esmShape) and (GetVectorOriginal.SelectedShape is TTextShape) then
+  begin
+    keyUtf8:= ' ';
+    result := ToolKeyPress(keyUtf8);
+    Key := 0;
+  end else
   begin
     if GetEditMode in [esmShape,esmNoShape] then
     begin
       BindOriginalEvent(true);
-      Manager.Image.CurrentState.LayeredBitmap.KeyDown(FShiftState, LCLKeyToSpecialKey(key, FShiftState), handled);
-      if handled then key := 0 else
-      begin
-        if (key = VK_DELETE) and Assigned(GetVectorOriginal.SelectedShape) then
+      try
+        Manager.Image.CurrentState.LayeredBitmap.KeyDown(FShiftState, LCLKeyToSpecialKey(key, FShiftState), handled);
+        if handled then key := 0 else
         begin
-          GetVectorOriginal.RemoveShape(GetVectorOriginal.SelectedShape);
-          key := 0;
+          if (key = VK_DELETE) and Assigned(GetVectorOriginal.SelectedShape) then
+          begin
+            GetVectorOriginal.RemoveShape(GetVectorOriginal.SelectedShape);
+            key := 0;
+          end;
         end;
+      finally
+        BindOriginalEvent(false);
       end;
-      BindOriginalEvent(false);
     end else
     begin
+      if (Key = VK_DELETE) and (GetEditMode in [esmGradient,esmOtherOriginal]) then
+      begin
+        StopEdit(true, true);
+        Manager.Image.ClearLayer;
+        Key := 0;
+      end else
       if key = VK_RETURN then
       begin
         if IsEditing then
@@ -1029,9 +1085,12 @@ begin
     end else
     begin
       BindOriginalEvent(true);
-      Manager.Image.CurrentState.LayeredBitmap.KeyPress(key, handled);
-      if handled then key := #0;
-      BindOriginalEvent(false);
+      try
+        Manager.Image.CurrentState.LayeredBitmap.KeyPress(key, handled);
+        if handled then key := #0;
+      finally
+        BindOriginalEvent(false);
+      end;
     end;
   end;
 end;
@@ -1061,9 +1120,12 @@ begin
     if GetEditMode in [esmShape,esmNoShape] then
     begin
       BindOriginalEvent(true);
-      Manager.Image.CurrentState.LayeredBitmap.KeyUp(FShiftState, LCLKeyToSpecialKey(key, FShiftState), handled);
-      if handled then key := 0;
-      BindOriginalEvent(false);
+      try
+        Manager.Image.CurrentState.LayeredBitmap.KeyUp(FShiftState, LCLKeyToSpecialKey(key, FShiftState), handled);
+        if handled then key := 0;
+      finally
+        BindOriginalEvent(false);
+      end;
     end;
   end;
 end;
@@ -1074,6 +1136,7 @@ var
   handled: boolean;
   m: TAffineMatrix;
   ptView, ptSel: TPointF;
+  zoom: Single;
 begin
   Result:= EmptyRect;
   if FLeftButton or FRightButton then
@@ -1099,13 +1162,16 @@ begin
     if not handled and FLayerOriginalCapture and (GetEditMode in [esmGradient, esmShape, esmNoShape]) then
     begin
       BindOriginalEvent(true);
-      Manager.Image.CurrentState.LayeredBitmap.MouseUp(FRightButton, FShiftState, FLastPos.X,FLastPos.Y, cur, handled);
-      if handled then
-      begin
-        Cursor := OriginalCursorToCursor(cur);
-        result := OnlyRenderChange;
+      try
+        Manager.Image.CurrentState.LayeredBitmap.MouseUp(FRightButton, FShiftState, FLastPos.X,FLastPos.Y, cur, handled);
+        if handled then
+        begin
+          Cursor := OriginalCursorToCursor(cur);
+          result := OnlyRenderChange;
+        end;
+      finally
+        BindOriginalEvent(false);
       end;
-      BindOriginalEvent(false);
     end;
     if not handled and not Manager.Image.SelectionMaskEmpty then
     begin
@@ -1132,7 +1198,13 @@ begin
       esmShape, esmNoShape:
         begin
           m := AffineMatrixInverse(Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
-          GetVectorOriginal.MouseClick(m*FLastPos);
+          zoom := (VectLen(m[1,1],m[2,1])+VectLen(m[1,2],m[2,2]))/2/Manager.Image.ZoomFactor;
+          BindOriginalEvent(true);
+          try
+            GetVectorOriginal.MouseClick(m*FLastPos, DoScaleX(PointSize, OriginalDPI)*zoom);
+          finally
+            BindOriginalEvent(false);
+          end;
           if Assigned(GetVectorOriginal.SelectedShape) then handled := true;
         end;
       esmGradient:
@@ -1156,6 +1228,7 @@ begin
             FOriginalRectUntransformed := rectF(Left,Top,Right,Bottom);
           FOriginalRect := CreateRect(FOriginalRectUntransformed,
             Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
+          FOriginalLayerId:= Manager.Image.LayerId[Manager.Image.CurrentLayerIndex];
           result := OnlyRenderChange;
         end;
       end;
@@ -1187,6 +1260,9 @@ end;
 function TEditShapeTool.ToolCommand(ACommand: TToolCommand): boolean;
 var
   key: Word;
+  b: TRect;
+  bmp: TBGRABitmap;
+  s: TRectShape;
 begin
   if not ToolProvideCommand(ACommand) then exit(false);
   if ACommand = tcDelete then
@@ -1207,7 +1283,12 @@ begin
     MakeVectorOriginal;
     if GetCurrentLayerKind = lkVectorial then
     begin
-      PasteShapesFromClipboard(GetVectorOriginal);
+      BindOriginalEvent(true);
+      try
+        PasteShapesFromClipboard(GetVectorOriginal, GetOriginalTransform);
+      finally
+        BindOriginalEvent(false);
+      end;
       result := true;
     end;
   end else
@@ -1215,16 +1296,16 @@ begin
     result := true;
     case GetEditMode of
     esmShape:
-      begin
+      try
         BindOriginalEvent(true);
         case ACommand of
           tcMoveUp: GetVectorOriginal.SelectedShape.MoveUp(true);
           tcMoveToFront: GetVectorOriginal.SelectedShape.BringToFront;
           tcMoveDown: GetVectorOriginal.SelectedShape.MoveDown(true);
           tcMoveToBack: GetVectorOriginal.SelectedShape.SendToBack;
-          tcCopy: Result:= CopyShapesToClipboard([GetVectorOriginal.SelectedShape]);
+          tcCopy: Result:= CopyShapesToClipboard([GetVectorOriginal.SelectedShape], GetOriginalTransform);
           tcCut: begin
-                   result := CopyShapesToClipboard([GetVectorOriginal.SelectedShape]) and
+                   result := CopyShapesToClipboard([GetVectorOriginal.SelectedShape], GetOriginalTransform) and
                              GetVectorOriginal.RemoveShape(GetVectorOriginal.SelectedShape);
                  end;
           tcAlignLeft..tcAlignBottom: AlignShape(GetVectorOriginal.SelectedShape, ACommand,
@@ -1233,11 +1314,63 @@ begin
           tcShapeToSpline: result := ConvertToSpline;
           else result := false;
         end;
+      finally
         BindOriginalEvent(false);
       end;
+    esmGradient:
+      begin
+        case ACommand of
+          tcCut,tcCopy: begin
+            s := TRectShape.Create(nil);
+            try
+              s.PenStyle := ClearPenStyle;
+              s.QuickDefine(PointF(-0.5,-0.5),PointF(Manager.Image.Width-0.5,Manager.Image.Height-0.5));
+              s.BackFill.SetGradient(GetGradientOriginal, false);
+              s.BackFill.Transform(Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
+              CopyShapesToClipboard([s],AffineMatrixIdentity);
+            finally
+              s.free;
+            end;
+            if ACommand = tcCut then ToolCommand(tcDelete);
+          end;
+          else result := false;
+        end;
+      end;
     esmOtherOriginal:
       begin
         case ACommand of
+          tcCut,tcCopy: begin
+              b := Manager.Image.CurrentLayerReadOnly.GetImageBounds;
+              if not b.IsEmpty then
+              begin
+                if GetCurrentLayerKind = lkTransformedBitmap then
+                begin
+                  bmp := GetImageOriginal.GetImageCopy;
+                  s:= TRectShape.Create(nil);
+                  s.QuickDefine(PointF(-0.5,-0.5),PointF(bmp.Width-0.5,bmp.Height-0.5));
+                  s.PenStyle := ClearPenStyle;
+                  s.BackFill.SetTexture(bmp,AffineMatrixIdentity,255,trNone);
+                  s.Transform(Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
+                  bmp.FreeReference;
+                end else
+                begin
+                  bmp := Manager.Image.CurrentLayerReadOnly.GetPart(b) as TBGRABitmap;
+                  s:= TRectShape.Create(nil);
+                  s.QuickDefine(PointF(b.Left-0.5,b.Top-0.5),PointF(b.Right-0.5,b.Bottom-0.5));
+                  s.PenStyle := ClearPenStyle;
+                  s.BackFill.SetTexture(bmp,AffineMatrixTranslation(b.Left,b.Top),255,trNone);
+                  with Manager.Image.LayerOffset[Manager.Image.CurrentLayerIndex] do
+                    s.Transform(AffineMatrixTranslation(x,y));
+                  bmp.FreeReference;
+                end;
+                try
+                  CopyShapesToClipboard([s],AffineMatrixIdentity);
+                finally
+                  s.Free;
+                end;
+                if ACommand = tcCut then ToolCommand(tcDelete);
+              end;
+            end;
           tcAlignLeft..tcAlignBottom:
               begin
                 AlignShape(FOriginalRect, ACommand,
@@ -1263,7 +1396,7 @@ end;
 function TEditShapeTool.ToolProvideCommand(ACommand: TToolCommand): boolean;
 begin
   case ACommand of
-  tcCut,tcCopy,tcDelete: result:= GetEditMode = esmShape;
+  tcCut,tcCopy,tcDelete: result:= GetEditMode in[esmShape,esmOtherOriginal,esmGradient];
   tcShapeToSpline: result:= (GetEditMode = esmShape)
                             and TCurveShape.CanCreateFrom(GetVectorOriginal.SelectedShape);
   tcAlignLeft..tcAlignBottom: result:= GetEditMode in [esmShape, esmOtherOriginal, esmSelection];
@@ -1397,6 +1530,11 @@ begin
   FShape := nil;
 end;
 
+procedure TVectorialTool.ShapeValidated;
+begin
+  //nothing
+end;
+
 function TVectorialTool.ValidateShape: TRect;
 var
   layerId: LongInt;
@@ -1439,6 +1577,7 @@ begin
     Cursor := crDefault;
     result := OnlyRenderChange;
     UpdateUseOriginal;
+    ShapeValidated;
   end else
     result := EmptyRect;
 end;
@@ -1462,22 +1601,6 @@ begin
   result := FShape = nil;
 end;
 
-function TVectorialTool.GetShapesCost(AOriginal: TVectorOriginal): integer;
-var
-  i: Integer;
-begin
-  result := 0;
-  for i := 0 to AOriginal.ShapeCount-1 do
-    if (AOriginal.Shape[i] is TPhongShape) or
-       (AOriginal.Shape[i] is TTextShape) then
-       inc(result, 5)
-    else if ((vsfBackFill in AOriginal.Shape[i].Fields) and
-       (AOriginal.Shape[i].BackFill.FillType = vftGradient)) then
-       inc(result,15)
-    else
-      inc(result,2);
-end;
-
 function TVectorialTool.AlwaysRasterizeShape: boolean;
 begin
   result := false;
@@ -1630,12 +1753,12 @@ begin
   if FShape=nil then
   begin
     if UseOriginal and
-      (GetShapesCost(Manager.Image.LayerOriginal[Manager.Image.CurrentLayerIndex] as TVectorOriginal) >= 50) then
+      ((Manager.Image.LayerOriginal[Manager.Image.CurrentLayerIndex] as TVectorOriginal).GetShapesCost >= MediumShapeCost) then
     begin
       MessagePopup(rsTooManyShapesInLayer, 3000);
     end
     else
-    if GetCurrentLayerKind = lkSVG then
+    if (GetCurrentLayerKind = lkSVG) and not IsSelectingTool then
     begin
       MessagePopup(rsCannotDrawShapeOnSVGLayer, 3000);
     end
@@ -1867,33 +1990,33 @@ var
   r: TRect;
   toolDest: TBGRABitmap;
 begin
+  result := false;
   case ACommand of
-  tcCopy: begin
+  tcCopy:
       if ToolProvideCommand(tcCopy) then
-        result := CopyShapesToClipboard([FShape])
-      else
-        Result:= false;
-    end;
-  tcCut: begin
+        result := CopyShapesToClipboard([FShape], VectorTransform(false));
+  tcCut:
       if ToolCommand(tcCopy) then
       begin
         toolDest := GetToolDrawingLayer;
         r := CancelShape;
         Action.NotifyChange(toolDest, r);
         result := true;
-      end else
-        result := false;
-    end;
+      end;
   tcFinish: begin
-            r := ValidateShape;
-            Action.NotifyChange(toolDest, r);
-            result := true;
+              toolDest := GetToolDrawingLayer;
+              r := ValidateShape;
+              Action.NotifyChange(toolDest, r);
+              result := true;
           end;
   tcAlignLeft..tcAlignBottom:
       if ToolProvideCommand(ACommand) then
+      begin
         AlignShape(FShape, ACommand,
                  Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex],
                  rect(0,0,Manager.Image.Width,Manager.Image.Height));
+        result := true;
+      end;
   else
     result := false;
   end;

+ 15 - 12
lazpaint/uchoosecolor.pas

@@ -59,8 +59,10 @@ type
                         bmp,bmpMaxlight: TBGRABitmap; end;
     Lightscale: record bounds: TRect;
                       bmp: TBGRABitmap; end;
+    LightCursorRect: TRect;
     Alphascale: record bounds: TRect;
                        bmp: TBGRABitmap; end;
+    AlphaCursorRect: TRect;
     function GetAvailableBmpHeight: integer;
     function GetAvailableBmpWidth: integer;
     procedure SetAvailableBmpHeight(AValue: integer);
@@ -70,7 +72,7 @@ type
     function ColorWithLight(c: TBGRAPixel; light: word): TBGRAPixel;
     function BitmapWithLight(bmpsrc: TBGRABitmap; light: word; lookFor: TBGRAPixel; var pColorX,pColorY: integer): TBGRABitmap;
     function ColorLightOf(c: TBGRAPixel): word;
-    procedure DrawTriangleCursor(dest: TBGRABitmap; bounds: TRect; value: byte);
+    function DrawTriangleCursor(dest: TBGRABitmap; bounds: TRect; value: byte): TRect;
     procedure DoSelect(X,Y: integer);
     function MakeIconBase(size: integer): TBitmap;
     function MakeAddIcon(size: integer): TBitmap;
@@ -271,12 +273,12 @@ begin
       SelectZone := szColorCircle;
       DoSelect(X,Y);
     end else
-    if PtInRect(Point(X,Y),Alphascale.Bounds) then
+    if PtInRect(Point(X,Y),Alphascale.Bounds) or PtInRect(Point(X,Y),AlphaCursorRect) then
     begin
       SelectZone := szAlphascale;
       DoSelect(X,Y);
     end else
-    if PtInRect(Point(X,Y),lightscale.Bounds) then
+    if PtInRect(Point(X,Y),lightscale.Bounds) or PtInRect(Point(X,Y),LightCursorRect) then
     begin
       SelectZone := szLightscale;
       DoSelect(X,Y);
@@ -322,8 +324,8 @@ begin
     boundRight := x-4;
     Bitmap.PutImage(alphascale.bounds.Left,alphascale.bounds.top,alphascale.Bmp,dmDrawWithTransparency);
     Bitmap.Rectangle(alphascale.bounds,BGRA(FormTextColor.red,FormTextColor.green,FormTextColor.Blue,128),dmDrawWithTransparency);
-    DrawTriangleCursor(Bitmap, alphascale.bounds, currentColor.alpha);
-  end;
+    AlphaCursorRect := DrawTriangleCursor(Bitmap, alphascale.bounds, currentColor.alpha);
+  end else AlphaCursorRect := EmptyRect;
   if Lightscale.Bmp<>nil then
   begin
     w := Bitmap.TextSize(rsLight).cx;
@@ -334,8 +336,8 @@ begin
     boundRight := x-4;
     Bitmap.PutImage(Lightscale.bounds.Left,Lightscale.bounds.top,Lightscale.Bmp,dmFastBlend);
     Bitmap.Rectangle(Lightscale.bounds,BGRA(FormTextColor.red,FormTextColor.green,FormTextColor.Blue,128),dmDrawWithTransparency);
-    DrawTriangleCursor(Bitmap, Lightscale.bounds, colorLight div 256);
-  end;
+    LightCursorRect := DrawTriangleCursor(Bitmap, Lightscale.bounds, colorLight div 256);
+  end else LightCursorRect := EmptyRect;
   if (colorCircle.Bmp<>nil) and not LazPaintInstance.BlackAndWhite then
   begin
     w := Bitmap.TextSize(rsColors).cx;
@@ -357,13 +359,14 @@ begin
   end;
 end;
 
-procedure TFChooseColor.DrawTriangleCursor(dest: TBGRABitmap; bounds: TRect;
-  value: byte);
+function TFChooseColor.DrawTriangleCursor(dest: TBGRABitmap; bounds: TRect;
+  value: byte): TRect;
 var x,y: integer;
 begin
-     x := bounds.right+cursormargin;
-     y := bounds.bottom-1 + integer(round(value/255*(bounds.top-(bounds.bottom-1))));
-     dest.FillPolyAntialias([pointF(x,y),pointF(x+cursorsize,y-cursorsize),pointF(x+cursorsize,y+cursorsize)],FormTextColor);
+  x := bounds.right+cursormargin;
+  y := bounds.bottom-1 + integer(round(value/255*(bounds.top-(bounds.bottom-1))));
+  dest.FillPolyAntialias([pointF(x,y),pointF(x+cursorsize,y-cursorsize),pointF(x+cursorsize,y+cursorsize)],FormTextColor);
+  result := rect(floor(x-cursorsize/2),floor(y-cursorsize*1.5),ceil(x+cursorsize*1.5),ceil(y+cursorsize*1.5));
 end;
 
 procedure TFChooseColor.DoSelect(X, Y: integer);

+ 127 - 23
lazpaint/uimagepreview.pas

@@ -33,13 +33,14 @@ type
     FTiff: TTiff;                     //has entries
     FIconCursor: TBGRAIconCursor;     //has entries
     FThumbnails: TBGRABitmapList;
+    FDuplicateEntrySourceIndex: integer;
 
     FSelectedMenuIndex: integer;
     FImageMenu: array of record
                  Area, IconArea: TRect;
                  DeleteArea: TRect;
                  FrameIndex: integer;
-                 IsNew,IsLoopCount: boolean;
+                 IsNew,IsDuplicate,IsLoopCount: boolean;
                end;
 
     FOnValidate: TNotifyEvent;
@@ -63,6 +64,7 @@ type
     procedure ScrollToSelectedMenu;
 
     function CanAddNewEntry: boolean;
+    function CanDuplicateEntry: boolean;
     function CanDeleteEntry(index: integer): boolean;
     procedure DeleteEntry(i: integer);
     function GetEntryCount: integer;
@@ -70,6 +72,7 @@ type
     function GetEntryHeight(index: integer): integer;
     function GetEntryBitDepth(index: integer): integer;
     function GetEntryBitmap(index: integer): TImageEntry;
+    procedure SetEntryBitmap(var AEntry: TImageEntry);
     function GetEntryThumbnail(index: integer; stretchWidth, stretchHeight: integer): TBGRABitmap;
 
     procedure DrawCurrentFrame(Bitmap: TBGRABitmap);
@@ -91,6 +94,7 @@ type
     property OnEscape: TNotifyEvent read FOnEscape write FOnEscape;
     property EntryCount: integer read GetEntryCount;
     function GetPreviewBitmap: TImageEntry;
+    property DuplicateEntrySourceIndex: integer read FDuplicateEntrySourceIndex write FDuplicateEntrySourceIndex;
   end;
 
 implementation
@@ -265,7 +269,8 @@ begin
   begin
     Key := 0;
     if (FSelectedMenuIndex >= 0) and (FSelectedMenuIndex <= high(FImageMenu)) and
-      not FImageMenu[FSelectedMenuIndex].IsNew then
+      not FImageMenu[FSelectedMenuIndex].IsNew and
+      not FImageMenu[FSelectedMenuIndex].IsDuplicate then
     begin
       DeleteEntry(FImageMenu[FSelectedMenuIndex].FrameIndex);
     end;
@@ -309,16 +314,31 @@ begin
 end;
 
 procedure TImagePreview.DrawMenu(Bitmap: TBGRABitmap);
+
+  procedure DrawSheet(x,y,sw,sh: single);
+  var
+    ptsF,ptsF2: ArrayOfTPointF;
+    j: integer;
+  begin
+    ptsF := PointsF([PointF(x+sw*0.20,y+sh*0.1),PointF(x+sw*0.55,y+sh*0.1),PointF(x+sw*0.75,y+sh*0.3),
+                     PointF(x+sw*0.75,y+sh*0.9),PointF(x+sw*0.20,y+sh*0.9)]);
+    setlength(ptsF2,length(ptsF));
+    for j := 0 to high(ptsF) do
+        ptsF2[j] := ptsF[j] + PointF(3,3);
+    bitmap.FillPolyAntialias(ptsF2, BGRA(0,0,0,96));
+    bitmap.FillPolyAntialias(ptsF, BGRAWhite);
+    bitmap.DrawPolygonAntialias(ptsF, BGRABlack, 1.5);
+    bitmap.DrawPolyLineAntialias([PointF(x+sw*0.55,y+sh*0.1),PointF(x+sw*0.55,y+sh*0.3),PointF(x+sw*0.75,y+sh*0.3)], BGRABlack,1.5);
+  end;
+
 var scrollPos, totalHeight, maxScroll, availableWidth: integer;
-  i,j: integer;
+  i: integer;
   x,y,sw,sh: integer;
   textRight, bpp: integer;
   iconCaption: string;
-  ptsF,ptsF2: ArrayOfTPointF;
   scrolledArea, inter: TRect;
 begin
   if (Bitmap.Width < 8) or (Bitmap.Height < 8) or (GetEntryCount = 0) then exit;
-
   if Assigned(FScrollbar) then
   begin
     scrollPos := FScrollbar.Position;
@@ -364,10 +384,12 @@ begin
     FSelectedMenuIndex:= -1;
   if (FSelectedMenuIndex = -1) and (length(FImageMenu) > 0) then
   begin
-    if (length(FImageMenu)>=2) and FImageMenu[0].IsNew then
-      FSelectedMenuIndex:= 1 //do not select "add new" entry by default
-    else
-      FSelectedMenuIndex:= 0;
+    FSelectedMenuIndex:= 0;
+    while (FSelectedMenuIndex < length(FImageMenu)) and
+      (FImageMenu[FSelectedMenuIndex].IsNew or FImageMenu[FSelectedMenuIndex].IsDuplicate
+       or FImageMenu[FSelectedMenuIndex].IsLoopCount) do
+      inc(FSelectedMenuIndex);
+    //do not select special entries by default
   end;
 
   for i := 0 to high(FImageMenu) do
@@ -382,7 +404,7 @@ begin
     if i = FSelectedMenuIndex then
     begin
       bitmap.FillRect(scrolledArea, ColorToRGB(clHighlight));
-      if not IsNew and not IsLoopCount and (Area.Right - IconArea.Right > 32) and CanDeleteEntry(FrameIndex) then
+      if not IsNew and not IsLoopCount and not IsDuplicate and (Area.Right - IconArea.Right > 32) and CanDeleteEntry(FrameIndex) then
       begin
         sh := (Area.Right - IconArea.Right - 8) div 4;
         if sh < 16 then sh := 16;
@@ -416,15 +438,13 @@ begin
     end else
     if IsNew then
     begin
-      ptsF := PointsF([PointF(x+sw*0.20,y+sh*0.1),PointF(x+sw*0.55,y+sh*0.1),PointF(x+sw*0.75,y+sh*0.3),
-                       PointF(x+sw*0.75,y+sh*0.9),PointF(x+sw*0.20,y+sh*0.9)]);
-      setlength(ptsF2,length(ptsF));
-      for j := 0 to high(ptsF) do
-          ptsF2[j] := ptsF[j] + PointF(3,3);
-      bitmap.FillPolyAntialias(ptsF2, BGRA(0,0,0,96));
-      bitmap.FillPolyAntialias(ptsF, BGRAWhite);
-      bitmap.DrawPolygonAntialias(ptsF, BGRABlack, 1.5);
-      bitmap.DrawPolyLineAntialias([PointF(x+sw*0.55,y+sh*0.1),PointF(x+sw*0.55,y+sh*0.3),PointF(x+sw*0.75,y+sh*0.3)], BGRABlack,1.5);
+      DrawSheet(x,y,sw,sh);
+    end else
+    if IsDuplicate then
+    begin
+      DrawSheet(x-sw*0.15,y-sh*0.1,sw,sh*0.9);
+      DrawSheet(x+sw*0.1,y+sh*0.1,sw,sh*0.9);
+      bitmap.FontFullHeight:= round(sh*0.7);
     end else
     begin
       bitmap.FillRect(rect(x+2,y+2, x+sw+2,y+sh+2), BGRA(0,0,0,96), dmDrawWithTransparency);
@@ -432,6 +452,7 @@ begin
     end;
 
     if IsNew then iconCaption := rsNewImage else
+    if IsDuplicate then iconCaption := rsDuplicateImage else
     if IsLoopCount then
     begin
       iconCaption:= rsLoopCount+': ';
@@ -466,7 +487,8 @@ end;
 
 function TImagePreview.TryMenuLayout(AWidth: integer; AColCount, ABottom: integer): integer;
 var x,y,i,frameIndex,h,w,sw,sh: integer;
-  newItem, LoopCountItem, colLeft,colRight, maxWidth, maxHeight: integer;
+  newItem, LoopCountItem, DuplicateItem,
+  colLeft,colRight, maxWidth, maxHeight: integer;
   currentCol: integer;
 
   procedure ComputeColumn;
@@ -490,8 +512,9 @@ begin
 
   if Assigned(FAnimatedGif) then LoopCountItem := 1 else LoopCountItem:= 0;
   if CanAddNewEntry then NewItem := 1 else NewItem := 0;
-  setlength(FImageMenu, GetEntryCount + NewItem + LoopCountItem);
-  for i := 0 to GetEntryCount-1 + NewItem + LoopCountItem do
+  if CanDuplicateEntry then DuplicateItem := 1 else DuplicateItem := 0;
+  setlength(FImageMenu, GetEntryCount + LoopCountItem + NewItem + DuplicateItem);
+  for i := 0 to high(FImageMenu) do
   begin
     if (LoopCountItem = 1) and (i = 0) then
     begin
@@ -508,8 +531,16 @@ begin
       h := 32;
     end
     else
+    if (DuplicateItem = 1) and (i = LoopCountItem + NewItem) then
     begin
-      frameIndex := i-NewItem-LoopCountItem;
+      frameIndex := GetEntryCount;
+      FImageMenu[i].IsDuplicate := true;
+      w := 32;
+      h := 32;
+    end
+    else
+    begin
+      frameIndex := i-NewItem-LoopCountItem-DuplicateItem;
       w := GetEntryWidth(frameIndex);
       h := GetEntryHeight(frameIndex);
     end;
@@ -549,6 +580,12 @@ begin
   result := Assigned(FIconCursor) or Assigned(FTiff) or Assigned(FAnimatedGif);
 end;
 
+function TImagePreview.CanDuplicateEntry: boolean;
+begin
+  result := (Assigned(FTiff) or Assigned(FAnimatedGif)) and
+    (FDuplicateEntrySourceIndex >= 0) and (FDuplicateEntrySourceIndex < EntryCount);
+end;
+
 function TImagePreview.GetEntryCount: integer;
 begin
   if Assigned(FIconCursor) then
@@ -641,6 +678,56 @@ begin
   end;
 end;
 
+procedure TImagePreview.SetEntryBitmap(var AEntry: TImageEntry);
+var
+  sAddedTiff: TMemoryStream;
+  addedTiff: TTiff;
+  sOut: TStream;
+begin
+  if (AEntry.frameIndex < 0) or (AEntry.frameIndex > GetEntryCount) then
+    raise exception.Create('Index out of bounds');
+  if Filename = '' then raise exception.create('Filename undefined');
+
+  if Assigned(FTiff) then
+  begin
+    addedTiff := TTiff.Create;
+    sAddedTiff := TMemoryStream.Create;
+    try
+      AEntry.bmp.SaveToStreamAs(sAddedTiff, ifTiff);
+      sAddedTiff.Position:= 0;
+      if addedTiff.LoadFromStream(sAddedTiff) <> teNone then
+        raise Exception.Create(rsInternalError);
+      if AEntry.frameIndex > FTiff.Count then
+        AEntry.frameIndex := FTiff.Count;
+      FTiff.Move(addedTiff,0, AEntry.frameIndex);
+
+      sOut := FileManager.CreateFileStream(Filename,fmCreate);
+      try
+        FTiff.SaveToStream(sOut);
+      finally
+        sOut.Free;
+      end;
+    finally
+      sAddedTiff.Free;
+      addedTiff.Free;
+    end;
+  end else
+  if Assigned(FAnimatedGif) then
+  begin
+    if AEntry.frameIndex >= FAnimatedGif.Count then
+      AEntry.frameIndex := FAnimatedGif.AddFullFrame(AEntry.bmp, FAnimatedGif.AverageDelayMs)
+    else
+      FAnimatedGif.ReplaceFullFrame(AEntry.frameIndex, AEntry.bmp, FAnimatedGif.FrameDelayMs[AEntry.frameIndex]);
+
+    sOut := FileManager.CreateFileStream(Filename,fmCreate);
+    try
+      FAnimatedGif.SaveToStream(sOut);
+    finally
+      sOut.Free;
+    end;
+  end;
+end;
+
 function TImagePreview.GetEntryThumbnail(index: integer; stretchWidth, stretchHeight: integer): TBGRABitmap;
 var
   entry: TImageEntry;
@@ -980,6 +1067,7 @@ begin
   FStatus := AStatus;
   FAnimate:= AAnimate;
   FSelectedMenuIndex := -1;
+  FDuplicateEntrySourceIndex := -1;
   {$IFDEF WINDOWS}
   ASurface.Color := clAppWorkspace;
   {$ENDIF}
@@ -1095,6 +1183,14 @@ begin
             result.frameIndex:= TImageEntry.NewFrameIndex;
           end;
         end else
+        if FImageMenu[FSelectedMenuIndex].IsDuplicate then
+        begin
+          result := GetEntryBitmap(DuplicateEntrySourceIndex);
+          result.frameIndex:= GetEntryCount;
+          result.isDuplicate:= true;
+          SetEntryBitmap(result);
+        end
+        else
           result := GetEntryBitmap(FImageMenu[FSelectedMenuIndex].FrameIndex);
       end;
     end else
@@ -1122,6 +1218,14 @@ begin
               result.bmp := TBGRABitmap.Create(FAnimatedGif.Width,FAnimatedGif.Height,BGRAPixelTransparent);
               result.frameIndex:= TImageEntry.NewFrameIndex;
           end else
+          if FImageMenu[FSelectedMenuIndex].IsDuplicate then
+          begin
+            result := GetEntryBitmap(DuplicateEntrySourceIndex);
+            result.frameIndex:= GetEntryCount;
+            result.isDuplicate:= true;
+            SetEntryBitmap(result);
+          end
+          else
             result := GetEntryBitmap(FImageMenu[FSelectedMenuIndex].FrameIndex);
         end;
       end else

+ 9 - 8
lazpaint/ulayerstack.pas

@@ -167,24 +167,25 @@ begin
   if ASelected then
   begin
     result.NameRect := rect(layerpos.X+round(LayerRectWidth*0.95),layerpos.Y,layerpos.X+StackWidth,layerPos.Y+LayerRectHeight div 2);
-    barwidth := StackWidth-InterruptorWidth-Int32or64(round(LayerRectWidth*1.1));
-    if barwidth > LayerRectWidth then barwidth := LayerRectWidth;
-    result.OpacityBar := rect(layerpos.X+LayerRectWidth,layerpos.Y+LayerRectHeight div 2,layerpos.X+LayerRectWidth+barwidth,layerpos.Y+LayerRectHeight);
-    rOpacity := rect(result.OpacityBar.left,(result.OpacityBar.top*7+result.OpacityBar.bottom) div 8,result.OpacityBar.right,
-        (result.OpacityBar.top+result.OpacityBar.bottom*7) div 8);
+    barwidth := StackWidth-InterruptorWidth-round(LayerRectWidth*0.92)-ABitmap.FontFullHeight div 2;
+    result.OpacityBar := rect(layerpos.X+round(LayerRectWidth*0.92),layerpos.Y+LayerRectHeight div 2,
+                              layerpos.X+round(LayerRectWidth*0.92)+barwidth,layerpos.Y+LayerRectHeight);
+    rOpacity := rect(result.OpacityBar.left,(result.OpacityBar.top*7+result.OpacityBar.bottom) div 8,
+                     result.OpacityBar.right,(result.OpacityBar.top+result.OpacityBar.bottom*7) div 8);
     ABitmap.Rectangle(rOpacity,lColor,dmSet);
     rOpacity.Inflate(-1,-1);
     bmpOpacity := TBGRABitmap.Create(rOpacity.Width,rOpacity.Height,BGRABlack);
     rFill := rect(0,0,round(bmpOpacity.Width*LazPaintInstance.Image.LayerOpacity[LayerIndex]/255),bmpOpacity.Height);
     bmpOpacity.ClipRect := rFill;
     bmpOpacity.FillRect(rFill, CSSSilver,dmSet);
-    bmpOpacity.FontFullHeight := bmpOpacity.Height;
+    bmpOpacity.FontFullHeight := min(bmpOpacity.Height, ABitmap.FontFullHeight*2);
     bmpOpacity.FontName := ABitmap.FontName;
     bmpOpacity.FontStyle:= [fsBold];
+    bmpOpacity.FontVerticalAnchor:= fvaCenter;
     percentStr := IntToStr(round(LazPaintInstance.Image.LayerOpacity[LayerIndex]*100/255))+'%';
-    bmpOpacity.TextOut(bmpOpacity.Width/2,0, percentStr, BGRABlack, taCenter);
+    bmpOpacity.TextOut(bmpOpacity.Width/2,bmpOpacity.Height/2, percentStr, BGRABlack, taCenter);
     bmpOpacity.ClipRect := rect(rFill.Right,rFill.Top,bmpOpacity.Width,rFill.Bottom);
-    bmpOpacity.TextOut(bmpOpacity.Width/2,0, percentStr, BGRAWhite, taCenter);
+    bmpOpacity.TextOut(bmpOpacity.Width/2,bmpOpacity.Height/2, percentStr, BGRAWhite, taCenter);
     ABitmap.FillMask(rOpacity.Left,rOpacity.Top,bmpOpacity, lColor, dmDrawWithTransparency);
     bmpOpacity.Free;
   end

+ 1 - 0
lazpaint/uresourcestrings.pas

@@ -63,6 +63,7 @@ resourcestring
   rsMergeSelection='Do you want to merge selection?';
   rsSave='Save';
   rsNewImage='New image';
+  rsDuplicateImage='Duplicate image';
   rsOpen='Open';
   rsReload='Reload';
   rsReloadChanged='Bitmap has been modified. Do you really want to reload?';

+ 22 - 0
lazpaint/uscripting.pas

@@ -51,6 +51,7 @@ type
     function GetSubsetByName(const AName: string): TVariableSet;
     function GetListByName(const AName: string): string;
     function GetVariablesAsString: string;
+    function GetVarName(AIndex: integer): string;
     procedure SetBooleanByName(const AName: string; AValue: boolean);
     procedure SetFloatByName(const AName: string; AValue: double);
     procedure SetIntegerByName(const AName: string; AValue: TScriptInteger);
@@ -126,6 +127,7 @@ type
     function CopyValuesTo(ASet: TVariableSet): boolean;
     property FunctionName: string read FFunctionName;
     property Count: NativeInt read GetCount;
+    property VariableName[AIndex: integer]: string read GetVarName;
     property VariablesAsString: string read GetVariablesAsString;
     property Floats[const AName: string]: double read GetFloatByName write SetFloatByName;
     property Integers[const AName: string]: TScriptInteger read GetIntegerByName write SetIntegerByName;
@@ -386,6 +388,26 @@ begin
 
 end;
 
+function TVariableSet.GetVarName(AIndex: integer): string;
+begin
+  if AIndex < 0 then raise exception.Create('Index out of bounds');
+
+  if AIndex < FNbScalars then exit(FScalars[AIndex].name)
+  else dec(AIndex, FNbScalars);
+  if AIndex < FNbStrings then exit(FStrings[AIndex].name)
+  else dec(AIndex, FNbStrings);
+  if AIndex < FNbBoolLists then exit(FBoolLists[AIndex].name)
+  else dec(AIndex, FNbBoolLists);
+  if AIndex < FNbScalarLists then exit(FScalarLists[AIndex].name)
+  else dec(AIndex, FNbScalarLists);
+  if AIndex < FNbStrLists then exit(FStrLists[AIndex].name)
+  else dec(AIndex, FNbStrLists);
+  if AIndex < FNbSubsets then exit(FSubsets[AIndex].name)
+  else dec(AIndex, FNbSubsets);
+
+  raise exception.Create('Index out of bounds');
+end;
+
 function TVariableSet.LoadFromVariablesAsString(AVariablesAsString: string
   ): TInterpretationErrors;
 var varName: string;

+ 17 - 7
lazpaintcontrols/lcvectorclipboard.pas

@@ -5,10 +5,10 @@ unit LCVectorClipboard;
 interface
 
 uses
-  Classes, SysUtils, Clipbrd, LCLType, LCVectorOriginal;
+  Classes, SysUtils, Clipbrd, LCLType, LCVectorOriginal, BGRATransform;
 
-function CopyShapesToClipboard(AShapes: array of TVectorShape): boolean;
-procedure PasteShapesFromClipboard(ATargetContainer: TVectorOriginal);
+function CopyShapesToClipboard(AShapes: array of TVectorShape; const AMatrix: TAffineMatrix): boolean;
+procedure PasteShapesFromClipboard(ATargetContainer: TVectorOriginal; const ATargetMatrix: TAffineMatrix);
 function ClipboardHasShapes: boolean;
 
 implementation
@@ -16,11 +16,12 @@ implementation
 var
   vectorClipboardFormat : TClipboardFormat;
 
-function CopyShapesToClipboard(AShapes: array of TVectorShape): boolean;
+function CopyShapesToClipboard(AShapes: array of TVectorShape; const AMatrix: TAffineMatrix): boolean;
 var
   tempContainer: TVectorOriginal;
   mem: TMemoryStream;
   i: Integer;
+  s: TVectorShape;
 begin
   result:= false;
   if length(AShapes)=0 then exit;
@@ -28,7 +29,11 @@ begin
   mem := TMemoryStream.Create;
   try
     for i := 0 to high(AShapes) do
-      tempContainer.AddShape(AShapes[i].Duplicate);
+    begin
+      s := AShapes[i].Duplicate;
+      s.Transform(AMatrix);
+      tempContainer.AddShape(s);
+    end;
     tempContainer.SaveToStream(mem);
     Clipboard.Clear;
     mem.Position:= 0;
@@ -39,13 +44,16 @@ begin
   end;
 end;
 
-procedure PasteShapesFromClipboard(ATargetContainer: TVectorOriginal);
+procedure PasteShapesFromClipboard(ATargetContainer: TVectorOriginal; const ATargetMatrix: TAffineMatrix);
 var
   tempContainer: TVectorOriginal;
   mem: TMemoryStream;
   i: Integer;
   pastedShape: TVectorShape;
+  invMatrix: TAffineMatrix;
 begin
+  if not IsAffineMatrixInversible(ATargetMatrix) then exit;
+  invMatrix := AffineMatrixInverse(ATargetMatrix);
   if Clipboard.HasFormat(vectorClipboardFormat) then
   begin
     mem := TMemoryStream.Create;
@@ -58,8 +66,10 @@ begin
         for i := 0 to tempContainer.ShapeCount-1 do
         begin
           pastedShape := tempContainer.Shape[i].Duplicate;
+          pastedShape.Transform(invMatrix);
           ATargetContainer.AddShape(pastedShape);
-          ATargetContainer.SelectShape(pastedShape);
+          if i = tempContainer.ShapeCount-1 then
+            ATargetContainer.SelectShape(pastedShape);
         end;
       end;
     finally

+ 12 - 1
lazpaintcontrols/lcvectorialfill.pas

@@ -109,6 +109,7 @@ type
     function Duplicate: TVectorialFill; virtual;
     destructor Destroy; override;
     function Equals(Obj: TObject): boolean; override;
+    class function Equal(AFill1, AFill2: TVectorialFill): boolean;
     procedure Assign(Obj: TObject);
     property FillType: TVectorialFillType read GetFillType;
     property IsEditable: boolean read GetIsEditable;
@@ -171,7 +172,7 @@ end;
 
 function TVectorialFillDiff.IsIdentity: boolean;
 begin
-  result := FStart.Equals(FEnd);
+  result := TVectorialFill.Equal(FStart,FEnd);
 end;
 
 function TVectorialFillDiff.CanAppend(ADiff: TCustomVectorialFillDiff
@@ -615,6 +616,16 @@ begin
     result:= false;
 end;
 
+class function TVectorialFill.Equal(AFill1, AFill2: TVectorialFill): boolean;
+begin
+  if AFill1 = nil then
+  begin
+    if AFill2 = nil then result := true
+    else result := (AFill2.FillType = vftNone);
+  end else
+    result := AFill1.Equals(AFill2);
+end;
+
 procedure TVectorialFill.Assign(Obj: TObject);
 var
   other: TVectorialFill;

+ 61 - 7
lazpaintcontrols/lcvectororiginal.pas

@@ -15,6 +15,7 @@ const
   InfiniteRect : TRect = (Left: -MaxLongInt; Top: -MaxLongInt; Right: MaxLongInt; Bottom: MaxLongInt);
   EmptyTextureId = 0;
   DefaultShapeOutlineWidth = 2;
+  MediumShapeCost = 100;
 
 type
   TVectorOriginal = class;
@@ -179,6 +180,7 @@ type
     procedure LoadFill(AStorage: TBGRACustomOriginalStorage; AObjectName: string; var AValue: TVectorialFill);
     procedure SaveFill(AStorage: TBGRACustomOriginalStorage; AObjectName: string; AValue: TVectorialFill);
     function ComputeStroke(APoints: ArrayOfTPointF; AClosed: boolean; AStrokeMatrix: TAffineMatrix): ArrayOfTPointF; virtual;
+    function ComputeStrokeEnvelope(APoints: ArrayOfTPointF; AClosed: boolean; AWidth: single): ArrayOfTPointF; virtual;
     function GetStroker: TBGRAPenStroker;
     property Stroker: TBGRAPenStroker read GetStroker;
     procedure FillChange({%H-}ASender: TObject; var ADiff: TCustomVectorialFillDiff); virtual;
@@ -201,7 +203,8 @@ type
     procedure Render(ADest: TBGRABitmap; ARenderOffset: TPoint; AMatrix: TAffineMatrix; ADraft: boolean); virtual;
     function GetRenderBounds(ADestRect: TRect; AMatrix: TAffineMatrix; AOptions: TRenderBoundsOptions = []): TRectF; virtual; abstract;
     function SuggestGradientBox(AMatrix: TAffineMatrix): TAffineBox; virtual;
-    function PointInShape(APoint: TPointF): boolean; virtual; abstract;
+    function PointInShape(APoint: TPointF): boolean; overload; virtual; abstract;
+    function PointInShape(APoint: TPointF; ARadius: single): boolean; overload; virtual; abstract;
     procedure ConfigureCustomEditor(AEditor: TBGRAOriginalEditor); virtual; abstract;
     procedure ConfigureEditor(AEditor: TBGRAOriginalEditor); virtual;
     procedure LoadFromStorage(AStorage: TBGRACustomOriginalStorage); virtual;
@@ -224,6 +227,7 @@ type
     function Duplicate: TVectorShape;
     class function StorageClassName: RawByteString; virtual; abstract;
     function GetIsSlow(const {%H-}AMatrix: TAffineMatrix): boolean; virtual;
+    function GetGenericCost: integer; virtual;
     function GetUsedTextures: ArrayOfBGRABitmap; virtual;
     procedure Transform(const AMatrix: TAffineMatrix); virtual;
     class function Fields: TVectorShapeFields; virtual;
@@ -359,7 +363,8 @@ type
     procedure SelectShape(AIndex: integer); overload;
     procedure SelectShape(AShape: TVectorShape); overload;
     procedure DeselectShape;
-    procedure MouseClick(APoint: TPointF);
+    function GetShapesCost: integer;
+    procedure MouseClick(APoint: TPointF; ARadius: single);
     procedure Render(ADest: TBGRABitmap; ARenderOffset: TPoint; AMatrix: TAffineMatrix; ADraft: boolean); override;
     procedure ConfigureEditor(AEditor: TBGRAOriginalEditor); override;
     function CreateEditor: TBGRAOriginalEditor; override;
@@ -601,9 +606,9 @@ end;
 
 function TVectorShapeCommonFillDiff.IsIdentity: boolean;
 begin
-  result := FStartPenFill.Equals(FEndPenFill) and
-    FStartBackFill.Equals(FEndBackFill) and
-    FStartOutlineFill.Equals(FEndOutlineFill);
+  result := TVectorialFill.Equal(FStartPenFill, FEndPenFill) and
+    TVectorialFill.Equal(FStartBackFill, FEndBackFill) and
+    TVectorialFill.Equal(FStartOutlineFill, FEndOutlineFill);
 end;
 
 { TVectorOriginalShapeRangeDiff }
@@ -1204,6 +1209,28 @@ begin
   result := false;
 end;
 
+function TVectorShape.GetGenericCost: integer;
+begin
+  if vsfBackFill in Fields then
+  begin
+    case BackFill.FillType of
+    vftGradient: result := 25;
+    vftTexture: result := 10;
+    vftSolid: result := 4;
+    else {vftNone} result := 1;
+    end
+  end else
+  if vsfPenStyle in Fields then
+  begin
+    if PenStyleEqual(PenStyle, SolidPenStyle) or
+       PenStyleEqual(PenStyle, ClearPenStyle) then
+       result := 1
+    else
+      result := 2;
+  end else
+    result := 1;
+end;
+
 function TVectorShape.GetUsedTextures: ArrayOfBGRABitmap;
 var
   f: TVectorShapeFields;
@@ -1280,7 +1307,8 @@ begin
     result := nil;
     pointerData := AStorage.RawString[AName+'-ptr'];
     if length(pointerData)<>sizeof(result) then
-      raise exception.Create('Invalid stored pointer');
+      raise exception.Create('Invalid stored pointer (expected size '+
+        inttostr(sizeof(result))+' but encountered '+inttostr(length(pointerData))+')');
     move(pointerData[1],result,sizeof(result));
   end else
   if Assigned(Container) then
@@ -1632,6 +1660,16 @@ begin
     result := Stroker.ComputePolyline(APoints, PenWidth, PenColor);
 end;
 
+function TVectorShape.ComputeStrokeEnvelope(APoints: ArrayOfTPointF;
+  AClosed: boolean; AWidth: single): ArrayOfTPointF;
+var
+  opt: TBGRAPolyLineOptions;
+begin
+  opt := [];
+  if AClosed then include(opt, plCycle);
+  result := ComputeWidePolyPolylinePoints(APoints, AWidth, BGRABlack, pecRound, pjsMiter, SolidPenStyle, opt);
+end;
+
 function TVectorShape.GetStroker: TBGRAPenStroker;
 begin
   if FStroker = nil then
@@ -2477,6 +2515,7 @@ begin
   idx := FShapes.IndexOf(AShape);
   if idx = -1 then exit(false);
   DeleteShapeRange(idx, 1);
+  result := true;
 end;
 
 procedure TVectorOriginal.DeleteShape(AIndex: integer);
@@ -2575,7 +2614,16 @@ begin
   SelectShape(nil);
 end;
 
-procedure TVectorOriginal.MouseClick(APoint: TPointF);
+function TVectorOriginal.GetShapesCost: integer;
+var
+  i: Integer;
+begin
+  result := 0;
+  for i := 0 to ShapeCount-1 do
+    inc(result, Shape[i].GetGenericCost);
+end;
+
+procedure TVectorOriginal.MouseClick(APoint: TPointF; ARadius: single);
 var
   i: LongInt;
 begin
@@ -2585,6 +2633,12 @@ begin
       SelectShape(i);
       exit;
     end;
+  for i:= FShapes.Count-1 downto 0 do
+    if FShapes[i].PointInShape(APoint, ARadius) then
+    begin
+      SelectShape(i);
+      exit;
+    end;
   DeselectShape;
 end;
 

+ 37 - 9
lazpaintcontrols/lcvectorpolyshapes.pas

@@ -90,7 +90,7 @@ type
     procedure OnClickPoint({%H-}ASender: TObject; APointIndex: integer; {%H-}AShift: TShiftState); virtual;
     procedure DoClickPoint({%H-}APointIndex: integer; {%H-}AShift: TShiftState); virtual;
     function CanMovePoints: boolean; virtual;
-    procedure InsertPointAuto;
+    procedure InsertPointAuto(AShift: TShiftState);
     function ComputeStroke(APoints: ArrayOfTPointF; AClosed: boolean;
       AStrokeMatrix: TAffineMatrix): ArrayOfTPointF; override;
   public
@@ -130,7 +130,8 @@ type
     class function Fields: TVectorShapeFields; override;
     procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); override;
     function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix; AOptions: TRenderBoundsOptions = []): TRectF; override;
-    function PointInShape(APoint: TPointF): boolean; override;
+    function PointInShape(APoint: TPointF): boolean; overload; override;
+    function PointInShape(APoint: TPointF; ARadius: single): boolean; overload; override;
     function GetIsSlow(const {%H-}AMatrix: TAffineMatrix): boolean; override;
     class function StorageClassName: RawByteString; override;
   end;
@@ -637,7 +638,18 @@ end;
 procedure TCustomPolypointShape.DoClickPoint(APointIndex: integer;
   AShift: TShiftState);
 begin
-  //nothing
+  if (APointIndex = 0) and (UserMode = vsuCreate) and not Closed then
+  begin
+    if PointCount > 2 then
+    begin
+      RemovePoint(PointCount-1);
+      Closed := true;
+      UserMode := vsuEdit;
+    end else
+    begin
+      Remove;
+    end;
+  end;
 end;
 
 function TCustomPolypointShape.CanMovePoints: boolean;
@@ -645,11 +657,12 @@ begin
   result := true;
 end;
 
-procedure TCustomPolypointShape.InsertPointAuto;
+procedure TCustomPolypointShape.InsertPointAuto(AShift: TShiftState);
 var
   bestSegmentIndex, i: Integer;
-  bestSegmentDist, segmentLen, segmentPos: single;
-  u, n: TPointF;
+  bestSegmentDist,
+  segmentLen, segmentPos: single;
+  u, n, bestProjection: TPointF;
   segmentDist: single;
 begin
   if isEmptyPointF(FMousePos) then exit;
@@ -659,6 +672,7 @@ begin
 
   bestSegmentIndex := -1;
   bestSegmentDist := MaxSingle;
+  bestProjection := EmptyPointF;
   for i := 0 to PointCount-1 do
   if FAddingPoint and (i >= PointCount-2) then break else
   begin
@@ -677,13 +691,17 @@ begin
         begin
           bestSegmentDist := segmentDist;
           bestSegmentIndex := i;
+          bestProjection := Points[i]+segmentPos*u;
         end;
       end;
     end;
   end;
   if bestSegmentIndex <> -1 then
   begin
-    InsertPoint(bestSegmentIndex+1, FMousePos);
+    if ssShift in AShift then
+      InsertPoint(bestSegmentIndex+1, bestProjection)
+    else
+      InsertPoint(bestSegmentIndex+1, FMousePos);
     FHoverPoint:= bestSegmentIndex+1;
   end;
 end;
@@ -816,7 +834,7 @@ begin
       RemovePoint(PointCount-2);
     AHandled:= true;
   end else
-  if (Key = skInsert) then InsertPointAuto else
+  if (Key = skInsert) then InsertPointAuto(Shift) else
     inherited KeyDown(Shift, Key, AHandled);
 end;
 
@@ -1038,7 +1056,7 @@ function TPolylineShape.PointInShape(APoint: TPointF): boolean;
 var
   pts: ArrayOfTPointF;
 begin
-  if not BackVisible and not PenVisible then exit;
+  if not BackVisible and not PenVisible then exit(false);
   pts := GetCurve(AffineMatrixIdentity);
   if BackVisible and IsPointInPolygon(pts, APoint, true) then exit(true);
   if PenVisible then
@@ -1049,6 +1067,16 @@ begin
   result := false;
 end;
 
+function TPolylineShape.PointInShape(APoint: TPointF; ARadius: single): boolean;
+var
+  pts: ArrayOfTPointF;
+begin
+  if not BackVisible and not PenVisible then exit(false);
+  pts := GetCurve(AffineMatrixIdentity);
+  pts := ComputeStrokeEnvelope(pts, Closed, ARadius*2);
+  result := IsPointInPolygon(pts, APoint, true);
+end;
+
 function TPolylineShape.GetIsSlow(const AMatrix: TAffineMatrix): boolean;
 begin
   Result:= PointCount > 40;

+ 159 - 22
lazpaintcontrols/lcvectorrectshapes.pas

@@ -39,6 +39,7 @@ type
     FOriginBackup,FXUnitBackup,FYUnitBackup,
     FXAxisBackup,FYAxisBackup: TPointF;
     FXSizeBackup,FYSizeBackup: single;
+    FMatrixBackup: TAffineMatrix;
     FFixedRatio: single;
     procedure DoMoveXAxis(ANewCoord: TPointF; AShift: TShiftState; AFactor: single);
     procedure DoMoveYAxis(ANewCoord: TPointF; AShift: TShiftState; AFactor: single);
@@ -48,11 +49,20 @@ type
     procedure OnMoveYAxis({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnMoveXAxisNeg({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnMoveYAxisNeg({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveXAxisAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveYAxisAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveXAxisNegAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveYAxisNegAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnMoveXYCorner({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnMoveXNegYCorner({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnMoveXYNegCorner({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnMoveXNegYNegCorner({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveXYCornerAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveXNegYCornerAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveXYNegCornerAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+    procedure OnMoveXNegYNegCornerAlt({%H-}ASender: TObject; {%H-}APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
     procedure OnStartMove({%H-}ASender: TObject; {%H-}APointIndex: integer; {%H-}AShift: TShiftState);
+    procedure UpdateFillMatrixFromRect;
     function GetCornerPositition: single; virtual; abstract;
     function GetOrthoRect(AMatrix: TAffineMatrix; out ARect: TRectF): boolean;
     function AllowShearTransform: boolean; virtual;
@@ -93,7 +103,8 @@ type
     class function Fields: TVectorShapeFields; override;
     procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); override;
     function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix; AOptions: TRenderBoundsOptions = []): TRectF; override;
-    function PointInShape(APoint: TPointF): boolean; override;
+    function PointInShape(APoint: TPointF): boolean; overload; override;
+    function PointInShape(APoint: TPointF; ARadius: single): boolean; overload; override;
     function GetIsSlow(const AMatrix: TAffineMatrix): boolean; override;
     class function StorageClassName: RawByteString; override;
   end;
@@ -111,7 +122,8 @@ type
     function GetAlignBounds(const {%H-}ALayoutRect: TRect; const AMatrix: TAffineMatrix): TRectF; override;
     procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); override;
     function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix; AOptions: TRenderBoundsOptions = []): TRectF; override;
-    function PointInShape(APoint: TPointF): boolean; override;
+    function PointInShape(APoint: TPointF): boolean; overload; override;
+    function PointInShape(APoint: TPointF; ARadius: single): boolean; overload; override;
     function GetIsSlow(const AMatrix: TAffineMatrix): boolean; override;
     class function StorageClassName: RawByteString; override;
   end;
@@ -160,6 +172,7 @@ type
     procedure SetShapeAltitudePercent(AValue: single);
     procedure SetShapeKind(AValue: TPhongShapeKind);
     function BackVisible: boolean;
+    function GetEnvelope: ArrayOfTPointF;
   protected
     function AllowShearTransform: boolean; override;
   public
@@ -175,8 +188,10 @@ type
     procedure SaveToStorage(AStorage: TBGRACustomOriginalStorage); override;
     procedure Render(ADest: TBGRABitmap; AMatrix: TAffineMatrix; ADraft: boolean); override;
     function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix; AOptions: TRenderBoundsOptions = []): TRectF; override;
-    function PointInShape(APoint: TPointF): boolean; override;
+    function PointInShape(APoint: TPointF): boolean; overload; override;
+    function PointInShape(APoint: TPointF; ARadius: single): boolean; overload; override;
     function GetIsSlow(const AMatrix: TAffineMatrix): boolean; override;
+    function GetGenericCost: integer; override;
     procedure Transform(const AMatrix: TAffineMatrix); override;
     class function StorageClassName: RawByteString; override;
     property ShapeKind: TPhongShapeKind read FShapeKind write SetShapeKind;
@@ -484,6 +499,7 @@ begin
     end;
   end;
   EnsureRatio(-AFactor,0);
+  UpdateFillMatrixFromRect;
   EndUpdate;
 end;
 
@@ -522,6 +538,7 @@ begin
     end;
   end;
   EnsureRatio(0,-AFactor);
+  UpdateFillMatrixFromRect;
   EndUpdate;
 end;
 
@@ -581,6 +598,7 @@ begin
     end;
   end;
   EnsureRatio(-AFactorX,-AFactorY);
+  UpdateFillMatrixFromRect;
   EndUpdate;
 end;
 
@@ -614,6 +632,30 @@ begin
   DoMoveYAxis(ANewCoord, AShift, -1);
 end;
 
+procedure TCustomRectShape.OnMoveXAxisAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveXAxis(ANewCoord, AShift+[ssAlt], 1);
+end;
+
+procedure TCustomRectShape.OnMoveYAxisAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveYAxis(ANewCoord, AShift+[ssAlt], 1);
+end;
+
+procedure TCustomRectShape.OnMoveXAxisNegAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveXAxis(ANewCoord, AShift+[ssAlt], -1);
+end;
+
+procedure TCustomRectShape.OnMoveYAxisNegAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveYAxis(ANewCoord, AShift+[ssAlt], -1);
+end;
+
 procedure TCustomRectShape.OnMoveXYCorner(ASender: TObject; APrevCoord,
   ANewCoord: TPointF; AShift: TShiftState);
 begin
@@ -638,6 +680,30 @@ begin
   DoMoveXYCorner(ANewCoord, AShift, -1, -1);
 end;
 
+procedure TCustomRectShape.OnMoveXYCornerAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveXYCorner(ANewCoord, AShift+[ssAlt], 1, 1);
+end;
+
+procedure TCustomRectShape.OnMoveXNegYCornerAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveXYCorner(ANewCoord, AShift+[ssAlt], -1, 1);
+end;
+
+procedure TCustomRectShape.OnMoveXYNegCornerAlt(ASender: TObject; APrevCoord,
+  ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveXYCorner(ANewCoord, AShift+[ssAlt], 1, -1);
+end;
+
+procedure TCustomRectShape.OnMoveXNegYNegCornerAlt(ASender: TObject;
+  APrevCoord, ANewCoord: TPointF; AShift: TShiftState);
+begin
+  DoMoveXYCorner(ANewCoord, AShift+[ssAlt], -1, -1);
+end;
+
 procedure TCustomRectShape.OnStartMove(ASender: TObject; APointIndex: integer;
   AShift: TShiftState);
 begin
@@ -650,6 +716,23 @@ begin
   FYUnitBackup := FYAxis-FOrigin;
   FYSizeBackup := VectLen(FYUnitBackup);
   if FYSizeBackup <> 0 then FYUnitBackup := (1/FYSizeBackup)*FYUnitBackup;
+  FMatrixBackup := AffineMatrix(FXAxis-FOrigin, FYAxis-FOrigin, FOrigin);
+end;
+
+procedure TCustomRectShape.UpdateFillMatrixFromRect;
+var
+  newMatrix, matrixDiff: TAffineMatrix;
+begin
+  newMatrix := AffineMatrix(FXAxis-FOrigin, FYAxis-FOrigin, FOrigin);
+  if IsAffineMatrixInversible(newMatrix) and IsAffineMatrixInversible(FMatrixBackup) then
+  begin
+    if vsfBackFill in Fields then
+    begin
+      matrixDiff := newMatrix*AffineMatrixInverse(FMatrixBackup);
+      BackFill.Transform(matrixDiff);
+    end;
+    FMatrixBackup := newMatrix;
+  end;
 end;
 
 function TCustomRectShape.GetAffineBox(const AMatrix: TAffineMatrix; APixelCentered: boolean): TAffineBox;
@@ -759,7 +842,7 @@ procedure TCustomRectShape.ConfigureCustomEditor(AEditor: TBGRAOriginalEditor);
 var
   d: Single;
   u, v: TPointF;
-  idxOrig, idxX,idxY,idxXNeg,idxYNeg: Integer;
+  idx,idxOrig, idxX,idxY,idxXNeg,idxYNeg: Integer;
 begin
   u := FXAxis - FOrigin;
   v := FYAxis - FOrigin;
@@ -767,10 +850,14 @@ begin
   d := GetCornerPositition;
   if d <> 0 then
   begin
-    AEditor.AddPoint(FOrigin + (u+v)*d, @OnMoveXYCorner, false);
-    AEditor.AddPoint(FOrigin + (-u+v)*d, @OnMoveXNegYCorner, false);
-    AEditor.AddPoint(FOrigin + (u-v)*d, @OnMoveXYNegCorner, false);
-    AEditor.AddPoint(FOrigin + (-u-v)*d, @OnMoveXNegYNegCorner, false);
+    idx := AEditor.AddPoint(FOrigin + (u+v)*d, @OnMoveXYCorner, false);
+    AEditor.AddPointAlternateMove(idx, @OnMoveXYCornerAlt);
+    idx := AEditor.AddPoint(FOrigin + (-u+v)*d, @OnMoveXNegYCorner, false);
+    AEditor.AddPointAlternateMove(idx, @OnMoveXNegYCornerAlt);
+    idx := AEditor.AddPoint(FOrigin + (u-v)*d, @OnMoveXYNegCorner, false);
+    AEditor.AddPointAlternateMove(idx, @OnMoveXYNegCornerAlt);
+    idx := AEditor.AddPoint(FOrigin + (-u-v)*d, @OnMoveXNegYNegCorner, false);
+    AEditor.AddPointAlternateMove(idx, @OnMoveXNegYNegCornerAlt);
   end;
   if ShowArrows then
   begin
@@ -785,6 +872,10 @@ begin
     idxXNeg := AEditor.AddPoint(FOrigin - u, @OnMoveXAxisNeg);
     idxYNeg := AEditor.AddPoint(FOrigin - v, @OnMoveYAxisNeg);
   end;
+  AEditor.AddPointAlternateMove(idxX, @OnMoveXAxisAlt);
+  AEditor.AddPointAlternateMove(idxY, @OnMoveYAxisAlt);
+  AEditor.AddPointAlternateMove(idxXNeg, @OnMoveXAxisNegAlt);
+  AEditor.AddPointAlternateMove(idxYNeg, @OnMoveYAxisNegAlt);
   idxOrig := AEditor.AddPoint(FOrigin, @OnMoveOrigin, true);
   if ShowArrows then
   begin
@@ -1004,6 +1095,20 @@ begin
     result := false;
 end;
 
+function TRectShape.PointInShape(APoint: TPointF; ARadius: single): boolean;
+var
+  pts: ArrayOfTPointF;
+  box: TAffineBox;
+begin
+  if PenVisible or BackVisible then
+  begin
+    box := GetAffineBox(AffineMatrixIdentity, true);
+    pts := ComputeStrokeEnvelope(box.AsPolygon, true, ARadius*2);
+    result:= IsPointInPolygon(pts, APoint, true);
+  end
+  else result := false;
+end;
+
 class function TRectShape.StorageClassName: RawByteString;
 begin
   result := 'rect';
@@ -1236,6 +1341,19 @@ begin
     result := false;
 end;
 
+function TEllipseShape.PointInShape(APoint: TPointF; ARadius: single): boolean;
+var
+  pts: ArrayOfTPointF;
+begin
+  if PenVisible or BackVisible then
+  begin
+    pts := ComputeEllipse(FOrigin, FXAxis, FYAxis);
+    pts := ComputeStrokeEnvelope(pts, true, ARadius*2);
+    result:= IsPointInPolygon(pts, APoint, true);
+  end else
+    result := false;
+end;
+
 function TEllipseShape.GetIsSlow(const AMatrix: TAffineMatrix): boolean;
 var
   ab: TAffineBox;
@@ -1310,6 +1428,21 @@ begin
   result := not BackFill.IsFullyTransparent;
 end;
 
+function TPhongShape.GetEnvelope: ArrayOfTPointF;
+var
+  box: TAffineBox;
+begin
+  case ShapeKind of
+    pskHalfSphere, pskConeTop: result := ComputeEllipse(FOrigin, FXAxis, FYAxis);
+    pskConeSide: result := PointsF([FOrigin - (FYAxis-FOrigin), FYAxis + (FXAxis-FOrigin), FYAxis - (FXAxis-FOrigin)]);
+  else
+    begin
+      box := GetAffineBox(AffineMatrixIdentity, true);
+      result := box.AsPolygon;
+    end;
+  end;
+end;
+
 function TPhongShape.AllowShearTransform: boolean;
 begin
   Result:= false;
@@ -1604,24 +1737,23 @@ end;
 
 function TPhongShape.PointInShape(APoint: TPointF): boolean;
 var
-  box: TAffineBox;
   pts: ArrayOfTPointF;
 begin
   if not BackVisible then exit(false);
-  if ShapeKind in [pskHalfSphere, pskConeTop] then
-  begin
-    pts := ComputeEllipse(FOrigin, FXAxis, FYAxis);
-    result := IsPointInPolygon(pts, APoint, true);
-  end else
-  if ShapeKind = pskConeSide then
-  begin
-    pts:= PointsF([FOrigin - (FYAxis-FOrigin), FYAxis + (FXAxis-FOrigin), FYAxis - (FXAxis-FOrigin)]);
-    result := IsPointInPolygon(pts, APoint, true);
-  end else
+  pts := GetEnvelope;
+  result := IsPointInPolygon(pts, APoint, true);
+end;
+
+function TPhongShape.PointInShape(APoint: TPointF; ARadius: single): boolean;
+var
+  pts: ArrayOfTPointF;
+begin
+  if BackVisible then
   begin
-    box := GetAffineBox(AffineMatrixIdentity, true);
-    result:= box.Contains(APoint);
-  end;
+    pts := ComputeStrokeEnvelope(GetEnvelope, true, ARadius*2);
+    result:= IsPointInPolygon(pts, APoint, true);
+  end
+    else result := false;
 end;
 
 function TPhongShape.GetIsSlow(const AMatrix: TAffineMatrix): boolean;
@@ -1633,6 +1765,11 @@ begin
   result := ab.Surface > 320*240;
 end;
 
+function TPhongShape.GetGenericCost: integer;
+begin
+  Result:= 10;
+end;
+
 procedure TPhongShape.Transform(const AMatrix: TAffineMatrix);
 begin
   BeginUpdate(TPhongShapeDiff);

+ 13 - 1
lazpaintcontrols/lcvectortextshapes.pas

@@ -151,8 +151,10 @@ type
     procedure ConfigureCustomEditor(AEditor: TBGRAOriginalEditor); override;
     procedure Render(ADest: TBGRABitmap; ARenderOffset: TPoint; AMatrix: TAffineMatrix; ADraft: boolean); override;
     function GetRenderBounds({%H-}ADestRect: TRect; AMatrix: TAffineMatrix; AOptions: TRenderBoundsOptions = []): TRectF; override;
-    function PointInShape(APoint: TPointF): boolean; override;
+    function PointInShape(APoint: TPointF): boolean; overload; override;
+    function PointInShape(APoint: TPointF; ARadius: single): boolean; overload; override;
     function GetIsSlow(const {%H-}AMatrix: TAffineMatrix): boolean; override;
+    function GetGenericCost: integer; override;
     procedure MouseMove({%H-}Shift: TShiftState; {%H-}X, {%H-}Y: single; var {%H-}ACursor: TOriginalEditorCursor; var {%H-}AHandled: boolean); override;
     procedure MouseDown({%H-}RightButton: boolean; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: single; var {%H-}ACursor: TOriginalEditorCursor; var {%H-}AHandled: boolean); override;
     procedure MouseUp({%H-}RightButton: boolean; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: single; var {%H-}ACursor: TOriginalEditorCursor; var {%H-}AHandled: boolean); override;
@@ -1467,11 +1469,21 @@ begin
   result := GetAffineBox(AffineMatrixIdentity,true).Contains(APoint);
 end;
 
+function TTextShape.PointInShape(APoint: TPointF; ARadius: single): boolean;
+begin
+  result := false;
+end;
+
 function TTextShape.GetIsSlow(const AMatrix: TAffineMatrix): boolean;
 begin
   Result:= true;
 end;
 
+function TTextShape.GetGenericCost: integer;
+begin
+  Result:= 10;
+end;
+
 procedure TTextShape.MouseMove(Shift: TShiftState; X, Y: single;
   var ACursor: TOriginalEditorCursor; var AHandled: boolean);
 begin

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini