Code Viewer

./Classes/__overlaytext.js File Size: 8.14 KB

  1. /*
  2. * -----
  3. * Screenshot Sender - __overlay.js
  4. * -----
  5. * Overlay Text functions for Screenshot Sender
  6. * -----
  7. */
  8.  
  9. var OverlayText = function (DC, bSaveImage, ImageWidth, ImageHeight) {
  10.         this.DC = DC;
  11.         this.ImageWidth = ImageWidth;
  12.         this.ImageHeight = ImageHeight;
  13.         this.oOverlay = {};
  14.         oOverlay = this.EnumOverlayText(bSaveImage);
  15.         for (objOverlay in oOverlay) {
  16.                 this.DrawText(objOverlay);
  17.         }
  18. }
  19.  
  20. OverlayText.prototype = {
  21.         "EnumOverlayText" : function (nActionType) {
  22.                 nActionType = (nActionType?2:1);
  23.                 var objSubkeys = {};
  24.                 Registry_EnumSubkeys(HKCU, RegistryInit() +'\\Overlay\\', objSubkeys);
  25.                 for (var objSubkey in objSubkeys) {
  26.                         var cCondition = Registry_GetKeyValue(HKCU, RegistryInit() +'\\Overlay\\'+objSubkey, 'cCondition');
  27.                         var bEnabled = Registry_GetKeyValue(HKCU, RegistryInit() +'\\Overlay\\'+objSubkey, 'bEnabled');
  28.                        
  29.                         if (bEnabled === 0 ||
  30.                                 (nActionType === 2 /* SEND */ && cCondition === 2 /* SAVE */) ||
  31.                                 (nActionType === 2 /* SAVE */ && cCondition === 1 /* SEND */))
  32.  
  33.                                 delete objSubkeys[objSubkey];
  34.                 }
  35.                 return objSubkeys;
  36.         },
  37.        
  38.         "GetOverlaySettings" : function (o) {
  39.                 var objSubkeys = {};
  40.                 Registry_EnumKeys(HKCU, RegistryInit() +'\\Overlay\\'+o+'\\', objSubkeys);
  41.                 return objSubkeys;
  42.         },
  43.        
  44.         "DrawText" : function (o) {
  45.                 var oOverlayText = this.GetOverlaySettings(o);
  46.                
  47.                 var logY = Interop.Call('gdi32', 'GetDeviceCaps', this.DC, 90 /* LOGPIXELSY */);
  48.                 var lSize = - (oOverlayText['lHeight'] * logY / 72);
  49.                 var hfOld = Interop.Allocate(4);
  50.                         hfOld.WriteDWORD(0, Interop.Call('gdi32', 'SelectObject', this.DC, this.OverlayCreateFont(oOverlayText['sFaceName'], lSize, oOverlayText['lWeight'], oOverlayText['lItalic'], oOverlayText['lUnderline'], oOverlayText['lStrikeOut']) ) );
  51.                 var RECT = Interop.Allocate(16);
  52.                
  53.                 if (oOverlayText['cTransparentBack'] === 1 ) {
  54.                         Interop.Call('gdi32', 'SetBkMode', this.DC, 1 /* TRANSPARENT */);
  55.                 } else {
  56.                         Interop.Call('gdi32', 'SetBkMode', this.DC, 0 /* OPAQUE */);
  57.                         Interop.Call('gdi32', 'SetBkColor', this.DC, oOverlayText['lBackColorRef']);
  58.                 }
  59.                
  60.                 oOverlayText['tOverlay'] = SessionImages.FilenameQuickTexts(oOverlayText['tOverlay'], true);
  61.                 Interop.Call('gdi32', 'SetTextColor', this.DC, oOverlayText['lColorRef']);
  62.                 Interop.Call('user32', 'DrawTextW', this.DC, oOverlayText['tOverlay'],
  63.                         oOverlayText['tOverlay'].length, RECT, 0x400 /* DT_CALCRECT */);
  64.                        
  65.                 Interop.Call('gdi32', 'SelectObject', this.DC, hfOld);
  66.                 this.OverlayPosition(oOverlayText['cPosition'], RECT);
  67.                
  68.                 Interop.Call('user32', 'DrawTextW', this.DC, oOverlayText['tOverlay'], oOverlayText['tOverlay'].length,
  69.                         RECT, 0x20 /*DT_SINGLELINE */ | 0x0 /* DT_LEFT */ | 0x100 /* DT_NOCLIP */ | (_lang.IsRtl ? 0x20000 /* DT_RTLREADING */ : 0) );
  70.                
  71.         },
  72.        
  73.         "OverlayPosition" : function (iOverlayPosition, RECT) {  
  74. /**
  75. typedef struct _RECT {
  76.   LONG left;
  77.   LONG top;
  78.   LONG right;
  79.   LONG bottom;
  80. } RECT;
  81. */
  82.                 switch (iOverlayPosition) {
  83.                         case 0: // top left
  84.                                 RECT.WriteDWORD(0, 1);
  85.                                 RECT.WriteDWORD(4, 0);
  86.                                 break;
  87.                         case 1: // top right
  88.                                 RECT.WriteDWORD(0, this.ImageWidth-RECT.ReadDWORD(8) );
  89.                                 RECT.WriteDWORD(4, 0);
  90.                                 break;
  91.                         case 2: // bottom left
  92.                                 RECT.WriteDWORD(0, 1);
  93.                                 RECT.WriteDWORD(4, this.ImageHeight-RECT.ReadDWORD(12) );
  94.                                 break;
  95.                         case 3: // bottom right
  96.                                 RECT.WriteDWORD(0, this.ImageWidth-RECT.ReadDWORD(8) );
  97.                                 RECT.WriteDWORD(4, this.ImageHeight-RECT.ReadDWORD(12) );
  98.                                 break;
  99.                         case 4: // center
  100.                                 RECT.WriteDWORD(0, (this.ImageWidth/2) - (RECT.ReadDWORD(8) /2) );
  101.                                 RECT.WriteDWORD(4, (this.ImageHeight/2) - (RECT.ReadDWORD(12) /2) );
  102.                                 break;
  103.                 }
  104.         },
  105.        
  106.         "OverlayCreateFont" : function (sFont, pHeight, bBold, bItalic, bUnderline, bStrikeout) {
  107.                 var LF = Interop.Allocate(28 + sFont.length*2+2);
  108.                 LF.WriteDWORD(0, pHeight);
  109.                 LF.WriteDWORD(16, bBold === 400 ? 400 : 700);
  110.                 LF.SetAt(20, bItalic);
  111.                 LF.SetAt(21, bUnderline);
  112.                 LF.SetAt(22, bStrikeout);
  113.                 LF.SetAt(26, 4 /* ANTIALIASED_QUALITY */);
  114.                 LF.WriteString(28, sFont);
  115.                 return Interop.Call('gdi32', 'CreateFontIndirectW', LF);
  116.         }
  117. }

Version

  • 5.0.0070_20100325_publicbeta1

Developers

Project Details

  • Folders8
  • Files122
  • Total Lines11,867
  • Repository Version70

User Count

  • 162