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

📄 faceregistry.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	 * 删除一个自定义表情
	 * 
	 * @param md5
	 */
	public void removeFace(String md5) {
		if(faces == null)
			return;
		
		Face f = md52face.remove(md5);
		if(f == null)
			return;
		
		md52id.remove(md5);
		id2md5.remove(f.getId());
		
		FaceGroup g = face2group.remove(f);
		if(g == null)
			return;
		
		g.getFace().remove(f);		
	    dirty = true;
	}
	
	/**
	 * 设置组名称
	 * 
	 * @param group
	 * @param name
	 */
	public void setGroupName(int group, String name) {
	    FaceGroup g = getFaceGroup(group);
	    if(g == null)
	        return;
	    
	    g.setName(name);
	    dirty = true;
	}
	
	/**
	 * 移动一个表情到另外一个组
	 * 
	 * @param face
	 * 		表情文件元素对象
	 * @param destGroup
	 * 		目的组索引
	 */
	@SuppressWarnings("unchecked")
	public void moveFace(Face face, int destGroup) {
	    FaceGroup dest = getFaceGroup(destGroup);
	    if(dest == null)
	        return;	    
	    FaceGroup src = face2group.get(face);
	    
	    boolean success = false;
	    if(dest.getId() == FaceConstant.CUSTOM_HEAD_GROUP_ID) {
	    	success = saveCustomHead(face);
	    } else {
	    	success = FileTool.copyFile(getFacePath(face), getFacePath(face, dest)) &&
		    	FileTool.copyFile(getSmallFacePath(face), getSmallFacePath(face, dest));	    	
	    }
	    
	    if(success) {
	    	FileTool.deleteFile(getFacePath(face));
	    	FileTool.deleteFile(getSmallFacePath(face));
	    	src.getFace().remove(face);
	    	dest.getFace().add(face);
	    	face2group.put(face, dest);
	    }
	    dirty = true;
	}
	
	/**
	 * 保存文件为自定义头像
	 * 
     * @return
     * 		true表示保存成功
	 */
	private boolean saveCustomHead(Face face) {
		try {
			ImageLoader loader = new ImageLoader();
			loader.load(getFacePath(face));
			ImageData data = loader.data[0].scaledTo(40, 40);
			
			// save 40x40 bmp
			ImageLoader saveLoader = new ImageLoader();
			saveLoader.data = new ImageData[] { data };
			saveLoader.save(LumaQQ.CUSTOM_FACE_DIR + FaceConstant.CUSTOM_HEAD_GROUP_ID + '/' + face.getMd5() + ".bmp", SWT.IMAGE_BMP);
			
			// save 20x20 bmp
			data = loader.data[0].scaledTo(20, 20);
			saveLoader = new ImageLoader();
			saveLoader.data = new ImageData[] { data };
			saveLoader.save(LumaQQ.CUSTOM_FACE_DIR + FaceConstant.CUSTOM_HEAD_GROUP_ID + '/' + face.getMd5() + "fixed.bmp", SWT.IMAGE_BMP);
			
			return true;
		} catch(SWTException e) {
			return false;
		}
	}
	
	/**
	 * 得到表情路径
	 * 
	 * @param face
	 * @param g
	 * @return
	 */
	private String getFacePath(Face face, FaceGroup g) {
		return LumaQQ.CUSTOM_FACE_DIR + g.getId() + '/' + face.getFilename();
	}
	
	/**
	 * 得到表情路径
	 * 
	 * @param face
	 * @return
	 */
	public String getFacePath(Face face) {
		FaceGroup g = face2group.get(face);
		if(g == null)
			return null;
		
		return LumaQQ.CUSTOM_FACE_DIR + g.getId() + '/' + face.getFilename();
	}
	
	/**
	 * 得到表情路径
	 * 
	 * @param id
	 * @return
	 */
	public String getFacePath(int id) {
		return getFacePath(getMd5ById(id));
	}
	
	/**
	 * 得到表情路径
	 * 
	 * @param md5
	 * @return
	 */
	public String getFacePath(String md5) {
		Face f = md52face.get(md5);
		if(f == null)
			return null;
		return getFacePath(f);
	}
	
	/**
	 * 得到缩略图表情路径
	 * 
	 * @param face
	 * @param g
	 * @return
	 */
	private String getSmallFacePath(Face face, FaceGroup g) {
		return LumaQQ.CUSTOM_FACE_DIR + g.getId() + '/' + face.getMd5() + "fixed.bmp";
	}
	
	/**
	 * 得到缩略图表情路径
	 * 
	 * @param face
	 * @return
	 */
	public String getSmallFacePath(Face face) {
		FaceGroup g = face2group.get(face);
		if(g == null)
			return null;
		
		return LumaQQ.CUSTOM_FACE_DIR + g.getId() + '/' + face.getMd5() + "fixed.bmp";
	}
	
	/**
	 * 得到缩略图表情路径
	 * 
	 * @param md5
	 * @return
	 */
	public String getSmallFacePath(String md5) {
		Face f = md52face.get(md5);
		if(f == null)
			return null;
		return getSmallFacePath(f);
	}
    
    /**
     * 得到接收到的表情文件路径
     * 
     * @param filename
     * @return
     */
    public String getReceivedFacePath(String filename) {
        if(filename == null)
            return null;
        return LumaQQ.CUSTOM_FACE_DIR + FaceConstant.RECEIVED_GROUP_ID + '/' + filename;
    }
    
    /**
     * 返回接收到的表情缩略图路径
     * 
     * @param md5
     * @return
     */
    public String getReceivedFaceThumbPath(String md5) {
    	if(md5 == null)
    		return null;
    	return LumaQQ.CUSTOM_FACE_DIR + FaceConstant.RECEIVED_GROUP_ID + '/' + md5 + "fixed.bmp";
    }
    
    /**
     * 得到接收到的表情文件路径
     * 
     * @param face
     * @return
     */
    public String getReceivedFacePath(Face face) {
        return LumaQQ.CUSTOM_FACE_DIR + FaceConstant.RECEIVED_GROUP_ID + '/' + face.getFilename();
    }
    
    /**
     * 得到接收到的表情文件路径
     * 
     * @param id
     * @return
     */
    public String getReceivedFacePath(int id) {
    	Face f = md52face.get(id2md5.get(id));
    	if(f == null)
    		return null;
    	return getReceivedFacePath(f);
    }
    
    /**
     * 得到自定义头像路径
     * 
     * @param id
     * @return
     */
    public String getCustomHeadPath(int id) {
    	Face f = md52face.get(id2md5.get(id));
    	if(f == null)
    		return null;
    	return LumaQQ.CUSTOM_FACE_DIR + FaceConstant.CUSTOM_HEAD_GROUP_ID + '/' + f.getFilename();
    }
    
    /**
     * 得到小自定义头像路径
     * 
     * @param id
     * @return
     */
    public String getSmallCustomHeadPath(int id) {
    	Face f = md52face.get(id2md5.get(id));
    	if(f == null)
    		return null;
    	return LumaQQ.CUSTOM_FACE_DIR + FaceConstant.CUSTOM_HEAD_GROUP_ID + '/' + f.getMd5() + "fixed.bmp";
    }
    
	/**
	 * 得到一个组
	 * 
	 * @param name
	 * 		组名
	 * @return
	 * 		如果没有这个组,返回null
	 */
	public FaceGroup getFaceGroup(String name) {
		return name2group.get(name);
	}
	
	/**
	 * @param name
	 * 		组名
	 * @return
	 * 		true表示这个组已经存在
	 */
	public boolean hasGroup(String name) {
		return getFaceGroup(name) != null;
	}
	
	/**
	 * 通过序号得到表情组
	 * 
	 * @param index
	 * @return
	 */
	public FaceGroup getFaceGroup(int index) {
	    if(faces == null)
	        return null;	    
	    List list = faces.getGroup();
	    if(index < 0 || index >= list.size())
	        return null;
	    return (FaceGroup)faces.getGroup().get(index);
	}
	
	/**
	 * 通过序号得到表情
	 * 
	 * @param group
	 * 		组序号
	 * @param index
	 * 		表情序号
	 * @return
	 * 		Face元素对象
	 */
	public Face getFace(int group, int index) {
	    FaceGroup g = getFaceGroup(group);
	    if(g == null)
	        return null;
	    List list = g.getFace();
	    if(index < 0 || index >= list.size())
	        return null;
	    return (Face)g.getFace().get(index);
	}
	
	/**
	 * 得到图片id
	 * 
	 * @param md5
	 * @return
	 */
	public int getFaceId(String md5) {
	    Integer id = md52id.get(md5);
	    if(id == null)
	    	return 0;
	    else
	    	return id;
	}
	
	/**
	 * 根据表情id得到Face对象
	 * 
	 * @param id
	 * 		id
	 * @return
	 * 		Face
	 */
	public Face getFace(int id) {
	    String md5 = id2md5.get(id);
	    return md52face.get(md5);
	}
	
	/**
	 * 检查是否存在这个face
	 * 
	 * @param md5
	 * 		图片的md5值
	 * @return
	 * 		true表示这个图片已经存在
	 */
	public boolean hasFace(String md5) {
	    return md52face.containsKey(md5);
	}
	
	/**
	 * 保存设置
	 */
	public void save() {
		if(dirty) {
			File file = new File(fileName);
			FaceUtil.save(file, faces);			
		}
	}
	
	/**
	 * 得到表情文件的长度
	 * 
	 * @param md5
	 * 		表情文件的md5
	 * @return
	 * 		长度
	 */
	public int getFaceLength(String md5) {
	    String path = getFacePath(md5);
	    File file = new File(path);
	    if(file.exists())
	        return (int)file.length();
	    else
	        return 0;
	}

	/**
	 * @param string
	 */
	public void setFileName(String string) {
		this.fileName = string;
	}

	public String getMd5ById(int code) {
		return id2md5.get(code);
	}

	public boolean isDirty() {
		return dirty;
	}
}

⌨️ 快捷键说明

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