Home  |  Linux  | Mysql  | PHP  | XML
From:David Soria Parra Date:Mon Aug 25 14:34:07 2008
Subject:cvs: pecl /ktaglib ktaglib_id3v2_attachedpictureframe.cpp
dsp		Mon Aug 25 20:34:07 2008 UTC

  Modified files:              
    /pecl/ktaglib	ktaglib_id3v2_attachedpictureframe.cpp 
  Log:
  Add a setPicture method to the AttachedPictureFrame class
  
  We add a setPicture frame that allows to set the image of an
  attached picture frame, which then can be easily added to a
  newly created tag using the addFrame() method.
  
  
http://cvs.php.net/viewvc.cgi/pecl/ktaglib/ktaglib_id3v2_attachedpictureframe.cpp?r1=1.3&r2=1.4&diff_format=u
Index: pecl/ktaglib/ktaglib_id3v2_attachedpictureframe.cpp
diff -u pecl/ktaglib/ktaglib_id3v2_attachedpictureframe.cpp:1.3 pecl/ktaglib/ktaglib_id3v2_attachedpictureframe.cpp:1.4
--- pecl/ktaglib/ktaglib_id3v2_attachedpictureframe.cpp:1.3	Mon Aug 25 20:33:17 2008
+++ pecl/ktaglib/ktaglib_id3v2_attachedpictureframe.cpp	Mon Aug 25 20:34:07 2008
@@ -40,6 +40,29 @@
   ZEND_ARG_INFO(0, filename)
 ZEND_END_ARG_INFO()
 
+static int
+attachedpicture_set_picture(TagLib::ID3v2::AttachedPictureFrame * frame, char * filename TSRMLS_DC)
+{
+	int len;
+	long maxlen = PHP_STREAM_COPY_ALL;
+	char *contents;
+	php_stream_context *context = NULL;
+	php_stream * stream;
+
+	stream = php_stream_open_wrapper(filename, "rb", ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL);
+
+	if (!stream) {
+		return -1;
+	}
+
+	if ((len = php_stream_copy_to_mem(stream, &contents, maxlen, 0)) > 0) {
+		frame->setPicture(TagLib::ByteVector(contents));
+		return 0;
+	}
+
+	return -1;
+}
+
 PHP_METHOD(KTaglib_ID3v2_AttachedPictureFrame, __construct)
 {
 	char * filename;
@@ -59,6 +82,23 @@
 	}
 }
 
+PHP_METHOD(KTaglib_ID3v2_AttachedPictureFrame, setPicture)
+{
+	char * filename;
+	int filename_len;
+	ze_ktaglib_object *intern = NULL;
+
+	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) {
+		return;
+	}
+
+	intern = (ze_ktaglib_object*) zend_object_store_get_object(getThis() TSRMLS_CC);
+
+	if (filename) {
+		attachedpicture_set_picture((TagLib::ID3v2::AttachedPictureFrame *)intern->frame, filename TSRMLS_CC);
+	}
+}
+
 PHP_METHOD(KTaglib_ID3v2_AttachedPictureFrame, getDescription)
 {
 	ze_ktaglib_object *intern = NULL;
@@ -106,6 +146,7 @@
 
 static zend_function_entry KTaglib_ID3v2_AttachedPictureFrame_methods[] = {
 	PHP_ME(KTaglib_ID3v2_AttachedPictureFrame, __construct, NULL, ZEND_ACC_PUBLIC)
+	PHP_ME(KTaglib_ID3v2_AttachedPictureFrame, setPicture, NULL, ZEND_ACC_PUBLIC)
 	PHP_ME(KTaglib_ID3v2_AttachedPictureFrame, getMimeType, NULL, ZEND_ACC_PUBLIC)
 	PHP_ME(KTaglib_ID3v2_AttachedPictureFrame, getDescription, NULL, ZEND_ACC_PUBLIC)
 	PHP_ME(KTaglib_ID3v2_AttachedPictureFrame, savePicture, KTaglib_ID3v2_AttachedPictureFrame_savePicture_args, ZEND_ACC_PUBLIC)


Navigate in group php.pecl.cvs at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by PHP Developer
Powered By PHP Consultants