⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tkimgutil.c

📁 linux系统下的音频通信
💻 C
字号:
/*  * tkImgUtil.c -- * *	This file contains image related utility functions. * * Copyright (c) 1995 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * SCCS: @(#) tkImgUtil.c 1.3 96/02/15 18:53:12 */#include "tkInt.h"#include "tkPort.h"#include "xbytes.h"/* *---------------------------------------------------------------------- * * TkAlignImageData -- * *	This function takes an image and copies the data into an *	aligned buffer, performing any necessary bit swapping. * * Results: *	Returns a newly allocated buffer that should be freed by the *	caller. * * Side effects: *	None. * *---------------------------------------------------------------------- */char *TkAlignImageData(image, alignment, bitOrder)    XImage *image;		/* Image to be aligned. */    int alignment;		/* Number of bytes to which the data should				 * be aligned (e.g. 2 or 4) */    int bitOrder;		/* Desired bit order: LSBFirst or MSBFirst. */{    long dataWidth;    char *data, *srcPtr, *destPtr;    int i, j;    if (image->bits_per_pixel != 1) {	panic("TkAlignImageData: Can't handle image depths greater than 1.");    }    /*     * Compute line width for output data buffer.     */    dataWidth = image->bytes_per_line;    if (dataWidth % alignment) {	dataWidth += (alignment - (dataWidth % alignment));    }    data = ckalloc(dataWidth * image->height);    destPtr = data;    for (i = 0; i < image->height; i++) {	srcPtr = &image->data[i * image->bytes_per_line];	for (j = 0; j < dataWidth; j++) {	    if (j >= image->bytes_per_line) {		*destPtr = 0;	    } else if (image->bitmap_bit_order != bitOrder) {		*destPtr = xBitReverseTable[(unsigned char)(*(srcPtr++))];	    } else {		*destPtr = *(srcPtr++);	    }	    destPtr++;	}    }    return data;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -