mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-30 23:47:27 +03:00 
			
		
		
		
	Use member names to initialize PyTypeObject
This commit is contained in:
		
							parent
							
								
									6c3f0b5ad2
								
							
						
					
					
						commit
						80e9963dcd
					
				|  | @ -37,34 +37,40 @@ char * | ||||||
| _pil_jxl_get_mode(const JxlBasicInfo *bi) { | _pil_jxl_get_mode(const JxlBasicInfo *bi) { | ||||||
|     // 16-bit single channel images are supported
 |     // 16-bit single channel images are supported
 | ||||||
|     if (bi->bits_per_sample == 16 && bi->num_color_channels == 1 && |     if (bi->bits_per_sample == 16 && bi->num_color_channels == 1 && | ||||||
|         bi->alpha_bits == 0 && !bi->alpha_premultiplied) |         bi->alpha_bits == 0 && !bi->alpha_premultiplied) { | ||||||
|         return "I;16"; |         return "I;16"; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     // PIL doesn't support high bit depth images
 |     // PIL doesn't support high bit depth images
 | ||||||
|     // it will throw an exception but that's for your own good
 |     // it will throw an exception but that's for your own good
 | ||||||
|     // you wouldn't want to see distorted image
 |     // you wouldn't want to see distorted image
 | ||||||
|     if (bi->bits_per_sample != 8) |     if (bi->bits_per_sample != 8) { | ||||||
|         return "uns"; |         return "uns"; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     // image has transparency
 |     // image has transparency
 | ||||||
|     if (bi->alpha_bits > 0) { |     if (bi->alpha_bits > 0) { | ||||||
|         if (bi->num_color_channels == 3) { |         if (bi->num_color_channels == 3) { | ||||||
|             if (bi->alpha_premultiplied) |             if (bi->alpha_premultiplied) { | ||||||
|                 return "RGBa"; |                 return "RGBa"; | ||||||
|  |             } | ||||||
|             return "RGBA"; |             return "RGBA"; | ||||||
|         } |         } | ||||||
|         if (bi->num_color_channels == 1) { |         if (bi->num_color_channels == 1) { | ||||||
|             if (bi->alpha_premultiplied) |             if (bi->alpha_premultiplied) { | ||||||
|                 return "La"; |                 return "La"; | ||||||
|  |             } | ||||||
|             return "LA"; |             return "LA"; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // image has no transparency
 |     // image has no transparency
 | ||||||
|     if (bi->num_color_channels == 3) |     if (bi->num_color_channels == 3) { | ||||||
|         return "RGB"; |         return "RGB"; | ||||||
|     if (bi->num_color_channels == 1) |     } | ||||||
|  |     if (bi->num_color_channels == 1) { | ||||||
|         return "L"; |         return "L"; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     // could not recognize mode
 |     // could not recognize mode
 | ||||||
|     return NULL; |     return NULL; | ||||||
|  | @ -168,7 +174,6 @@ _jxl_decoder_count_frames(PyObject *self) { | ||||||
| 
 | 
 | ||||||
|     // count all JXL_DEC_NEED_IMAGE_OUT_BUFFER events
 |     // count all JXL_DEC_NEED_IMAGE_OUT_BUFFER events
 | ||||||
|     while (decp->status != JXL_DEC_SUCCESS) { |     while (decp->status != JXL_DEC_SUCCESS) { | ||||||
|         // printf("fetch_frame_count status: %u\n", decp->status);
 |  | ||||||
|         decp->status = JxlDecoderProcessInput(decp->decoder); |         decp->status = JxlDecoderProcessInput(decp->decoder); | ||||||
| 
 | 
 | ||||||
|         if (decp->status == JXL_DEC_NEED_IMAGE_OUT_BUFFER) { |         if (decp->status == JXL_DEC_NEED_IMAGE_OUT_BUFFER) { | ||||||
|  | @ -226,8 +231,6 @@ _jxl_decoder_new(PyObject *self, PyObject *args) { | ||||||
|     memcpy(decp->jxl_data, _tmp_jxl_data, _tmp_jxl_data_len); |     memcpy(decp->jxl_data, _tmp_jxl_data, _tmp_jxl_data_len); | ||||||
|     decp->jxl_data_len = _tmp_jxl_data_len; |     decp->jxl_data_len = _tmp_jxl_data_len; | ||||||
| 
 | 
 | ||||||
|     // printf("%zu\n", decp->jxl_data_len);
 |  | ||||||
| 
 |  | ||||||
|     size_t suggested_num_threads = JxlThreadParallelRunnerDefaultNumWorkerThreads(); |     size_t suggested_num_threads = JxlThreadParallelRunnerDefaultNumWorkerThreads(); | ||||||
|     decp->runner = JxlThreadParallelRunnerCreate(NULL, suggested_num_threads); |     decp->runner = JxlThreadParallelRunnerCreate(NULL, suggested_num_threads); | ||||||
|     decp->decoder = JxlDecoderCreate(NULL); |     decp->decoder = JxlDecoderCreate(NULL); | ||||||
|  | @ -254,7 +257,6 @@ _jxl_decoder_new(PyObject *self, PyObject *args) { | ||||||
|     // decode everything up to the first frame
 |     // decode everything up to the first frame
 | ||||||
|     do { |     do { | ||||||
|         decp->status = JxlDecoderProcessInput(decp->decoder); |         decp->status = JxlDecoderProcessInput(decp->decoder); | ||||||
|         // printf("Status: %d\n", decp->status);
 |  | ||||||
| 
 | 
 | ||||||
| decoder_loop_skip_process: | decoder_loop_skip_process: | ||||||
| 
 | 
 | ||||||
|  | @ -312,9 +314,6 @@ decoder_loop_skip_process: | ||||||
|             decp->status = JxlDecoderGetBoxType(decp->decoder, btype, JXL_TRUE); |             decp->status = JxlDecoderGetBoxType(decp->decoder, btype, JXL_TRUE); | ||||||
|             _PIL_JXL_CHECK("JxlDecoderGetBoxType"); |             _PIL_JXL_CHECK("JxlDecoderGetBoxType"); | ||||||
| 
 | 
 | ||||||
|             // printf("found box type: %c%c%c%c\n", btype[0], btype[1], btype[2],
 |  | ||||||
|             // btype[3]);
 |  | ||||||
| 
 |  | ||||||
|             bool is_box_exif, is_box_xmp; |             bool is_box_exif, is_box_xmp; | ||||||
|             is_box_exif = !memcmp(btype, "Exif", 4); |             is_box_exif = !memcmp(btype, "Exif", 4); | ||||||
|             is_box_xmp = !memcmp(btype, "xml ", 4); |             is_box_xmp = !memcmp(btype, "xml ", 4); | ||||||
|  | @ -326,7 +325,6 @@ decoder_loop_skip_process: | ||||||
|             size_t cur_compr_box_size; |             size_t cur_compr_box_size; | ||||||
|             decp->status = JxlDecoderGetBoxSizeRaw(decp->decoder, &cur_compr_box_size); |             decp->status = JxlDecoderGetBoxSizeRaw(decp->decoder, &cur_compr_box_size); | ||||||
|             _PIL_JXL_CHECK("JxlDecoderGetBoxSizeRaw"); |             _PIL_JXL_CHECK("JxlDecoderGetBoxSizeRaw"); | ||||||
|             // printf("Exif/xmp box size: %zu\n", cur_compr_box_size);
 |  | ||||||
| 
 | 
 | ||||||
|             uint8_t *final_jxl_buf = NULL; |             uint8_t *final_jxl_buf = NULL; | ||||||
|             Py_ssize_t final_jxl_buf_len = 0; |             Py_ssize_t final_jxl_buf_len = 0; | ||||||
|  | @ -350,8 +348,6 @@ decoder_loop_skip_process: | ||||||
|                 decp->status = JxlDecoderProcessInput(decp->decoder); |                 decp->status = JxlDecoderProcessInput(decp->decoder); | ||||||
| 
 | 
 | ||||||
|                 size_t remaining = JxlDecoderReleaseBoxBuffer(decp->decoder); |                 size_t remaining = JxlDecoderReleaseBoxBuffer(decp->decoder); | ||||||
|                 // printf("boxes status: %d, remaining: %zu\n", decp->status,
 |  | ||||||
|                 // remaining);
 |  | ||||||
|                 final_jxl_buf_len += (cur_compr_box_size - remaining); |                 final_jxl_buf_len += (cur_compr_box_size - remaining); | ||||||
|             } while (decp->status == JXL_DEC_BOX_NEED_MORE_OUTPUT); |             } while (decp->status == JXL_DEC_BOX_NEED_MORE_OUTPUT); | ||||||
| 
 | 
 | ||||||
|  | @ -385,7 +381,6 @@ decoder_loop_skip_process: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return (PyObject *)decp; |     return (PyObject *)decp; | ||||||
|     // Py_RETURN_NONE;
 |  | ||||||
| 
 | 
 | ||||||
|     // on success we should never reach here
 |     // on success we should never reach here
 | ||||||
| 
 | 
 | ||||||
|  | @ -525,8 +520,9 @@ PyObject * | ||||||
| _jxl_decoder_get_icc(PyObject *self) { | _jxl_decoder_get_icc(PyObject *self) { | ||||||
|     PILJpegXlDecoderObject *decp = (PILJpegXlDecoderObject *)self; |     PILJpegXlDecoderObject *decp = (PILJpegXlDecoderObject *)self; | ||||||
| 
 | 
 | ||||||
|     if (!decp->jxl_icc) |     if (!decp->jxl_icc) { | ||||||
|         Py_RETURN_NONE; |         Py_RETURN_NONE; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     return PyBytes_FromStringAndSize((const char *)decp->jxl_icc, decp->jxl_icc_len); |     return PyBytes_FromStringAndSize((const char *)decp->jxl_icc, decp->jxl_icc_len); | ||||||
| } | } | ||||||
|  | @ -535,8 +531,9 @@ PyObject * | ||||||
| _jxl_decoder_get_exif(PyObject *self) { | _jxl_decoder_get_exif(PyObject *self) { | ||||||
|     PILJpegXlDecoderObject *decp = (PILJpegXlDecoderObject *)self; |     PILJpegXlDecoderObject *decp = (PILJpegXlDecoderObject *)self; | ||||||
| 
 | 
 | ||||||
|     if (!decp->jxl_exif) |     if (!decp->jxl_exif) { | ||||||
|         Py_RETURN_NONE; |         Py_RETURN_NONE; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     return PyBytes_FromStringAndSize((const char *)decp->jxl_exif, decp->jxl_exif_len); |     return PyBytes_FromStringAndSize((const char *)decp->jxl_exif, decp->jxl_exif_len); | ||||||
| } | } | ||||||
|  | @ -545,8 +542,9 @@ PyObject * | ||||||
| _jxl_decoder_get_xmp(PyObject *self) { | _jxl_decoder_get_xmp(PyObject *self) { | ||||||
|     PILJpegXlDecoderObject *decp = (PILJpegXlDecoderObject *)self; |     PILJpegXlDecoderObject *decp = (PILJpegXlDecoderObject *)self; | ||||||
| 
 | 
 | ||||||
|     if (!decp->jxl_xmp) |     if (!decp->jxl_xmp) { | ||||||
|         Py_RETURN_NONE; |         Py_RETURN_NONE; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     return PyBytes_FromStringAndSize((const char *)decp->jxl_xmp, decp->jxl_xmp_len); |     return PyBytes_FromStringAndSize((const char *)decp->jxl_xmp, decp->jxl_xmp_len); | ||||||
| } | } | ||||||
|  | @ -564,36 +562,10 @@ static struct PyMethodDef _jpegxl_decoder_methods[] = { | ||||||
| 
 | 
 | ||||||
| // PILJpegXlDecoder type definition
 | // PILJpegXlDecoder type definition
 | ||||||
| static PyTypeObject PILJpegXlDecoder_Type = { | static PyTypeObject PILJpegXlDecoder_Type = { | ||||||
|     PyVarObject_HEAD_INIT(NULL, 0) "PILJpegXlDecoder", /*tp_name */ |     PyVarObject_HEAD_INIT(NULL, 0).tp_name = "PILJpegXlDecoder", | ||||||
|     sizeof(PILJpegXlDecoderObject),                    /*tp_basicsize */ |     .tp_basicsize = sizeof(PILJpegXlDecoderObject), | ||||||
|     0,                                                 /*tp_itemsize */ |     .tp_dealloc = (destructor)_jxl_decoder_dealloc, | ||||||
|     /* methods */ |     .tp_methods = _jpegxl_decoder_methods, | ||||||
|     (destructor)_jxl_decoder_dealloc, /*tp_dealloc*/ |  | ||||||
|     0,                                /*tp_vectorcall_offset*/ |  | ||||||
|     0,                                /*tp_getattr*/ |  | ||||||
|     0,                                /*tp_setattr*/ |  | ||||||
|     0,                                /*tp_as_async*/ |  | ||||||
|     0,                                /*tp_repr*/ |  | ||||||
|     0,                                /*tp_as_number*/ |  | ||||||
|     0,                                /*tp_as_sequence*/ |  | ||||||
|     0,                                /*tp_as_mapping*/ |  | ||||||
|     0,                                /*tp_hash*/ |  | ||||||
|     0,                                /*tp_call*/ |  | ||||||
|     0,                                /*tp_str*/ |  | ||||||
|     0,                                /*tp_getattro*/ |  | ||||||
|     0,                                /*tp_setattro*/ |  | ||||||
|     0,                                /*tp_as_buffer*/ |  | ||||||
|     Py_TPFLAGS_DEFAULT,               /*tp_flags*/ |  | ||||||
|     0,                                /*tp_doc*/ |  | ||||||
|     0,                                /*tp_traverse*/ |  | ||||||
|     0,                                /*tp_clear*/ |  | ||||||
|     0,                                /*tp_richcompare*/ |  | ||||||
|     0,                                /*tp_weaklistoffset*/ |  | ||||||
|     0,                                /*tp_iter*/ |  | ||||||
|     0,                                /*tp_iternext*/ |  | ||||||
|     _jpegxl_decoder_methods,          /*tp_methods*/ |  | ||||||
|     0,                                /*tp_members*/ |  | ||||||
|     0,                                /*tp_getset*/ |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Return libjxl decoder version available as integer:
 | // Return libjxl decoder version available as integer:
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user