summaryrefslogtreecommitdiff
blob: bc5f738d7f632e9085daa1bdc4a1b0996053adb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
diff -Nru a/include/TextReader.h b/include/TextReader.h
--- a/include/TextReader.h	2018-09-22 21:47:46.000000000 +0200
+++ b/include/TextReader.h	2018-09-23 16:17:21.212888285 +0200
@@ -91,7 +91,7 @@
 		string text_color;
 		string background_color;
 		std::shared_ptr<Magick::Image> image;
-		list<Magick::Drawable> lines;
+		vector<Magick::Drawable> lines;
 		bool is_open;
 		GravityType gravity;
 
diff -Nru a/src/Frame.cpp b/src/Frame.cpp
--- a/src/Frame.cpp	2018-09-22 21:47:46.000000000 +0200
+++ b/src/Frame.cpp	2018-09-23 16:21:44.921563711 +0200
@@ -29,6 +29,9 @@
 
 using namespace std;
 using namespace openshot;
+#ifdef USE_IMAGEMAGICK
+using namespace Magick;
+#endif
 
 // Constructor - blank frame (300x200 blank image, 48kHz audio silence)
 Frame::Frame() : number(1), pixel_ratio(1,1), channels(2), width(1), height(1), color("#000000"),
@@ -904,7 +907,7 @@
 	// Give image a transparent background color
 	magick_image->backgroundColor(Magick::Color("none"));
 	magick_image->virtualPixelMethod(Magick::TransparentVirtualPixelMethod);
-	magick_image->matte(true);
+	magick_image->alpha(true);
 
 	return magick_image;
 }
@@ -926,13 +929,14 @@
     // Iterate through the pixel packets, and load our own buffer
 	// Each color needs to be scaled to 8 bit (using the ImageMagick built-in ScaleQuantumToChar function)
 	int numcopied = 0;
-    Magick::PixelPacket *pixels = new_image->getPixels(0,0, new_image->columns(), new_image->rows());
+    const Quantum *pixels = new_image->getConstPixels(0,0, new_image->columns(), new_image->rows());
     for (int n = 0, i = 0; n < new_image->columns() * new_image->rows(); n += 1, i += 4) {
-    	buffer[i+0] = MagickCore::ScaleQuantumToChar((Magick::Quantum) pixels[n].red);
-    	buffer[i+1] = MagickCore::ScaleQuantumToChar((Magick::Quantum) pixels[n].green);
-    	buffer[i+2] = MagickCore::ScaleQuantumToChar((Magick::Quantum) pixels[n].blue);
-    	buffer[i+3] = 255 - MagickCore::ScaleQuantumToChar((Magick::Quantum) pixels[n].opacity);
+    	buffer[i+0] = MagickCore::ScaleQuantumToChar(MagickCore::GetPixelRed(new_image->image(), pixels));
+    	buffer[i+1] = MagickCore::ScaleQuantumToChar(MagickCore::GetPixelGreen(new_image->image(), pixels));
+    	buffer[i+2] = MagickCore::ScaleQuantumToChar(MagickCore::GetPixelBlue(new_image->image(), pixels));
+    	buffer[i+3] = MagickCore::ScaleQuantumToChar(MagickCore::GetPixelAlpha(new_image->image(), pixels));
     	numcopied+=4;
+    	pixels += MagickCore::GetPixelChannels(new_image->image());
     }
 
     // Create QImage of frame data
diff -Nru a/src/ImageReader.cpp b/src/ImageReader.cpp
--- a/src/ImageReader.cpp	2018-09-22 21:47:46.000000000 +0200
+++ b/src/ImageReader.cpp	2018-09-23 16:22:32.330865516 +0200
@@ -59,7 +59,7 @@
 
 			// Give image a transparent background color
 			image->backgroundColor(Magick::Color("none"));
-			image->matte(true);
+			image->alpha(true);
 		}
 		catch (Magick::Exception e) {
 			// raise exception
diff -Nru a/src/ImageWriter.cpp b/src/ImageWriter.cpp
--- a/src/ImageWriter.cpp	2018-09-22 21:47:46.000000000 +0200
+++ b/src/ImageWriter.cpp	2018-09-23 16:22:58.380031419 +0200
@@ -97,7 +97,7 @@
 	std::shared_ptr<Magick::Image> frame_image = frame->GetMagickImage();
 	frame_image->magick( info.vcodec );
 	frame_image->backgroundColor(Magick::Color("none"));
-	frame_image->matte(true);
+	frame_image->alpha(true);
 	frame_image->quality(image_quality);
 	frame_image->animationDelay(info.video_timebase.ToFloat() * 100);
 	frame_image->animationIterations(number_of_loops);