From 65e002b63efdb00571d0ba4ec1a73b14e1d7d3a0 Mon Sep 17 00:00:00 2001 From: Alexey Kulakov Date: Wed, 4 Jul 2012 20:10:29 +0000 Subject: Pascal headers moved to include\delphi directory (with small updates) removed deprecated m_mwclc.h file and link on it in AutoShutdown plugin git-svn-id: http://svn.miranda-ng.org/main/trunk@763 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Pascal_Headers/m_avatars.inc | 406 ----------------------------------- 1 file changed, 406 deletions(-) delete mode 100644 plugins/Pascal_Headers/m_avatars.inc (limited to 'plugins/Pascal_Headers/m_avatars.inc') diff --git a/plugins/Pascal_Headers/m_avatars.inc b/plugins/Pascal_Headers/m_avatars.inc deleted file mode 100644 index ae445ac175..0000000000 --- a/plugins/Pascal_Headers/m_avatars.inc +++ /dev/null @@ -1,406 +0,0 @@ -{ - Miranda IM: the free IM client for Microsoft Windows - - Copyright 2000-2004 Miranda ICQ/IM project, - all portions of this codebase are copyrighted to the people - listed in contributors.txt. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - Avatar service - - - load and maintain a cache of contact avatars. - - draw avatars to a given target device context - - maintain per protocol fallback images - - The avatar service builds on top of Mirandas core bitmap loading service (MS_UTILS_LOADBITMAP). - However, if imgdecoder.dll is installed in mirandas main or Plugins directory, it can be used - to support PNG images. The avatar service loads 32bit PNG images and peforms alpha channel - premultiplication so that these images can be rendered by using the Win32 AlphaBlend() API. - - The cache grows on demand only, that is, no avatars are PREloaded. An avatar is only loaded - if a plugin requests this by using the MS_AV_GETAVATAR service. Since avatars may update - asynchronously, the avatar iamge may not be ready when a plugin calls the service. In that - case, an event (ME_AV_AVATARCHANGED) is fired when a contacts avatar changes. This event - is also fired, when a contact avatar changes automatically. - - The service takes care about protocol capabilites (does not actively fetch avatars for - protocols which do not report avatar capabilities via PF4_AVATARS or for protocols which - have been disabled in the option dialog). It also does not actively fetch avatars for - protocols which are in invisible status mode (may cause privacy issues and some protocols - like MSN don't allow any outbound client communication when in invisible status mode) - unless AF_FETCHALWAYS is set. - - - TODO - - maintain recent avatars (store the last hashes to avoid re-fetching) - - cache expiration, based on least recently used algorithm. - - (c) 2005 by Nightwish, silvercircle@gmail.com -} - -{$IFNDEF M_AVATARS} -{$DEFINE M_AVATARS} - -const - AVS_BITMAP_VALID = 1; - AVS_BITMAP_EXPIRED = 2; // the bitmap has been expired from the cache. (unused, currently) - AVS_HIDEONCLIST = 4; - AVS_PREMULTIPLIED = 8; // set in the dwFlags member of the struct avatarCacheEntry - // for 32 bit transparent images when loaded with - // imgdecoder. These images can be rendered transparently - // using the AlphaBlend() API with AC_SRC_ALPHA - AVS_PROTOPIC = 16; // picture is a protocol picture - AVS_CUSTOMTRANSPBKG = 32; // Bitmap was changed to set the background color transparent - AVS_HASTRANSPARENCY = 64; // Bitmap has at least one pixel transparent - AVS_OWNAVATAR = 128; // is own avatar entry - AVS_NOTREADY = 4096; - -type - PavatarCacheEntryW = ^TavatarCacheEntryW; - TavatarCacheEntryW = record - cbSize : DWORD; // set to sizeof(struct) - hContact : THANDLE; // contacts handle, 0, if it is a protocol avatar - hbmPic : HBITMAP; // bitmap handle of the picture itself - dwFlags : DWORD; // see above for flag values - bmHeight : long; // bitmap dimensions - bmWidth : long; - t_lastAccess: DWORD; // last access time (currently unused, but plugins should still - // use it whenever they access the avatar. may be - // used in the future to implement cache expiration - lpDIBSection: pointer; - szFilename : array[0..MAX_PATH-1] of WideChar; // filename of the avatar (absolute path) - end; - - PavatarCacheEntry = ^TavatarCacheEntry; - TavatarCacheEntry = record - cbSize : DWORD; // set to sizeof(struct) - hContact : THANDLE; // contacts handle, 0, if it is a protocol avatar - hbmPic : HBITMAP; // bitmap handle of the picture itself - dwFlags : DWORD; // see above for flag values - bmHeight : long; // bitmap dimensions - bmWidth : long; - t_lastAccess: DWORD; // last access time (currently unused, but plugins should still - // use it whenever they access the avatar. may be - // used in the future to implement cache expiration - lpDIBSection: pointer; - szFilename : array[0..MAX_PATH-1] of AnsiChar; // filename of the avatar (absolute path) - end; - - PCacheNode = ^TCacheNode; - TCacheNode = record - pNextNode:pCacheNode; - ace :TavatarCacheEntry; -// cs :RTL_CRITICAL_SECTION; - loaded :bool; - mustLoad :int; - dwFlags :DWORD; - pa_format:int; - end; - -const - AVDRQ_FALLBACKPROTO = $0001; // use the protocol picture as fallback (currently not used) - AVDRQ_FAILIFNOTCACHED = $0002; // don't create a cache entry if it doesn't already - // exist. (currently not working) - AVDRQ_ROUNDEDCORNER = $0004; // draw with rounded corners - AVDRQ_DRAWBORDER = $0008; // draw a border around the picture - AVDRQ_PROTOPICT = $0010; // draw a protocol picture (if available). - AVDRQ_HIDEBORDERONTRANSPARENCY = $0020; // hide border if bitmap has transparency - AVDRQ_OWNPIC = $0040; // draw own avatar (szProto is valid, use "" for global avatar) - AVDRQ_RESPECTHIDDEN = $0080; // don't draw images marked as hidden - AVDRQ_DONTRESIZEIFSMALLER = $0100; // don't resize images that are smaller then the draw area - AVDRQ_FORCEFASTALPHA = $0200; // force rendering with simple AlphaBlend (will use FI_Resample otherwise) - AVDRQ_FORCEALPHA = $0400; // force with simple AlphaBlend (may use StretchBlt otherwise) - AVDRQ_AERO = $0800; // draw on aero surface - -// request to draw a contacts picture. See MS_AV_DRAWAVATAR service description - -type - PavatarDrawRequest = ^TavatarDrawRequest; - TavatarDrawRequest = record - cbSize : DWORD; // set this to sizeof(AVATARDRAWREQUEST) - mandatory, - // service will return failure code if cbSize is wrong - hContact : THANDLE; // the contact for which the avatar should be drawn. - // set it to 0 to draw a protocol picture - hTargetDC : HDC; // target device context - rcDraw : TRECT; // target rectangle. The avatar will be centered - // within the rectangle and scaled to fit. - dwFlags : DWORD; // flags (see above for valid bitflags) - dwReserved: DWORD; // for future use - dwInternal: DWORD; // don't use it - clrBorder : TCOLORREF; // color for the border (used with AVDRQ_DRAWBORDER) - radius : byte; // radius (used with AVDRQ_ROUNDEDCORNER) - alpha : byte; // alpha value for semi-transparent avatars (valid - // values form 1 to 255, if it is set to 0 the - // avatar won't be transparent. - szProto : PAnsiChar; // only used when AVDRQ_PROTOPICT is set - end; - -const -// INITIAL_AVATARCACHESIZE = 300; -// CACHE_GROWSTEP = 50; - CACHE_BLOCKSIZE = 20; -const - AVS_MODULE :PAnsiChar = 'AVS_Settings'; // db settings module path - PPICT_MODULE:PAnsiChar = 'AVS_ProtoPics'; // protocol pictures are saved here - - { - obtain the bitmap handle of the avatar for the given contact - wParam = hContact - lParam = 0; - returns: pointer to a struct avatarCacheEntry *, NULL on failure - if it returns a failure, the avatar may be ready later and the caller may - receive a notification via ME_AV_AVATARCHANGED - DONT modify the contents of the returned data structure - } - MS_AV_GETAVATARBITMAP:PAnsiChar = 'SV_Avatars/GetAvatar'; - - { - obtain a avatar cache entry for one of my own avatars - wParam = 0 - lParam = szProto (protocol for which we need to obtain the own avatar information) - Use "" to global - returns: pointer to a struct avatarCacheEntry *, NULL on failure - DONT modify the contents of the returned data structure - } - MS_AV_GETMYAVATAR:PAnsiChar = 'SV_Avatars/GetMyAvatar'; - - { - protect the current contact picture from being overwritten by automatic - avatar updates. Actually, it only backups the contact picture filename - and will used the backuped version until the contact picture gets unlocked - again. So this service does not disable avatar updates, but it "fakes" - a locked contact picture to the users of the GetAvatar service. - - wParam = hContact - lParam = 1 -> lock the avatar, lParam = 0 -> unlock - } - MS_AV_PROTECTAVATAR:PAnsiChar = 'SV_Avatars/ProtectAvatar'; - - { - set (and optionally protect) a local contact picture for the given hContact - - wParam = hContact - lParam = either a full picture filename or NIL. If lParam = NIL, the service - will open a file selection dialog. - } - MS_AV_SETAVATAR:PAnsiChar = 'SV_Avatars/SetAvatar'; - - { - set a local picture for the given protocol - - wParam = (AnsiChar *) protocol name or NULL for all protocols - lParam = either a full picture filename or NULL. If lParam == NULL, the service - will open a file selection dialog. - } - MS_AV_SETMYAVATAR:PAnsiChar = 'SV_Avatars/SetMyAvatar'; - - { - see if is possible to set the avatar for the expecified protocol - - wParam = (AnsiChar *) protocol name - lParam = 0 - return = 1 if can set, 0 if can't - } - MS_AV_CANSETMYAVATAR:PAnsiChar = 'SV_Avatars/CanSetMyAvatar'; - { - Call avatar option dialog for contact - wParam = hContact - } - MS_AV_CONTACTOPTIONS:PAnsiChar = 'SV_Avatars/ContactOptions'; - - { - draw an avatar picture - - wParam = 0 (not used) - lParam = pointer to AVATARDRAWREQUEST - draw a contact picture to a destination device context. see description of - the AVATARDRAWREQUEST structure for more information on how to use this - service. - return value: 0 -> failure, avatar probably not available, or not ready. The - drawing service DOES schedule an avatar update so your plugin will be notified - by the ME_AV_AVATARCHANGED event when the requested avatar is ready for use. - 1 -> success. avatar was found and drawing should be ok. - -1 -> global avatar is incosistent - } - MS_AV_DRAWAVATAR:PAnsiChar = 'SV_Avatars/Draw'; -// MS_AV_BLENDDRAWAVATAR = 'SV_Avatars/BlendDraw'; - - { - fired when the contacts avatar changes - wParam = hContact - lParam = struct avatarCacheEntry *cacheEntry - the event CAN pass a NULL pointer in lParam which means that the avatar has - changed, but is no longer valid (happens, when a contact removes his avatar, - for example). - DONT DESTROY the bitmap handle passed in the struct avatarCacheEntry * - - It is also possible that this event passes 0 as wParam (hContact), in which case, - a protocol picture (pseudo - avatar) has been changed. - } - ME_AV_AVATARCHANGED:PAnsiChar = 'SV_Avatars/AvatarChanged'; - -type - TContactAvatarChangedNotificationW = record - cbSize :int; // sizeof() - hContact:THANDLE; // this might have to be set by the caller too - format :int; // PA_FORMAT_* - filename:array [0..MAX_PATH-1] of WideChar; // full path to filename which contains the avatar - hash :array [0..127] of WideChar; // avatar hash (always an empty string by now) - end; - - TContactAvatarChangedNotification = record - cbSize :int; // sizeof() - hContact:THANDLE; // this might have to be set by the caller too - format :int; // PA_FORMAT_* - filename:array [0..MAX_PATH-1] of AnsiChar; // full path to filename which contains the avatar - hash :array [0..127] of AnsiChar; // avatar hash (always an empty string by now) - end; - -const - { - fired when the contacts avatar is changed by the contact - wParam = hContact - lParam = struct CONTACTAVATARCHANGENOTIFICATION *cacn - the event CAN pass a NULL pointer in lParam which means that the contact deleted its avatar - } - ME_AV_CONTACTAVATARCHANGED:PAnsiChar = 'SV_Avatars/ContactAvatarChanged'; - - { - fired when one of our own avatars was changed - wParam = szProto (protocol for which a new avatar was set) - lParam = AVATARCACHEENTRY *ace (new cache entry, - NULL if the new avatar is not valid) - } - ME_AV_MYAVATARCHANGED:PAnsiChar = 'SV_Avatars/MyAvatarChanged'; - - { - Service to be called by protocols to report an avatar has changed. Some avatar changes - can be detected automatically, but some not (by now only Skype ones) - wParam = (AnsiChar *)szProto (protocol for which a new avatar was set) - lParam = 0 - } - MS_AV_REPORTMYAVATARCHANGED:PAnsiChar = 'SV_Avatars/ReportMyAvatarChanged'; - -// Bitmap services ////////////////////////////////////////////////////////////////////// - - { - Load an image - wParam = NULL - lParam = filename - } - MS_AV_LOADBITMAP32:PAnsiChar = 'SV_Avatars/LoadBitmap32'; - - { - Save an HBITMAP to an image - wParam = HBITMAP - lParam = full path of filename - } - MS_AV_SAVEBITMAP :PAnsiChar = 'SV_Avatars/SaveBitmap'; - MS_AV_SAVEBITMAPW:PAnsiChar = 'SV_Avatars/SaveBitmapW'; - - { - Returns != 0 if can save that type of image, = 0 if cant - wParam = 0 - lParam = PA_FORMAT_* // image format - } - MS_AV_CANSAVEBITMAP:PAnsiChar = 'SV_Avatars/CanSaveBitmap'; - - { - Returns a copy of the bitmap with the size especified or the original bitmap - if nothing has to be changed - wParam = ResizeBitmap * - lParam = NULL - } - MS_AV_RESIZEBITMAP:PAnsiChar = 'SV_Avatars/ResizeBitmap'; - -{ - * flags for internal use ONLY -} - - MC_ISMASTERCONTACT = 1; - MC_ISSUBCONTACT = 2; - AVH_MUSTNOTIFY = 4; // node->dwFlags (loader thread must notify avatar - // history about change/delete event) - AVS_DELETENODEFOREVER = 8; - -// Protocol services ////////////////////////////////////////////////////////////////////// - -{ - wParam=0 - lParam=(const AnsiChar *)Avatar file name or NULL to remove the avatar - return=0 for sucess -} - PS_SETMYAVATAR = '/SetMyAvatar'; - PS_SETMYAVATARW = '/SetMyAvatarW'; - -{ - wParam=Buffer to file name - lParam=(int)Buffer size - return=0 for sucess -} - PS_GETMYAVATAR = '/GetMyAvatar'; - PS_GETMYAVATARW = '/GetMyAvatarW'; - - PIP_NONE = 0; - PIP_SQUARE = 1; - -// Avatar image max size -// lParam = (POINT*) maxSize (use -1 for no max) -// return 0 for success - AF_MAXSIZE = 1; - -// Avatar image proportion -// lParam = 0 -// return or of PIP_* - AF_PROPORTION = 2; - -// Avatar format -// lParam = PA_FORMAT_* -// return = 1 (supported) or 0 (not supported) - AF_FORMATSUPPORTED = 3; - -// Avatars are enabled for protocol? -// lParam = 0 -// return = 1 (avatars ready) or 0 (disabled) - AF_ENABLED = 4; - -// This protocol don't need delays for fetching contact avatars -// lParam = 0 -// return = 1 (don't need) or 0 (need) - AF_DONTNEEDDELAYS = 5; - -// Avatar file max size -// return size in bytes (0 for no limit) - AF_MAXFILESIZE = 6; - -// The amount of time avs should wait after a download avatar failed for a contact -// lParam = 0 -// return = the time, in ms - AF_DELAYAFTERFAIL = 7; - -// Fetching avatars is always possible and allowed -// lParam = 0 -// return = 1 (always) or 0 (depending on our or contacts status mode) - AF_FETCHALWAYS = 8; - -{ - Query avatar caps for a protocol - wParam = One of AF_* - lParam = See descr of each AF_* - return = See descr of each AF_*. Return 0 by default -} - PS_GETAVATARCAPS = '/GetAvatarCaps'; - -{$ENDIF} -- cgit v1.2.3